HTTPQL ve StreamQL
Ogma; HTTP geçmişini, WebSocket trafiğini, Otomasyon sonuçlarını ve ilgili görünümleri filtrelemek için Caido uyumlu sorgu dilinin bir alt kümesini kullanır.
Sözdizimi
Sorgular AND ve OR ile birleştirilen koşullardan oluşur.
text
req.host:example.com AND resp.code:200Parantezler ifadeleri gruplar:
text
(req.path.cont:"/api/" OR req.path.cont:"/graphql") AND resp.code.gte:400Yorumlar desteklenir:
text
// API errors
req.path.cont:"/api/" AND resp.code.gte:500text
/* focus on login */
req.path.cont:"login"İşleçler
| İşleç | Anlamı |
|---|---|
: | Alan türüne göre eşitlik veya varsayılan eşleşme |
.eq: | Eşittir |
.ne: | Eşit değildir |
.cont: | Büyük/küçük harfe duyarsız olarak içerir |
.ncont: | Büyük/küçük harfe duyarsız olarak içermez |
.cs.cont: | Büyük/küçük harfe duyarlı olarak içerir |
.cs.ncont: | Büyük/küçük harfe duyarlı olarak içermez |
.like: | SQL benzeri desen eşleşmesi |
.nlike: | Olumsuz SQL benzeri desen eşleşmesi |
.regex: | Düzenli ifade eşleşmesi |
.nregex: | Olumsuz düzenli ifade eşleşmesi |
.lt: | Küçüktür |
.lte: | Küçük veya eşittir |
.gt: | Büyüktür |
.gte: | Büyük veya eşittir |
.exists | Başlık vardır; req.header["Name"].value.exists veya yanıt karşılığını kullanın |
HTTP örnekleri
API trafiğini bulun:
text
req.path.cont:"/api/"Sunucu hatalarını bulun:
text
resp.code.gte:500Büyük yanıtları bulun:
text
resp.len.gt:100000JSON yanıtlarını bulun:
text
resp.header["content-type"].value.cont:"application/json"Çerezli istekleri bulun:
text
req.header["cookie"].value.existsTrafik durdurma veya Eşleştir ve değiştir tarafından değiştirilmiş trafiği bulun:
text
req.modified.eq:trueOlası yönetici yollarını bulun:
text
req.path.cont:"/admin" OR req.path.cont:"/manage"Yeniden gönderim veya Otomasyon trafiğini bulun:
text
source:replay OR source:automateAkış örnekleri
StreamQL aynı sorgu tarzını WebSocket ve akış görünümlerine uygular.
Belirteç alanı içeren WebSocket mesajlarını bulun:
text
ws.raw.cont:"token"Sunucudan istemciye mesajları bulun:
text
ws.direction.eq:"To Client"JSON benzeri mesajları bulun:
text
ws.raw.cont:"{" AND ws.raw.cont:"}"Pratik kaydedilmiş filtreler
| Ad | Sorgu |
|---|---|
| API hataları | req.path.cont:"/api/" AND resp.code.gte:400 |
| Kimlik doğrulama uç noktaları | req.path.cont:"login" OR req.path.cont:"oauth" OR req.path.cont:"session" |
| JSON trafiği | resp.header["content-type"].value.cont:"json" |
| İlginç yöntemler | req.method:POST OR req.method:PUT OR req.method:PATCH OR req.method:DELETE |
| Olası gizli bilgiler | resp.body.cont:"api_key" OR resp.body.cont:"secret" OR resp.body.cont:"token" |
Sınırlar
Filtre davranışını öngörülebilir tutmak için Ogma sorgu karmaşıklığını sınırlar:
- En fazla iç içe ifade derinliği: 16.
- En fazla koşul sayısı: 64.
Sorgu çok karmaşık hâle gelirse kaydedilmiş filtrelere bölün veya daha geniş araştırma için Arama bölümünü kullanın.