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)
Uma Negação de Serviço por Expressão Regular (ReDoS) acontece quando alguém se aproveita das fraquezas em como as expressões regulares (uma forma de buscar e combinar padrões em texto) funcionam. Às vezes, quando as expressões regulares são usadas, elas podem se tornar muito lentas, especialmente se o trecho de texto com o qual estão trabalhando ficar maior. Essa lentidão pode crescer tanto que se torna realmente rápida com até mesmo pequenos aumentos no tamanho do texto. Os atacantes podem usar esse problema para fazer um programa que usa expressões regulares parar de funcionar corretamente por um longo tempo.
Verifique os detalhes em https://owasp.org/www-community/attacks/Regular_expression_Denial_of_Service_-_ReDoS
Um padrão de expressão regular maligno é aquele que pode ficar preso em uma entrada elaborada causando um DoS. Padrões de regex malignos geralmente contêm agrupamento com repetição e repetição ou alternância com sobreposição dentro do grupo repetido. Alguns exemplos de padrões malignos incluem:
(a+)+
([a-zA-Z]+)*
(a|aa)+
(a|a?)+
(.*a){x} para x > 10
Todos esses são vulneráveis à entrada aaaaaaaaaaaaaaaaaaaaaaaa!
.
Em um CTF (ou bug bounty), talvez você controle a Regex com a qual uma informação sensível (a bandeira) é combinada. Então, pode ser útil fazer a página congelar (timeout ou tempo de processamento mais longo) se a Regex combinar e não se não combinar. Dessa forma, você poderá exfiltrar a string caractere por caractere:
Em este post você pode encontrar esta regra de ReDoS: ^(?=<flag>)((.*)*)*salt$
Exemplo: ^(?=HTB{sOmE_fl§N§)((.*)*)*salt$
Em este writeup você pode encontrar este: <flag>(((((((.*)*)*)*)*)*)*)!
Em este writeup ele usou: ^(?=${flag_prefix}).*.*.*.*.*.*.*.*!!!!$
Os seguintes são exemplos de ReDoS onde você controla tanto a entrada quanto a regex:
Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)