# 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
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://mysther.gitbook.io/knowledge-base/ataques/web-exploitation/enumerando-arquivos-e-diretorios.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
