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)
Denial of Service z użyciem wyrażeń regularnych (ReDoS) ma miejsce, gdy ktoś wykorzystuje słabości w działaniu wyrażeń regularnych (sposób na wyszukiwanie i dopasowywanie wzorców w tekście). Czasami, gdy używa się wyrażeń regularnych, mogą one stać się bardzo wolne, szczególnie jeśli tekst, z którym pracują, staje się większy. Ta wolność może być tak zła, że rośnie naprawdę szybko nawet przy niewielkich zwiększeniach rozmiaru tekstu. Napastnicy mogą wykorzystać ten problem, aby sprawić, że program używający wyrażeń regularnych przestanie działać poprawnie na długi czas.
Sprawdź szczegóły w https://owasp.org/www-community/attacks/Regular_expression_Denial_of_Service_-_ReDoS
Złe wyrażenie regularne to takie, które może utknąć na stworzonym wejściu, powodując DoS. Złe wzorce regex zazwyczaj zawierają grupowanie z powtórzeniem oraz powtórzenie lub alternację z nakładającymi się elementami wewnątrz powtórzonej grupy. Niektóre przykłady złych wzorców to:
(a+)+
([a-zA-Z]+)*
(a|aa)+
(a|a?)+
(.*a){x} dla x > 10
Wszystkie te wzorce są podatne na wejście aaaaaaaaaaaaaaaaaaaaaaaa!
.
W CTF (lub bug bounty) być może kontrolujesz regex, z którym dopasowywana jest wrażliwa informacja (flaga). Wtedy może być przydatne, aby strona zamarła (timeout lub dłuższy czas przetwarzania), jeśli regex dopasował i nie, jeśli nie dopasował. W ten sposób będziesz mógł ekstrahować ciąg znak po znaku:
W tym poście możesz znaleźć tę regułę ReDoS: ^(?=<flag>)((.*)*)*salt$
Przykład: ^(?=HTB{sOmE_fl§N§)((.*)*)*salt$
W tym opisie możesz znaleźć ten: <flag>(((((((.*)*)*)*)*)*)*)!
W tym opisie użyto: ^(?=${flag_prefix}).*.*.*.*.*.*.*.*!!!!$
Poniżej znajdują się przykłady ReDoS, w których kontrolujesz zarówno wejście, jak i regex:
Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)