Regular expression Denial of Service - ReDoS
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Bir Regular Expression Denial of Service (ReDoS), birinin düzenli ifadelerin (metin içinde desenleri arama ve eşleştirme yöntemi) nasıl çalıştığındaki zayıflıkları kullanması durumunda meydana gelir. Bazen, düzenli ifadeler kullanıldığında, özellikle üzerinde çalıştıkları metin parçası büyüdüğünde çok yavaşlayabilirler. Bu yavaşlık, metin boyutundaki küçük artışlarla bile çok hızlı bir şekilde kötüleşebilir. Saldırganlar, bu sorunu kullanarak düzenli ifadeleri kullanan bir programın uzun süre düzgün çalışmasını engelleyebilirler.
Detayları kontrol edin https://owasp.org/www-community/attacks/Regular_expression_Denial_of_Service_-_ReDoS
Kötü bir düzenli ifade deseni, özel olarak hazırlanmış girdi üzerinde takılı kalabilen bir desendir. Kötü regex desenleri genellikle tekrar içeren gruplama ve tekrar veya tekrarlanan grupta örtüşme ile alternatiflik içerir. Kötü desenlere bazı örnekler şunlardır:
(a+)+
([a-zA-Z]+)*
(a|aa)+
(a|a?)+
(.*a){x} for x > 10
Bunların hepsi aaaaaaaaaaaaaaaaaaaaaaaa!
girdisine karşı savunmasızdır.
Bir CTF'de (veya hata ödülü) belki de düzenli ifadenin eşleştiği hassas bilgiyi (bayrağı) kontrol ediyorsunuzdur. O zaman, Regex eşleştiğinde sayfanın donmasını (zaman aşımı veya daha uzun işleme süresi) sağlamak faydalı olabilir ve eşleşmediğinde değil. Bu şekilde, dizeyi karakter karakter sızdırabilirsiniz:
bu yazıda bu ReDoS kuralını bulabilirsiniz: ^(?=<flag>)((.*)*)*salt$
Örnek: ^(?=HTB{sOmE_fl§N§)((.*)*)*salt$
bu yazımda bu örneği bulabilirsiniz: <flag>(((((((.*)*)*)*)*)*)*)!
bu yazımda şunu kullandı: ^(?=${flag_prefix}).*.*.*.*.*.*.*.*!!!!$
Aşağıdakiler, girdiyi ve regex'i kontrol ettiğiniz ReDoS örnekleridir:
AWS Hacking öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE) GCP Hacking öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)