
Uma versão melhorada da minha ferramenta xssfinder - escaneia diferentes tipos de xss em uma lista de URLs.
Esta é a versão estendida baseada na ideia inicial já publicada como "xssfinder". Esta versão privada permite que um atacante realize requisições não apenas GET, mas também POST. Além disso, é possível fazer proxy de cada requisição através do Burp ou outro túnel.
Renomeie o arquivo example.app-settings.conf para app-settings.conf e ajuste as configurações. Deve funcionar imediatamente, mas dependendo do alvo, recomendo redimensionar os tamanhos dos chunks.
Esta ferramenta não espera nenhum argumento via linha de comando, então basta digitar:
python3 extended-xss-search.py
É possível definir várias opções e configurações, então aqui estão algumas explicações.
O arquivo de configuração principal é o "app-settings.conf", tudo deve ser feito nesse arquivo! Além disso, existem alguns outros arquivos que permitem definir dados mais complexos, como cabeçalhos, urls e cookies.
config/cookie-jar.txt
Use este arquivo para adicionar uma string de cookie. Normalmente copio a que você vê em cada requisição do Burp. Apenas copie o valor do cabeçalho "Cookie:". Um exemplo de entrada está no arquivo padrão.
config/http-headers.txt
Este arquivo define os cabeçalhos HTTP que são adicionados à requisição e manipulados (o payload é adicionado a cada um). Os mais importantes já estão no arquivo. Mas sinta-se à vontade para adicionar mais.
config/parameters.txt
A ferramenta tem a opção de fazer brute force em parâmetros GET e POST. Nesse caso, esses parâmetros (+ os da string de consulta) serão usados. Cada parâmetro recebe o payload como valor. Os mais importantes já estão nesse arquivo.
config/urls-to-test.txt
Esse é o arquivo que você precisa! Adicione aqui seus links para escanear. Os seguintes formatos são permitidos:
Quando o último caso é detectado, um "http://" é adicionado ao início. Esta ferramenta foi projetada para funcionar com uma boa lista de URLs. Uma boa maneira de obter uma é exportá-la usando o Burp. Assim você terá uma lista válida de URLs. Tudo o que você precisa fazer é adicionar seus cookies.
logs/
Esta é a pasta de logs onde tudo é registrado!
O arquivo app-settings.conf define o fluxo de trabalho do programa. É o arquivo mais importante; você pode ativar/desativar diferentes módulos nele.
Configurações básicas
HTTPTimeout
Algumas requisições podem demorar. Aqui você pode definir o tempo máximo de execução de uma requisição. Recomendo valores entre 2 e 6 segundos.
MaxThreads
Quanto mais threads, mais rápido o script será - mas como estamos lidando com muitas conexões, geralmente mantenho isso abaixo de 10 no meu computador pessoal e por volta de 30 no meu VPS.
Tipos de ataque
OnlyBaseRequest
Definir isso como verdadeiro resultará apenas em "requisições base" - isso significa que a lista de URLs é apenas rastreada e os parâmetros interessantes são extraídos. Você poderia usar isso para preencher rapidamente seu sitemap do Burp.
UsePost
Use pode pular requisições POST definindo isso como "false"
UseGet
Isso é semelhante - pule requisições GET se definido como "false"
Configurações do tipo de ataque
GetChunkSize
Quantos parâmetros GET testar com uma requisição?
PostChunkSize
Quantos parâmetros POST testar com uma requisição?
Tunelamento
Também é possível usar um túnel, por exemplo, "127.0.0.1:8080" (Proxy Burp), para monitorar todo o tráfego dentro do Burp.
Active
Definir isso como "true" forçará o script a usar uma conexão tunelada.
Tunnel
Defina aqui o servidor proxy "ip:porta".
O resultado é o seguinte: quando você abrir o Burp, poderá ver seu histórico HTTP:



Basta criar uma issue e marcá-la como solicitação de funcionalidade.
Gostou dessa ferramenta? Ela te ajudou a conseguir um bounty? Quer retribuir/me apoiar? Por que não!