Proxy / WAF Protections Bypass
Last updated
Last updated
AWS Hacking'i öğrenin ve pratik yapın:HackTricks Eğitim AWS Kırmızı Takım Uzmanı (ARTE) GCP Hacking'i öğrenin ve pratik yapın: HackTricks Eğitim GCP Kırmızı Takım Uzmanı (GRTE)
Bu araştırmadan teknikler.
Nginx kural örneği:
Nginx, atlatmaları önlemek için kontrol etmeden önce yol normalizasyonu yapar. Ancak, arka uç sunucusu farklı bir normalizasyon gerçekleştirirse (nginx'in kaldırmadığı karakterleri kaldırma), bu savunmayı aşmak mümkün olabilir.
Nginx Versiyonu
Node.js Atlatma Karakterleri
1.22.0
\xA0
1.21.6
\xA0
1.20.2
\xA0
, \x09
, \x0C
1.18.0
\xA0
, \x09
, \x0C
1.16.1
\xA0
, \x09
, \x0C
Nginx Versiyonu
Flask Atlatma Karakterleri
1.22.0
\x85
, \xA0
1.21.6
\x85
, \xA0
1.20.2
\x85
, \xA0
, \x1F
, \x1E
, \x1D
, \x1C
, \x0C
, \x0B
1.18.0
\x85
, \xA0
, \x1F
, \x1E
, \x1D
, \x1C
, \x0C
, \x0B
1.16.1
\x85
, \xA0
, \x1F
, \x1E
, \x1D
, \x1C
, \x0C
, \x0B
Nginx Versiyonu
Spring Boot Atlatma Karakterleri
1.22.0
;
1.21.6
;
1.20.2
\x09
, ;
1.18.0
\x09
, ;
1.16.1
\x09
, ;
Nginx FPM yapılandırması:
Nginx, /admin.php
erişimini engelleyecek şekilde yapılandırılmıştır, ancak bu, /admin.php/index.php
erişilerek aşılabilir.
Bu yazıda ModSecurity v3'ün (3.0.12'ye kadar) erişilen yolu (parametrelerin başlangıcına kadar) içermesi gereken REQUEST_FILENAME
değişkenini yanlış bir şekilde uyguladığı açıklanmaktadır. Bunun nedeni, yolu almak için bir URL çözümlemesi yapmasıdır.
Bu nedenle, mod güvenliğinde http://example.com/foo%3f';alert(1);foo=
gibi bir istek, yolun sadece /foo
olduğunu varsayacaktır çünkü %3f
?
'ya dönüştürülerek URL yolunu sonlandırır, ancak aslında sunucunun alacağı yol /foo%3f';alert(1);foo=
olacaktır.
REQUEST_BASENAME
ve PATH_INFO
değişkenleri de bu hatadan etkilenmiştir.
Mod Security'nin 2. versiyonunda, yedek dosyalarla ilgili belirli uzantılara sahip dosyalara erişimi engelleyen bir korumayı bypass etmeye izin veren benzer bir durum meydana gelmiştir (örneğin, .bak
gibi) sadece noktayı %2e
ile URL kodlayarak göndererek, örneğin: https://example.com/backup%2ebak
.
Bu araştırma, AWS'nin düzgün bir şekilde ayrıştırmadığı ancak arka uç sunucusu tarafından ayrıştırılan "bozuk" bir başlık göndererek AWS WAF kurallarını bypass etmenin mümkün olduğunu belirtmektedir.
Örneğin, X-Query başlığında bir SQL enjeksiyonu ile aşağıdaki isteği göndermek:
AWS WAF'ı atlatmak mümkündü çünkü bir sonraki satırın başlığın değeriyle ilgili olduğunu anlamıyordu, oysa NODEJS sunucusu anlıyordu (bu düzeltildi).
Genellikle WAF'lar, kontrol edilecek isteklerin belirli bir uzunluk sınırına sahiptir ve eğer bir POST/PUT/PATCH isteği bu sınırı aşarsa, WAF isteği kontrol etmez.
AWS WAF için belgelere göz atabilirsiniz:
Uygulama Yük Dengeleyici ve AWS AppSync korumaları için incelenebilecek maksimum web istek gövde boyutu
8 KB
CloudFront, API Gateway, Amazon Cognito, App Runner ve Doğrulanmış Erişim korumaları için incelenebilecek maksimum web istek gövde boyutu**
64 KB
Core Rule Set 3.1 (veya daha düşük) olan eski Web Uygulama Güvenlik Duvarları, istek gövdesi denetimini kapatarak 128 KB'dan büyük mesajlara izin verir, ancak bu mesajlar güvenlik açıkları için kontrol edilmeyecektir. Daha yeni sürümler (Core Rule Set 3.2 veya daha yeni) için, maksimum istek gövde sınırını devre dışı bırakarak aynı şey yapılabilir. Bir istek boyut sınırını aşarsa:
Eğer önleme modu: İsteği kaydeder ve engeller.
Eğer tespit modu: Sınır kadar inceler, geri kalanını göz ardı eder ve Content-Length
sınırı aşarsa kaydeder.
Varsayılan olarak, WAF yalnızca bir isteğin ilk 8KB'sini inceler. Gelişmiş Meta Veriler ekleyerek sınırı 128KB'a kadar artırabilir.
128KB'a kadar.
Unicode normalizasyonunun uygulanmasına bağlı olarak (daha fazla bilgi burada), Unicode uyumluluğunu paylaşan karakterler WAF'ı atlayabilir ve amaçlanan yük olarak çalıştırılabilir. Uyumlu karakterler burada bulunabilir.
https://github.com/ustayready/fireprox: ffuf ile kullanılmak üzere bir API geçidi URL'si oluşturur
https://github.com/rootcathacking/catspin: fireprox'a benzer
https://github.com/PortSwigger/ip-rotate: API geçidi IP'lerini kullanan Burp Suite eklentisi
https://github.com/fyoorer/ShadowClone: Girdi dosyası boyutuna ve bölme faktörüne dayalı olarak dinamik olarak belirlenen bir dizi konteyner örneği etkinleştirilir; girdi, paralel yürütme için parçalara ayrılır, örneğin 10,000 satırlık bir girdi dosyasından 100 parçayı işleyen 100 örnek.
Farklı teknikler, güvenlik duvarlarındaki regex filtrelerini atlatmak için kullanılabilir. Örnekler arasında büyük/küçük harf değiştirme, satır sonları ekleme ve yükleri kodlama yer alır. Çeşitli atlatma kaynakları PayloadsAllTheThings ve OWASP adreslerinde bulunabilir. Aşağıdaki örnekler bu makaleden alınmıştır.
nowafpls: WAF'leri uzunlukla atlatmak için isteklere gereksiz veri ekleyen Burp eklentisi
AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE) GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)