Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
forbidden — Contorne códigos de status de resposta HTTP 4xx e muito mais. A ferramenta é baseada em Python Requests, PycURL e HTTP Client. | Kitploit
Ferramentas/GitHubGitHub/ivan-sincek/forbidden
Scanners de VulnerabilidadesEvasão de IDS/IPSExploração de Aplicações WebColeta de InformaçõesBypass de WAFSegurança WebFuzzingTestes de Penetração
GitHubivan-sincek/forbidden

forbidden

Contorne códigos de status de resposta HTTP 4xx e muito mais. A ferramenta é baseada em Python Requests, PycURL e HTTP Client.

Ver Repositório
2574896há 1 anoRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar
# Forbidden

Ignore códigos de status de resposta HTTP 4xx e mais.

A ferramenta é baseada em `Python Requests`, `PycURL` e `HTTP Client`.

Testado no Kali Linux v2024.2 (64-bit).

Feito para fins educacionais. Espero que ajude!

**Future plans:**

* Adicionar a opção `silent` para suprimir a saída do console.
* Adicionar a opção `no color` para desabilitar a saída colorida do console.
* Adicionar testes para cabeçalhos de requisição HTTP `hop-by-hop`.
* Adicionar testes para o cabeçalho de requisição HTTP `User-Agent`.
* Adicionar testes para cookies HTTP.
* Adicionar testes para contrabando HTTP.
* Adicionar testes para CRLF.
* Adicionar testes para Log4j.
* Adicionar testes para SSRF de metadados AWS.

## Table of Contents

