Automatizando o dirb para varrer vários URLs

1

Eu tenho um problema em fazer esse script funcionar e queria saber se alguém sabia qual era o problema. É suposto ter uma lista de URLs como entrada, digitalizá-los para sub-diretórios e, em seguida, enviá-lo para arquivos diferentes.

for i in $(urls.txt); do echo $i; fn=$(echo $i | sed "s/\///g"); echo $fn; dirb $i /usr/share/wordlists/dirb/small.txt > $fn; done

Este script remove corretamente as barras do novo arquivo, mas recebo o erro (traduzido do sueco) que ": no tal arquivo ou diretório". Provavelmente do > parte $ fn.

for i in $(urls.txt); do echo $i; fn=$(echo $i | sed "s/\///g"); echo $fn; dirb $i /usr/share/wordlists/dirb/small.txt -o $fn; done

E tentando usar a própria saída do dirb, recebo um erro como

"OUTPUT_FILE httpwww.website.com
(!) FATAL: Error opening output file: httpwww.website.com"

E alguns esclarecimentos sobre os forros:
1) loop através de uma lista de URLs
2) saída do URL para o terminal
3) gere o nome do arquivo a partir do url usando sed
4) nome do arquivo de saída para o terminal
5) execute url através de dirb e tente enviar para o nome do arquivo

Os supostos nomes dos arquivos de saída parecem bons para mim, mas não estão funcionando. Alguém sabe por que isso é?

    
por Latedi 04.08.2016 / 11:27

1 resposta

0

Presumindo bash ou ksh93 :

  1. Percorra a lista de URLs
  2. Produza o URL para o terminal

    while read -r url; do
      printf 'URL: "%s"\n' "$url"
    done <urls.txt
    
  3. Crie um nome de arquivo removendo caracteres indesejados do URL (alterando os caracteres que não estão em A-Za-z0-9 para _ , removendo _ consecutivos).

  4. Nome do arquivo de saída para o terminal

    while read -r url; do
      printf 'URL: "%s"\n' "$url"
    
      outfile="$( tr -s -c 'A-Za-z0-9' '_' <<<"$url" )"
      printf 'File: "%s"\n' "$outfile"
    done <urls.txt
    
  5. Use dirb e direcione a saída para o arquivo

    while read -r url; do
      printf 'URL: "%s"\n' "$url"
    
      outfile="$( tr -s -c 'A-Za-z0-9' '_' <<<"$url" )"
      printf 'File: "%s"\n' "$outfile"
    
      dirb "$url" /usr/share/wordlists/dirb/small.txt -o "$outfile"
    done <urls.txt
    

Minha versão faz um pouco mais de sanitização do nome do arquivo do que apenas remover barras.

Além disso, o echo $i invocará a globalização de nomes de arquivos (teste com i='*' ).

Como não tenho um exemplo do seu arquivo urls.txt , é difícil dizer mais sobre isso.

    
por 04.01.2017 / 21:42