Ruby: regex authentication bypass
Last updated
Last updated
Vamos começar analisando o ambiente que iremos atacar:
Esse código irá verificar se a entrada do usuário não possui caracteres especiais, os caracteres permitidos são: caracteres numéricos e letras
Se digitarmos outro valor por exemplo "<" a aplicação irá retornar "Malicious Input Detected".
Após entender o comportamento da aplicação precisamos bypassar esse filtro pra conseguirmos obter SSTI (pressumi que seria isso por estar usando um sistema de templates)
Em regex o ^ e $ indicam respectivamente início e fim de linha, ou seja, esa expressão regular está verificando o início e fim de cada linha, então se uma linha for suficiente conseguimos bypassar o filtro, podemos utilizar o \n para isso, para explorar podemos utilizar o Burp ou o curl
Com o Burp eu tive que acrescenter um \n para conseguir bypassar, depois vi outras soluções na internet e vi que com o curl conseguimos explorar apenas com um \n, vamos ver os dois exemplos
Agora vamos ver o exemplo com o curl:
Podemos copiar o \n do Burp e colar na linha de comando do curl
Esse ataque é exclusivo (até onde eu testei) do ruby, para conseguirmos o mesmo resultado em outras linguagens precisaria de outras opções no filtro, por exemplo em python se pareceria com isso: