
Um script Python que encontra endpoints em arquivos JavaScript
O LinkFinder é um script Python escrito para descobrir endpoints e seus parâmetros em arquivos JavaScript. Dessa forma, testadores de penetração e caçadores de bugs podem reunir novos endpoints ocultos nos sites que estão testando, resultando em um novo campo de testes, possivelmente contendo novas vulnerabilidades. Ele faz isso usando jsbeautifier para Python em combinação com uma expressão regular bastante grande. A expressão regular consiste em quatro pequenas expressões regulares. Estas são responsáveis por encontrar:
https://example.com/*)/\* ou ../*)text/test.php)test.php)A saída é fornecida em HTML ou texto simples. @karel_origin escreveu uma extensão do Chrome para o LinkFinder que pode ser encontrada aqui.

O LinkFinder suporta Python 3.
$ git clone https://github.com/GerbenJavado/LinkFinder.git
$ cd LinkFinder
$ python setup.py install
O LinkFinder depende dos módulos Python argparse e jsbeautifier. Todas essas dependências podem ser instaladas usando pip.
$ pip3 install -r requirements.txt
python linkfinder.py -i https://example.com/1.js -o results.html
python linkfinder.py -i https://example.com/1.js -o cli
python linkfinder.py -i https://example.com -d
Save selected items, forneça esse arquivo como entrada):python linkfinder.py -i burpfile -b
python linkfinder.py -i 'Desktop/*.js' -r ^/api/ -o results.html
Construir a imagem Docker:
docker build -t linkfinder
Executar com Docker
docker run --rm -v $(pwd):/linkfinder/output linkfinder -i http://example.com/1.js -o /linkfinder/output/output.html
Certifique-se de usar o caminho /linkfinder/output no seu caminho de saída, ou a saída será perdida quando o contêiner for encerrado.
pytest test_parser.py
| Forma Curta | Forma Longa | Descrição |
|---|
| -i | --input | Entrada: URL, arquivo ou pasta. Para pastas, um curinga pode ser usado (ex.: '/*.js'). |
| -o | --output | "cli" para imprimir no STDOUT, caso contrário onde salvar o arquivo HTML. Padrão: output.html |
| -r | --regex | RegEx para fins de filtragem em relação aos endpoints encontrados (ex.: ^/api/) |
| -d | --domain | Alternar para usar ao analisar um domínio inteiro. Enumera sobre todos os arquivos JS encontrados. |
| -b | --burp | Alternar para usar ao fornecer um arquivo do Burp 'Save selected' contendo múltiplos arquivos JS |
| -c | --cookies | Adicionar cookies à requisição |
| -h | --help | exibe a mensagem de ajuda e sai |