Após realizar um pentest em uma aplicação web e descobrir um vetor vulnerável a XSS, percebi que a aplicação possuía um Web Application Firewall (WAF) configurado que bloqueava a maioria dos termos relacionados a XSS, logo, pensei em desenvolver uma ferramenta que permitiria passar como entrada todos os termos que você sabe que o WAF da aplicação bloqueia, assim, a aplicação retornaria todos os payloads que não possuem esses termos.
Baseado nessa ideia, desenvolvi a ferramenta whichxss que permite você passar os argumentos através da seguinte sintaxe: -f "href" -f "<script" -fR "on.*="
. O -f é para passar os termos que você sabe que o WAF barra e o -fR a mesma coisa, porém com suporte à Regex.
![](https://decriptosec.com/wp-content/uploads/2023/04/example0-1024x437.png)
![](https://decriptosec.com/wp-content/uploads/2023/04/image.png)
Logo após desenvolver essa funcionalidade, pensei na cereja do bolo: Uma outra funcionalidade que realiza um teste heurístico (utilizando o termo FUZZ em uma URL) para te auxiliar a obter quais termos são bloqueados pelo WAF.
![](https://decriptosec.com/wp-content/uploads/2023/04/example2.png)
Ao final do procedimento, a ferramenta retorna uma linha de comando pronta para ser executada e retornar os resultados baseados no teste automático.
![](https://decriptosec.com/wp-content/uploads/2023/04/image-1-1024x304.png)
Também é possível visualizar o resultado de payloads de algumas possíveis combinações baseadas em termos permitidos detectados durante o teste automatizado. Na imagem abaixo é possível ver que não existem resultados contendo eventos ondrag, onclick, a função alert() e outros, porque não foram permitidas pelo WAF da aplicação web testada.
![](https://decriptosec.com/wp-content/uploads/2023/04/image-2.png)
![](https://decriptosec.com/wp-content/uploads/2023/04/image-3.png)
Conclusão
Os resultados de algumas funcionalidades podem não ser precisas, pois a ferramenta e o conceito ainda são novos. Mas você pode desfrutar desta ferramenta clicando na imagem abaixo. Sinta-se a vontade para realizar pull requests com melhorias no repositório caso desejar.