> For the complete documentation index, see [llms.txt](https://mysther.gitbook.io/knowledge-base/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://mysther.gitbook.io/knowledge-base/ataques/web-exploitation/enumerando-arquivos-e-diretorios.md).

# Enumerando Arquivos e Diretórios

### ffuf

Arquivos e diretórios via GET

```bash
ffuf -u http://site.com/FUZZ -w <wordlist.txt>:FUZZ -c -v
ffuf -u http://site.com/FUZZ -w <wordlist>:FUZZ -fs <quantidade_caracteres>
```

Pesquisa de diretórios com recursividade. Aqui utilizamos somente um nível de profundidade, porém pode ser ajustado de acordo com a necessidade&#x20;

```bash
ffuf -u http://site.com/FUZZ -w <wordlist.txt>:FUZZ -recursion -recursion-depth 1 -e .php -c -v
```

Adicionando extensões nas palavras da wordlist

```bash
ffuf -u http://site.com/FUZZ -w <wordlist.txt>:FUZZ -e .txt,.php -c -v
```

Via POST

```bash
ffuf -w <wordlist.txt>:FUZZ -u <http://site.com/login.php> -X POST -d 'FUZZ=key' -H 'Content-Type: application/x-www-form-urlencoded' -c -v
```

Procurando extensão de arquivos

```bash
ffuf -u http://site.com/index.FUZZ -w <wordlist_extensao.txt>:FUZZ -c -v
```

Utilizando múltiplas wordlists simultaneamente

```bash
ffuf -u 'http://<domain.com>/FUZZ1/FUZZ2' -w <wordlist-1.txt>:FUZZ1 -w <wordlist-2.txt>:FUZZ2 -c -v
```

Utilizando múltiplas wordlists simultaneamente porém de forma recursiva. Note que obrigatoriamente, o último parâmetro precisa chama FUZZ

```bash
ffuf -u 'http://<domain.com>/GUZZ/FUZZ' -w <wordlist-1.txt>:GUZZ -w <wordlist-2.txt>:FUZZ -recursion -recursion-depth 1 -c -v
```

### GoBuster

Procurando por subdiretórios

```bash
gobuster dir -u <http://site.com.br> -w <path/wordlist.txt> -e
```

Procurando por subdiretórios utilizando cookie

```bash
gobuster dir -u <http://site.com.br> -w <path/wordlist.txt> -c <cookie_string> -e
```

Procurando por arquivos (com extensões personalizadas)

```bash
gobuster dir -u <http://site.com.br> -w <path/wordlist.txt> -x php,txt -e
```

Definindo códigos HTTP válidos

```bash
gobuster dir -u <http://site.com.br> -w <wordlist.txt> -s 200,401 -e
```

###

### Dirb

Procurando por subdiretórios com wordlist personalizada. Sempre que omitirmos a nossa wordlist, o dirb irá usar uma wordlist default.

```bash
dirb <site.com.br> <wordlist.txt> -r -a <user-agent>
```

Note que a pesquisa e recursiva, então adicione o `-r` para que a pesquisa não seja recursiva.

```bash
dirb <site.com.br> <wordlist.txt> -r 
```

Por padrão, o dirb retorna páginas com HTTP 403, então podemos remover essa configuração

```bash
dirb <http://site.com> <wordlist.txt> -N 403
```

Procurando por arquivos (com extensões personalizadas)

```bash
dirb <http://site.com> <wordlist.txt> -X .txt,.php -w
```

Atua com uma delay de 10 segundos a cada requisição

```
dirb <http://site.com> -z 10
```

Também pode utilizar a opção `-c` para adicionar um cookie.

```bash
dirb <site.com.br> <wordlist.txt> -c <cookie.txt>
```

### DirSearch

```bash
./dirsearch.py -u '<url>' -w '<wordlists.txt>' -e <extension1,extension2>
```

### OpenDoor

```bash
opendoor --host <url> -s directories -w <wordlist> -e <extension1,extension2>
```

Caso não esteja enumerando a raiz da url, utilize o parâmetro `--prefix` para indicar que será trabalhado em cima de um subdiretório.

```bash
opendoor --host <url> --prefix <config/>
```

Salvando o resultado em um arquivo HTML.

```bash
opendoor --host <url> -w <wordlist> --reports html
```

### wfuzz

Irá retornar todas as páginas que não tem a quantidade de caracteres especificado em `<qtde_string>`

```bash
wfuzz --hh=<qtde_string> -c -w <wordlist.txt> -b <cookie=value1> <http://site.com/param.php?FUZZ=test>
```

Retorna todas as páginas que tem retornar HTTP 200

```bash
wfuzz -c -z file,/<wordlist.txt> --sc 200 http://site.com/FUZZ.php
```

Retorna todas as páginas que não contém a palavra/frase especificada em `<negative_string>`

```bash
wfuzz -c -z file,<wordlist.txt> --hs '<negative_string>' <http://site.com/param.php?param=FUZZ>
```

Utilizando extensão nos arquivos

```bash
wfuzz -c -w <wordlist.txt> -z list,php-txt-html --hc 403,404 -t 20 -u <http://site.com/FUZZ.FUZ2Z>
```

**OBS.:** O parâmetro `FUZZ` será substituído pelas palavras da Wordlist

| PARÂMETRO         | DESCRIÇÃO                                                                                                                          |
| ----------------- | ---------------------------------------------------------------------------------------------------------------------------------- |
| `-d 'param=FUZZ'` | Utilize essa opção antes da URL para definir que será do tipo `post`                                                               |
| `--hh`            | Quantidade de caracteres que a página não pode retornar `-b` = Cookie. Esse pode ser definido várias, semelhante ao `-H` do `curl` |
| `-c`              | Ativa as cores `-z` = Especifica o payload                                                                                         |

###

### **Curl**

```bash
curl 'https://site.com.br/[1-20].txt'
```

### **nmap**

```bash
nmap -p80 --script http-enum <ip>
```

\
**Sites**

```bash
# OpenDoor
https://github.com/stanislav-web/OpenDoor

# Trabalhando com GIT
https://en.internetwache.org/dont-publicly-expose-git-or-how-we-downloaded-your-websites-sourcecode-an-analysis-of-alexas-1m-28-07-2015/  

# Manual do  WFUZZ
https://repo.zenk-security.com/Techniques%20d.attaques%20%20.%20%20Failles/WFUZZ%20for%20Penetration%20Testers.pdf
```