* [How to Install](#how-to-install)
    * [Install PycURL](#install-pycurl)
    * [Standard Install](#standard-install)
    * [Build and Install From the Source](#build-and-install-from-the-source)
* [How to Use](#how-to-use)
* [Tests](#tests)
    * [HTTP Methods](#http-methods)
    * [HTTP Request Headers](#http-request-headers)
* [Results](#results)
* [Usage](#usage)
* [Images](#images)

## How to Install

### Install PycURL

No Kali Linux, isso deve funcionar sem problemas; caso contrário, execute:

```bash
apt-get -y install libcurl4-gnutls-dev librtmp-dev

pip3 install --upgrade pycurl
```

---

PycURL no sistema operacional Windows não é suportado.

---

No macOS, execute:

```bash
brew uninstall curl
brew uninstall openssl

brew install curl
brew install openssl

echo 'export PATH="/opt/homebrew/opt/curl/bin:$PATH"' >> ~/.zshrc
echo 'export PATH="/opt/homebrew/opt/openssl@3/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc

export LDFLAGS="-L/opt/homebrew/opt/curl/lib"
export CPPFLAGS="-I/opt/homebrew/opt/curl/include"
export PYCURL_SSL_LIBRARY=openssl

pip3 install --no-cache-dir --compile --ignore-installed --config-setting="--with-openssl=" --config-setting="--openssl-dir=/opt/homebrew/opt/openssl@3" pycurl
```

Alternativamente, instale usando [Homebrew](https://formulae.brew.sh/formula/forbidden) (não mantido por mim):

```fundamental
brew install forbidden
```

### Standard Install

```bash
pip3 install --upgrade forbidden
```

### Build and Install From the Source

```bash
git clone https://github.com/ivan-sincek/forbidden && cd forbidden

python3 -m pip install --upgrade build

python3 -m build

python3 -m pip install dist/forbidden-13.4-py3-none-any.whl
```

## How to Use

Ignorar o código de status de resposta HTTP `403 Forbidden`:

```fundamental
forbidden -u https://example.com/admin -t protocols,methods,uploads,overrides,headers,paths-ram,encodings -f GET -l initial,path -o forbidden_403_results.json
```

Ignorar o código de status de resposta HTTP `403 Forbidden` com teste de estresse:

```fundamental
mkdir stresser_403_results

stresser -u https://example.com/admin -r 1000 -th 200 -f GET -l initial -dir stresser_403_results -o stresser_403_results.json
```

Ignorar o código de status de resposta HTTP `401 Unauthorized`:

```fundamental
forbidden -u https://example.com/admin -t auths -f GET -l initial -o forbidden_401_results.json
```

Testar redirecionamentos abertos e analisadores de URL quebrados, ou seja, testar interações fora da banda (OOB):

```fundamental
forbidden -u https://example.com/admin -t redirects,parsers -f GET -l initial -e xyz.interact.sh -o forbidden_oob_results.json
```

## Tests

**`protocols`**

* Testar os protocolos HTTP e HTTPS usando um endereço IP e nome de domínio.
* Testar um downgrade de protocolo HTTP/1.0 sem o cabeçalho de requisição HTTP `Host`, usando um endereço IP e nome de domínio.

**`methods`**

* Testar os métodos HTTP permitidos, também usando o cabeçalho de requisição HTTP `Content-Length: 0`.
* Testar Cross-Site Tracing (XST) usando os métodos HTTP TRACE e TRACK.

**`uploads`**

* Testar o upload de um arquivo de texto recursivamente para cada diretório no caminho da URL usando o método HTTP PUT.

**`overrides`**

* Testar substituições de método HTTP usando parâmetros de string de consulta de URL, cabeçalhos de requisição HTTP e corpos de requisição HTTP.
* Testar substituições de esquema de URL usando cabeçalhos de requisição HTTP, de HTTPS para HTTP e de HTTP para HTTPS.
* Testar substituições de porta usando cabeçalhos de requisição HTTP.
* Testar substituições de host HTTP usando cabeçalhos de requisição HTTP, também usando dois cabeçalhos de requisição HTTP `Host`.
* Testar substituições de caminho de URL usando cabeçalhos de requisição HTTP com caminhos de URL relativos, usando as seguintes URLs: uma URL acessível, URL raiz e URL completa.

**`headers`**

* Testar cabeçalhos de requisição HTTP com endereços IP, endereços IP separados por vírgula, nomes de domínio, URLs raiz, URLs completas e mais.

**`values`**

* Testar cabeçalhos de requisição HTTP com endereços IP, nomes de domínio, URLs raiz e URLs completas fornecidos pelo usuário.

**`paths`**

* Testar bypasses de caminho de URL.

**`encodings`**

* Testar transformações e codificações de host e caminho de URL.

**`auths`**

* Testar autenticação/autorização básica usando cabeçalhos de requisição HTTP com valores nulos e credenciais pré-definidas codificadas em Base64.
* Testar autenticação/autorização bearer usando cabeçalhos de requisição HTTP com valores nulos, JWTs malformados e JWTs pré-definidos.

**`redirects`**

* Testar redirecionamentos abertos usando cabeçalhos de requisição HTTP com endereços IP de redirecionamento, nomes de domínio, URLs raiz e URLs completas.

**`parsers`**

* Testar analisadores de URL quebrados usando cabeçalhos de requisição HTTP com endereços IP quebrados, nomes de domínio, URLs raiz e URLs completas.

---

Se você estiver interessado em mais detalhes, veja:

* [/src/forbidden/utils/forbidden.py](https://github.com/ivan-sincek/forbidden/blob/main/src/forbidden/utils/forbidden.py#L601)
* [/src/forbidden/utils/test.py](https://github.com/ivan-sincek/forbidden/blob/main/src/forbidden/utils/test.py)
* [/src/forbidden/utils/value.py](https://github.com/ivan-sincek/forbidden/blob/main/src/forbidden/utils/value.py)

---

**Observações:**

* Todos os testes são baseados em relatos públicos de infosec e bug bounty.
* Alguns dos testes se sobrepõem; no entanto, um `filtro único` é aplicado antes de qualquer envio.
* Todos os cabeçalhos de requisição HTTP, parâmetros de string de consulta de URL, etc., foram validados com base na documentação oficial.
* Por padrão, tanto `Forbidden` quanto `Stresser` usam o motor `Python Requests`.
* O teste de downgrade de protocolo HTTP/1.0 sem o cabeçalho de requisição HTTP `Host` está bloqueado para o motor `HTTP Client`. Além disso, o comando cURL fornecido não funcionará corretamente porque o cURL não permite remover o cabeçalho de requisição HTTP `Host`.
* O teste de substituição de host HTTP usando dois cabeçalhos de requisição HTTP `Host` está bloqueado para o motor `Python Requests`. Além disso, o comando cURL fornecido não funcionará corretamente porque o cURL não permite usar dois cabeçalhos de requisição HTTP `Host`.
* O teste de transformações e codificações de host e caminho de URL está bloqueado para o motor `PycURL`.
* Alguns proxies da web podem `normalizar` URLs (por exemplo, ao testar `encodings`), modificar requisições HTTP ou descartar requisições HTTP completamente.
* Alguns sites podem exigir um cabeçalho de requisição HTTP `User-Agent` válido ou muito específico.
* Cross-Site Tracing (XST) não é mais considerado uma vulnerabilidade.
* Cuidado com `limitação de taxa` e outras proteções antibot semelhantes; espere um tempo antes de executar a ferramenta novamente no mesmo domínio.

### HTTP Methods

_Esta é apenas uma visão geral rápida do que é usado, mas não de como é usado._

```fundamental
ACL
ARBITRARY
BASELINE-CONTROL
BIND
CHECKIN
CHECKOUT
CONNECT
COPY
DELETE
GET
HEAD
INDEX
LABEL
LINK
LOCK
MERGE
MKACTIVITY
MKCALENDAR
MKCOL
MKREDIRECTREF
MKWORKSPACE
MOVE
OPTIONS
ORDERPATCH
PATCH
POST
PRI
PROPFIND
PROPPATCH
PUT
REBIND
REPORT
SEARCH
SHOWMETHOD
SPACEJUMP
TEXTSEARCH
TRACE
TRACK
UNBIND
UNCHECKOUT
UNLINK
UNLOCK
UPDATE
UPDATEREDIRECTREF
VERSION-CONTROL
```

### HTTP Request Headers

_Esta é apenas uma visão geral rápida do que é usado, mas não de como é usado._

```fundamental
19-Profile
Accept
Base-URL
CF-Connecting-IP
Client-IP
Cluster-Client-IP
Destination
Forwarded-For
Forwarded-For-IP
From
Front-End-HTTPS
Host
Incap-Client-IP
Origin
Profile
Proxy
Proxy-Client-IP
Redirect
Referer
Remote-Addr
Request-URI
True-Client-IP
URI
URL
WAP-Profile
WL-Proxy-Client-IP
X-Client-IP
X-Cluster-Client-IP
X-Forward
X-Forward-For
X-Forwarded
X-Forwarded-By
X-Forwarded-For
X-Forwarded-For-IP
X-Forwarded-For-Original
X-Forwarded-Host
X-Forwarded-Path
X-Forwarded-Port
X-Forwarded-Proto
X-Forwarded-Protocol
X-Forwarded-SSL
X-Forwarded-Scheme
X-Forwarded-Server
X-HTTP-DestinationURL
X-HTTP-Host-Override
X-HTTP-Method
X-HTTP-Method-Override
X-Host
X-Host-Override
X-Method
X-Method-Override
X-Original-Forwarded-For
X-Original-Remote-Addr
X-Original-URL
X-Originally-Forwarded-For
X-Originating-IP
X-Override-URL
X-Proxy-Host
X-Proxy-URL
X-ProxyUser-IP
X-Real-IP
X-Referer
X-Remote-Addr
X-Remote-IP
X-Rewrite-URL
X-Scheme
X-Server-IP
X-True-Client-IP
X-True-IP
X-URL-Scheme
X-Wap-Profile
```

## Results

**Observações:**

* Os resultados serão ordenados por código de status de resposta HTTP `crescente`, comprimento do corpo da resposta HTTP `decrescente` e ID do teste `crescente`.
* Por padrão, apenas códigos de status de resposta HTTP `2xx` e `3xx` são incluídos nos resultados e exibidos na saída do console.
* O atributo `length` nos resultados refere-se ao comprimento do corpo da resposta HTTP.
* Para filtrar manualmente resultados `falso positivo`, para cada comprimento de conteúdo de resposta HTTP único, execute o comando cURL fornecido e verifique se a resposta HTTP resulta em bypass; caso contrário, simplesmente ignore todos os resultados com o mesmo comprimento de conteúdo.

```json
[
   {
      "id":"595-HOST-OVERRIDES-1",
      "url":"https://example.com:443/admin",
      "method":"GET",
      "headers":[
         "Host: 127.0.0.1"
      ],
      "cookies":[],
      "body":"",
      "user_agent":"Forbidden/13.4",
      "command":"curl --path-as-is -iskL -A 'Forbidden/13.4' -H 'Host: 127.0.0.1' -X 'GET' 'https://example.com:443/admin'",
      "status":200,
      "length":14301
   },
   {
      "id":"596-HOST-OVERRIDES-1",
      "url":"https://example.com:443/admin",
      "method":"GET",
      "headers":[
         "Host: 127.0.0.1:443"
      ],
      "cookies":[],
      "body":"",
      "user_agent":"Forbidden/13.4",
      "command":"curl --path-as-is -iskL -A 'Forbidden/13.4' -H 'Host: 127.0.0.1:443' -X 'GET' 'https://example.com:443/admin'",
      "status":200,
      "length":14301
   }
]
```

## Usage

```fundamental
Forbidden v13.4 ( github.com/ivan-sincek/forbidden )

Uso:   forbidden -u url                       -t tests [-f force] [-o out         ]
Exemplo: forbidden -u https://example.com/admin -t all   [-f GET  ] [-o results.json]

DESCRIÇÃO
    Ignorar códigos de status de resposta HTTP 4xx e mais
URL
    URL inacessível
    -u, --url = https://example.com/admin | etc.
IGNORAR PARÂMETROS
    Ignorar string de consulta de URL e fragmento
    -ip, --ignore-parameters
IGNORAR REQUISIÇÕES
    Quando aplicável, usar PycURL em vez do motor padrão Python Requests
    -ir, --ignore-requests
TESTES
    Testes a executar
    Especifique '[ip-|host-|url-]values' para testar cabeçalhos de requisição HTTP usando apenas valores fornecidos pelo usuário passados com a opção '-v'
    Especifique 'paths-ram' para usar o ataque de aríete ou 'paths' para usar o ataque de bombardeio em cluster padrão
    Use valores separados por vírgula
    -t, --tests = protocols | methods | uploads | [method-|scheme-|port-|host-|path-]overrides | headers | [ip-|host-|url-]values | paths[-ram] | encodings | [basic-|bearer-]auths | redirects | parsers | all
VALORES
    Arquivo contendo valores de cabeçalho de requisição HTTP ou um único valor, ex.: IP interno, etc.
    Testes: all-values
    -v, --values = values.txt | 10.10.15.20 | example.local | https://example.local | etc.
FORÇAR
    Forçar um método HTTP para todos os testes não específicos
    -f, --force = GET | POST | CUSTOM | etc.
CAMINHO
    Caminho de URL acessível para testar substituições de caminho de URL
    Testes: path-overrides
    Padrão: /robots.txt, /index.html, /sitemap.xml, /README.txt
    -p, --path = /home | etc.
MALICIOSA
    URL maliciosa ou serviço de colaborador
    Testes: host-overrides, headers, bearer-auths, redirects, parsers
    Padrão: https://github.com
    -e, --evil = https://xyz.interact.sh | https://xyz.burpcollaborator.net | etc.
CABEÇALHO
    Qualquer número de cabeçalhos de requisição HTTP extras
    Cabeçalhos de requisição HTTP extras não substituirão cabeçalhos de requisição HTTP específicos do teste
    Ponto e vírgula, ex.: 'Content-Type;' se expandirá para um cabeçalho de requisição HTTP vazio
    -H, --header = "Authorization: Bearer ey..." | Content-Type; | etc.
COOKIE
    Qualquer número de cookies HTTP extras
    Cookies HTTP extras não substituirão cookies HTTP específicos do teste
    -b, --cookie = PHPSESSIONID=3301 | etc.
IGNORAR
    RegEx para filtrar resultados falsos positivos de 200 OK
    -i, --ignore = Inaccessible | "Access Denied" | "Error: .+" | etc.
COMPRIMENTOS DE CONTEÚDO
    Comprimentos de conteúdo de resposta HTTP para filtrar resultados falsos positivos de 200 OK
    Especifique 'initial' para ignorar o comprimento de conteúdo da resposta HTTP inicial
    Especifique 'path' para ignorar o comprimento de conteúdo da resposta da URL acessível
    Use valores separados por vírgula
    -l, --content-lengths = 12 | initial | path | etc.
TEMPO LIMITE DE REQUISIÇÃO
    Tempo limite de requisição em segundos
    Padrão: 60
    -rt, --request-timeout = 30 | 90 | etc.
THREADS
    Número de threads paralelas para executar
    Padrão: 5
    -th, --threads = 20 | etc.
ESPERA
    Tempo de espera em milissegundos antes de enviar uma requisição HTTP
    Destinado ao uso de thread única
    -s, --sleep = 500 | etc.
USER AGENT
    User agent a usar
    Padrão: Forbidden/13.4
    -a, --user-agent = random[-all] | curl/3.30.1 | etc.
PROXY
    Proxy da web a usar
    -x, --proxy = http://127.0.0.1:8080 | etc.
CÓDIGOS DE STATUS DE RESPOSTA HTTP
    Incluir apenas códigos de status de resposta HTTP específicos nos resultados
    Padrão: 2xx, 3xx
    Use valores separados por vírgula
    -sc, --status-codes = 1xx | 2xx | 3xx | 4xx | 5xx | all
MOSTRAR TABELA
    Exibir os resultados em formato de tabela em vez de formato JSON
    Destinado ao uso em tela larga
    -st, --show-table
SAÍDA
    Arquivo de saída
    -o, --out = results.json | etc.
DESPEJAR
    Despejar todos os registros de teste no arquivo de saída sem executar nenhum
    -dmp, --dump
DEPURAÇÃO
    Habilitar saída de depuração
    -dbg, --debug
```

```fundamental
Stresser v13.4 ( github.com/ivan-sincek/forbidden )

Uso:   stresser -u url                       -r repeat -th threads -dir directory [-f force] [-o out         ]
Exemplo: stresser -u https://example.com/admin -r 1000   -th 200     -dir results   [-f GET  ] [-o results.json]

DESCRIÇÃO
    Ignorar códigos de status de resposta HTTP 4xx com teste de estresse
URL
    URL inacessível
    -u, --url = https://example.com/admin | etc.
IGNORAR PARÂMETROS
    Ignorar string de consulta de URL e fragmento
    -ip, --ignore-parameters
IGNORAR REQUISIÇÕES
    Quando aplicável, usar PycURL em vez do motor padrão Python Requests
    -ir, --ignore-requests
FORÇAR
    Forçar um método HTTP para todos os testes não específicos
    -f, --force = GET | POST | CUSTOM | etc.
CABEÇALHO
    Qualquer número de cabeçalhos de requisição HTTP extras
    Cabeçalhos de requisição HTTP extras não substituirão cabeçalhos de requisição HTTP específicos do teste
    Ponto e vírgula, ex.: 'Content-Type;' se expandirá para um cabeçalho de requisição HTTP vazio
    -H, --header = "Authorization: Bearer ey..." | Content-Type; | etc.
COOKIE
    Qualquer número de cookies HTTP extras
    Cookies HTTP extras não substituirão cookies HTTP específicos do teste
    -b, --cookie = PHPSESSIONID=3301 | etc.
IGNORAR
    RegEx para filtrar resultados falsos positivos de 200 OK
    -i, --ignore = Inaccessible | "Access Denied" | "Error: .+" | etc.
COMPRIMENTOS DE CONTEÚDO
    Comprimentos de conteúdo de resposta HTTP para filtrar resultados falsos positivos de 200 OK
    Especifique 'initial' para ignorar o comprimento de conteúdo da resposta HTTP inicial
    Use valores separados por vírgula
    -l, --content-lengths = 12 | initial | etc.
TEMPO LIMITE DE REQUISIÇÃO
    Tempo limite de requisição em segundos
    Padrão: 60
    -rt, --request-timeout = 30 | 90 | etc.
REPETIR
    Número de requisições HTTP por teste
    -r, --repeat = 1000 | etc.
THREADS
    Número de threads paralelas para executar
    -th, --threads = 20 | etc.
USER AGENT
    User agent a usar
    Padrão: Stresser/13.4
    -a, --user-agent = random[-all] | curl/3.30.1 | etc.
PROXY
    Proxy da web a usar
    -x, --proxy = http://127.0.0.1:8080 | etc.
CÓDIGOS DE STATUS DE RESPOSTA HTTP
    Incluir apenas códigos de status de resposta HTTP específicos nos resultados
    Padrão: 2xx, 3xx
    Use valores separados por vírgula
    -sc, --status-codes = 1xx | 2xx | 3xx | 4xx | 5xx | all
MOSTRAR TABELA
    Exibir os resultados em formato de tabela em vez de formato JSON
    Destinado ao uso em tela larga
    -st, --show-table
SAÍDA
    Arquivo de saída
    -o, --out = results.json | etc.
DIRETÓRIO
    Diretório de saída
    Todas as respostas HTTP válidas e únicas serão salvas neste diretório
    -dir, --directory = results | etc.
DESPEJAR
    Despejar todos os registros de teste no arquivo de saída sem executar nenhum
    -dmp, --dump
DEPURAÇÃO
    Habilitar saída de depuração
    -dbg, --debug
```

## Images

<p align="center"><img src="https://assets.kitploit.com/production/public/readmes/4920/79066f51066e4f83e1a6a180069eb9bd213a16775d3906d7256a0262c040ddc4.png" alt="Exemplo Real"></p>

<p align="center">Figura 1 - Exemplo Real</p>

<p align="center"><img src="https://assets.kitploit.com/production/public/readmes/4920/c0ab26b4413f9b7014f21da8a4b458ba7385baf3198a80db1a9e4303ec123d30.png" alt="Exemplo Simples"></p>

<p align="center">Figura 2 - Exemplo Simples</p>

<p align="center"><img src="https://assets.kitploit.com/production/public/readmes/4920/c015d3d41d2f6f56a71e2af5a38bd539942a5f24cbbe712381bb2221cc2593ae.png" alt="Exemplo Simples (Saída em Tabela)"></p>

<p align="center">Figura 3 - Exemplo Simples (Saída em Tabela)</p>
Baixar ferramenta