
Fuzzer de caixa-preta de alto desempenho para aplicações web com mecanismo de payload integrado, verificação de requisições, adulteração, codificação e filtragem avançada para detectar comportamentos e vulnerabilidades ocultos.
</ Vantagens | Funcionalidades | Instalação | Uso | Comunidade >
Firefly é um fuzzer avançado de caixa-preta e não apenas uma ferramenta padrão de descoberta de ativos. O Firefly oferece a vantagem de testar um alvo com um grande número de verificações integradas para detectar comportamentos no alvo.
go install -v github.com/Brum3ns/firefly/cmd/firefly@latest
ou
go get -v github.com/Brum3ns/firefly/cmd/firefly
firefly -h
firefly -u 'http://example.com/?query=FUZZ'
Diferentes tipos de entrada de requisição que podem ser usados
Básico
firefly -u 'http://example.com/?query=FUZZ' --timeout 7000
Requisição com diferentes métodos e protocolos
firefly -u 'http://example.com/?query=FUZZ' -m GET,POST,PUT -p https,http,ws
echo 'http://example.com/?query=FUZZ' | firefly
firefly -r '
GET /?query=FUZZ HTTP/1.1
Host: example.com
User-Agent: FireFly'
Isto enviará o HTTP Raw e detectará automaticamente todos os parâmetros GET e/ou POST para fuzz.
firefly -r '
POST /?A=1 HTTP/1.1
Host: example.com
User-Agent: Firefly
X-Host: FUZZ
B=2&C=3' -au replace
O verificador de requisição é a parte mais importante. Este recurso permite que o Firefly conheça o comportamento central do alvo que você está fuzzeando. É importante priorizar qualidade sobre quantidade. Mais requisições de verificação levarão a uma melhor qualidade, ao custo do desempenho do hardware interno (dependendo do seu hardware)
firefly -u 'http://example.com/?query=FUZZ' -e
Os payloads podem ser altamente personalizados e, com uma boa wordlist central, é possível adaptar completamente a wordlist de payload dentro do próprio Firefly.
Exibe o formato de todos os payloads e sai
firefly -show-payload
Lista de todos os Tampers disponíveis
firefly -list-tamper
Aplica tamper em todos os payloads com o tipo informado (Mais de um pode ser usado, separado por vírgula)
firefly -u 'http://example.com/?query=FUZZ' -e s2c
firefly -u 'http://example.com/?query=FUZZ' -e hex
Codifica em Hex e depois em URL todos os payloads
firefly -u 'http://example.com/?query=FUZZ' -e hex,url
firefly -u 'http://example.com/?query=FUZZ' -pr '\([0-9]+=[0-9]+\) => (13=(37-24))'
Os Payloads:
' or (1=1)-- -e" or(20=20)or "Resultarão em:' or (13=(37-24))-- -e" or(13=(37-24))or "Onde=>(com espaços) indica "substituir por".
Opções de filtro para filtrar/corresponder requisições que incluam uma regra específica.
Filtrar respostas para ignorar (filtrar) código de status 302 e contagem de linhas 0
firefly -u 'http://example.com/?query=FUZZ' -fc 302 -fl 0
Filtrar respostas para incluir (corresponder) regex e código de status 200
firefly -u 'http://example.com/?query=FUZZ' -mr '[Ee]rror (at|on) line \d' -mc 200
firefly -u 'http://example.com/?query=FUZZ' -mr 'MySQL' -mc 200
Opções de desempenho e atrasos de tempo para usar no processo de requisição
Threads / Concorrência
firefly -u 'http://example.com/?query=FUZZ' -t 35
Atraso de tempo em milissegundos (ms) para cada concorrência
FireFly -u 'http://example.com/?query=FUZZ' -t 35 -dl 2000
Wordlist que contém os payloads pode ser adicionada separadamente ou extraída de uma pasta fornecida
Wordlist única com seu tipo de ataque
firefly -u 'http://example.com/?query=FUZZ' -w wordlist.txt:fuzz
Extrair todas as wordlists dentro de uma pasta. O tipo de ataque depende do sufixo <type>_wordlist.txt
firefly -u 'http://example.com/?query=FUZZ' -w wl/
Exemplo
Nomes das wordlists dentro da pasta
wl:
- fuzz_wordlist.txt
- time_wordlist.txt
A saída em JSON é altamente recomendada. Isso porque você pode se beneficiar da ferramenta
jqpara navegar pelos resultados e compará-los.
(Se o Firefly estiver encadeado em pipeline com outras ferramentas, o texto simples padrão pode ser uma escolha melhor.)
Formato de saída em texto simples
firefly -u 'http://example.com/?query=FUZZ' -o file.txt
Formato de saída JSON (recomendado)
firefly -u 'http://example.com/?query=FUZZ' -oJ file.json
Todos na comunidade estão autorizados a sugerir novas funcionalidades, melhorias e/ou adicionar novos payloads ao Firefly — basta fazer um pull request ou adicionar um comentário com suas sugestões!