İçeriğe geç

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:200

Parantezler ifadeleri gruplar:

text
(req.path.cont:"/api/" OR req.path.cont:"/graphql") AND resp.code.gte:400

Yorumlar desteklenir:

text
// API errors
req.path.cont:"/api/" AND resp.code.gte:500
text
/* 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
.existsBaş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:500

Büyük yanıtları bulun:

text
resp.len.gt:100000

JSON yanıtlarını bulun:

text
resp.header["content-type"].value.cont:"application/json"

Çerezli istekleri bulun:

text
req.header["cookie"].value.exists

Trafik durdurma veya Eşleştir ve değiştir tarafından değiştirilmiş trafiği bulun:

text
req.modified.eq:true

Olası 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:automate

Akış ö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 ​

AdSorgu
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ğiresp.header["content-type"].value.cont:"json"
İlginç yöntemlerreq.method:POST OR req.method:PUT OR req.method:PATCH OR req.method:DELETE
Olası gizli bilgilerresp.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.

Tescilli yazılım. Tüm hakları saklıdır.