Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
Инструменты/GitHubGitHub/ivan-sincek/forbidden
Сканеры уязвимостейОбход IDS/IPSЭксплуатация веб-приложенийСбор информацииОбход WAFВеб-безопасностьФаззингТестирование на Проникновение
GitHubivan-sincek/forbidden

forbidden

Обход 4xx HTTP response status codes и другое. Инструмент основан на Python Requests, PycURL и HTTP Client.

Репозиторий
257481511 месяцев назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

Forbidden

Обход кодов состояния HTTP 4xx и не только.

Инструмент основан на Python Requests, PycURL и HTTP Client.

Протестировано на Kali Linux v2024.2 (64-bit).

Сделано в образовательных целях. Надеюсь, это поможет!

Планы на будущее:

  • Добавить опцию silent для подавления вывода в консоль.
  • Добавить опцию no color для отключения цветного вывода в консоль.
  • Добавить тесты для «hop-by-hop» заголовков HTTP-запросов.
  • Добавить тесты для заголовка HTTP-запроса User-Agent.
  • Добавить тесты для HTTP-куки.
  • Добавить тесты для HTTP-смаглинга.
  • Добавить тесты для CRLF.
  • Добавить тесты для Log4j.
  • Добавить тесты для AWS metadata SSRF.

Содержание

  • How to Install
    • Install PycURL
  • Standard Install
  • Build and Install From the Source
  • How to Use
  • Tests
    • HTTP Methods
    • HTTP Request Headers
  • Results
  • Usage
  • Images
  • Установка

    Установка PycURL

    В Kali Linux это должно работать без проблем; в противном случае выполните:

    root@kitploit:~
    apt-get -y install libcurl4-gnutls-dev librtmp-dev
    
    pip3 install --upgrade pycurl
    

    PycURL на Windows не поддерживается.


    На macOS выполните:

    root@kitploit:~
    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
    

    Также можно установить через Homebrew (не поддерживается мной):

    root@kitploit:~
    brew install forbidden
    

    Стандартная установка

    root@kitploit:~
    pip3 install --upgrade forbidden
    

    Сборка и установка из исходников

    root@kitploit:~
    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
    

    Использование

    Обход кода состояния HTTP 403 Forbidden:

    root@kitploit:~
    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
    

    Обход кода состояния HTTP 403 Forbidden с нагрузочным тестированием:

    root@kitploit:~
    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
    

    Обход кода состояния HTTP 401 Unauthorized:

    root@kitploit:~
    forbidden -u https://example.com/admin -t auths -f GET -l initial -o forbidden_401_results.json
    

    Тест на открытые редиректы и сломанные парсеры URL, т.е. проверка out-of-band (OOB) взаимодействий:

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

    Тесты

    protocols

    • Проверка протоколов HTTP и HTTPS с использованием IP-адреса и доменного имени.
    • Проверка понижения протокола до HTTP/1.0 без заголовка Host HTTP-запроса, с использованием IP-адреса и доменного имени.

    methods

    • Проверка разрешённых HTTP-методов, также с использованием заголовка Content-Length: 0.
    • Проверка Cross-Site Tracing (XST) с помощью методов TRACE и TRACK.

    uploads

    • Проверка рекурсивной загрузки текстового файла для каждой директории в пути URL методом PUT.

    overrides

    • Проверка переопределения HTTP-метода через параметры строки запроса URL, заголовки HTTP-запроса и тело запроса.
    • Проверка переопределения схемы URL через заголовки HTTP-запроса (с HTTPS на HTTP и с HTTP на HTTPS).
    • Проверка переопределения порта через заголовки HTTP-запроса.
    • Проверка переопределения хоста HTTP через заголовки HTTP-запроса, а также с использованием двух заголовков Host.
    • Проверка переопределения пути URL через заголовки HTTP-запроса с относительными путями URL, используя следующие URL: доступный URL, корневой URL и полный URL.

    headers

    • Проверка заголовков HTTP-запроса с IP-адресами, разделёнными запятыми IP-адресами, доменными именами, корневыми URL, полными URL и т.д.

    values

    • Проверка заголовков HTTP-запроса с IP-адресами, доменными именами, корневыми URL и полными URL, переданными пользователем.

    paths

    • Проверка обхода путей URL.

    encodings

    • Проверка преобразований и кодировок хоста и пути URL.

    auths

    • Проверка базовой аутентификации/авторизации через заголовки HTTP-запроса с пустыми значениями и предопределёнными Base64-закодированными учётными данными.
    • Проверка Bearer-аутентификации/авторизации через заголовки HTTP-запроса с пустыми значениями, некорректными JWT и предопределёнными JWT.

    redirects

    • Проверка открытых редиректов через заголовки HTTP-запроса с IP-адресами, доменными именами, корневыми URL и полными URL для перенаправления.

    parsers

    • Проверка сломанных парсеров URL через заголовки HTTP-запроса с некорректными IP-адресами, доменными именами, корневыми URL и полными URL.

    Если вас интересуют дополнительные детали, смотрите:

    • /src/forbidden/utils/forbidden.py
    • /src/forbidden/utils/test.py
    • /src/forbidden/utils/value.py

    Замечания:

    • Все тесты основаны на публичных отчётах infosec и bug bounty.
    • Некоторые тесты пересекаются; однако перед отправкой применяется уникальный фильтр.
    • Все заголовки HTTP-запроса, параметры строки запроса URL и т.д. были проверены в соответствии с официальной документацией.
    • По умолчанию и Forbidden, и Stresser используют движок Python Requests.
    • Тест понижения протокола до HTTP/1.0 без заголовка Host привязан к движку HTTP Client. Кроме того, указанная команда cURL не будет работать корректно, потому что cURL не позволяет удалить заголовок Host.
    • Тест переопределения хоста HTTP с двумя заголовками Host привязан к движку Python Requests. Кроме того, указанная команда cURL не будет работать корректно, потому что cURL не позволяет использовать два заголовка Host.
    • Тест преобразований и кодировок хоста и пути URL привязан к движку PycURL.
    • Некоторые веб-прокси могут нормализовывать URL (например, при тестировании encodings), изменять HTTP-запросы или полностью отбрасывать их.
    • Некоторые сайты могут требовать валидный или очень специфический заголовок User-Agent.
    • Cross-Site Tracing (XST) больше не считается уязвимостью.
    • Остерегайтесь ограничения частоты запросов и других подобных антибот-защит; делайте паузу перед повторным запуском инструмента на том же домене.

    HTTP-методы

    Это лишь краткий обзор того, что используется, но не того, как используется.

    root@kitploit:~
    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-запросов

    Это лишь краткий обзор того, что используется, но не того, как используется.

    root@kitploit:~
    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
    

    Результаты

    Замечания:

    • Результаты будут отсортированы по коду состояния HTTP по возрастанию, длине тела ответа HTTP по убыванию и ID теста по возрастанию.
    • По умолчанию в результаты и вывод консоли включаются только коды состояния HTTP 2xx и 3xx.
    • Атрибут length в результатах указывает на длину тела HTTP-ответа.
    • Чтобы вручную отфильтровать ложноположительные результаты, для каждой уникальной длины содержимого HTTP-ответа выполните указанную команду cURL и проверьте, приводит ли HTTP-ответ к обходу; если нет, просто игнорируйте все результаты с той же длиной содержимого.
    root@kitploit:~
    [
       {
          "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
       }
    ]
    

    Использование

    root@kitploit:~
    Forbidden v13.4 ( github.com/ivan-sincek/forbidden )
    
    Usage:   forbidden -u url                       -t tests [-f force] [-o out         ]
    Example: forbidden -u https://example.com/admin -t all   [-f GET  ] [-o results.json]
    
    ОПИСАНИЕ
        Обход кодов состояния HTTP 4xx и не только
    URL
        Недоступный URL
        -u, --url = https://example.com/admin | и т.д.
    ИГНОРИРОВАТЬ ПАРАМЕТРЫ
        Игнорировать строку запроса и фрагмент URL
        -ip, --ignore-parameters
    ИГНОРИРОВАТЬ ЗАПРОСЫ
        Там, где применимо, использовать PycURL вместо стандартного движка Python Requests
        -ir, --ignore-requests
    ТЕСТЫ
        Тесты для запуска
        Укажите '[ip-|host-|url-]values', чтобы тестировать заголовки HTTP-запроса, используя только переданные пользователем значения через опцию '-v'
        Укажите 'paths-ram' для атаки battering ram или 'paths' для стандартной атаки cluster bomb
        Используйте значения, разделённые запятыми
        -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
    ЗНАЧЕНИЯ
        Файл, содержащий значения заголовков HTTP-запроса, или одно значение, например, внутренний IP и т.д.
        Тесты: all-values
        -v, --values = values.txt | 10.10.15.20 | example.local | https://example.local | и т.д.
    ПРИНУДИТЕЛЬНЫЙ МЕТОД
        Принудительно задать HTTP-метод для всех неспецифических тестов
        -f, --force = GET | POST | CUSTOM | и т.д.
    ПУТЬ
        Доступный путь URL для тестирования переопределения пути URL
        Тесты: path-overrides
        По умолчанию: /robots.txt, /index.html, /sitemap.xml, /README.txt
        -p, --path = /home | и т.д.
    ВРЕДОНОСНЫЙ URL
        Вредоносный URL или collaborator сервис
        Тесты: host-overrides, headers, bearer-auths, redirects, parsers
        По умолчанию: https://github.com
        -e, --evil = https://xyz.interact.sh | https://xyz.burpcollaborator.net | и т.д.
    ЗАГОЛОВОК
        Любое количество дополнительных заголовков HTTP-запроса
        Дополнительные заголовки не будут переопределять заголовки, специфичные для теста
        Точка с запятой в, например, 'Content-Type;' расширится до пустого заголовка HTTP-запроса
        -H, --header = "Authorization: Bearer ey..." | Content-Type; | и т.д.
    КУКИ
        Любое количество дополнительных HTTP-кук
        Дополнительные куки не будут переопределять куки, специфичные для теста
        -b, --cookie = PHPSESSIONID=3301 | и т.д.
    ИГНОРИРОВАТЬ
        RegEx для фильтрации ложноположительных результатов с кодом 200 OK
        -i, --ignore = Inaccessible | "Access Denied" | "Error: .+" | и т.д.
    ДЛИНЫ СОДЕРЖИМОГО
        Длины содержимого HTTP-ответа для фильтрации ложноположительных результатов с кодом 200 OK
        Укажите 'initial', чтобы игнорировать длину содержимого начального HTTP-ответа
        Укажите 'path', чтобы игнорировать длину содержимого ответа доступного URL
        Используйте значения, разделённые запятыми
        -l, --content-lengths = 12 | initial | path | и т.д.
    ТАЙМАУТ ЗАПРОСА
        Таймаут запроса в секундах
        По умолчанию: 60
        -rt, --request-timeout = 30 | 90 | и т.д.
    ПОТОКИ
        Количество параллельных потоков
        По умолчанию: 5
        -th, --threads = 20 | и т.д.
    ЗАДЕРЖКА
        Задержка в миллисекундах перед отправкой HTTP-запроса
        Предназначено для однопоточного использования
        -s, --sleep = 500 | и т.д.
    USER AGENT
        Используемый user agent
        По умолчанию: Forbidden/13.4
        -a, --user-agent = random[-all] | curl/3.30.1 | и т.д.
    ПРОКСИ
        Используемый веб-прокси
        -x, --proxy = http://127.0.0.1:8080 | и т.д.
    КОДЫ СОСТОЯНИЯ HTTP
        Включать в результаты только определённые коды состояния HTTP
        По умолчанию: 2xx, 3xx
        Используйте значения, разделённые запятыми
        -sc, --status-codes = 1xx | 2xx | 3xx | 4xx | 5xx | all
    ТАБЛИЦА
        Отображать результаты в виде таблицы вместо JSON
        Предназначено для широких экранов
        -st, --show-table
    ВЫВОД
        Выходной файл
        -o, --out = results.json | и т.д.
    ДАМП
        Выгрузить все записи тестов в выходной файл без выполнения
        -dmp, --dump
    ОТЛАДКА
        Включить отладочный вывод
        -dbg, --debug
    
    root@kitploit:~
    Stresser v13.4 ( github.com/ivan-sincek/forbidden )
    
    Usage:   stresser -u url                       -r repeat -th threads -dir directory [-f force] [-o out         ]
    Example: stresser -u https://example.com/admin -r 1000   -th 200     -dir results   [-f GET  ] [-o results.json]
    
    ОПИСАНИЕ
        Обход кодов состояния HTTP 4xx с нагрузочным тестированием
    URL
        Недоступный URL
        -u, --url = https://example.com/admin | и т.д.
    ИГНОРИРОВАТЬ ПАРАМЕТРЫ
        Игнорировать строку запроса и фрагмент URL
        -ip, --ignore-parameters
    ИГНОРИРОВАТЬ ЗАПРОСЫ
        Там, где применимо, использовать PycURL вместо стандартного движка Python Requests
        -ir, --ignore-requests
    ПРИНУДИТЕЛЬНЫЙ МЕТОД
        Принудительно задать HTTP-метод для всех неспецифических тестов
        -f, --force = GET | POST | CUSTOM | и т.д.
    ЗАГОЛОВОК
        Любое количество дополнительных заголовков HTTP-запроса
        Дополнительные заголовки не будут переопределять заголовки, специфичные для теста
        Точка с запятой в, например, 'Content-Type;' расширится до пустого заголовка HTTP-запроса
        -H, --header = "Authorization: Bearer ey..." | Content-Type; | и т.д.
    КУКИ
        Любое количество дополнительных HTTP-кук
        Дополнительные куки не будут переопределять куки, специфичные для теста
        -b, --cookie = PHPSESSIONID=3301 | и т.д.
    ИГНОРИРОВАТЬ
        RegEx для фильтрации ложноположительных результатов с кодом 200 OK
        -i, --ignore = Inaccessible | "Access Denied" | "Error: .+" | и т.д.
    ДЛИНЫ СОДЕРЖИМОГО
        Длины содержимого HTTP-ответа для фильтрации ложноположительных результатов с кодом 200 OK
        Укажите 'initial', чтобы игнорировать длину содержимого начального HTTP-ответа
        Используйте значения, разделённые запятыми
        -l, --content-lengths = 12 | initial | и т.д.
    ТАЙМАУТ ЗАПРОСА
        Таймаут запроса в секундах
        По умолчанию: 60
        -rt, --request-timeout = 30 | 90 | и т.д.
    ПОВТОР
        Количество HTTP-запросов на один тест
        -r, --repeat = 1000 | и т.д.
    ПОТОКИ
        Количество параллельных потоков
        -th, --threads = 20 | и т.д.
    USER AGENT
        Используемый user agent
        По умолчанию: Stresser/13.4
        -a, --user-agent = random[-all] | curl/3.30.1 | и т.д.
    ПРОКСИ
        Используемый веб-прокси
        -x, --proxy = http://127.0.0.1:8080 | и т.д.
    КОДЫ СОСТОЯНИЯ HTTP
        Включать в результаты только определённые коды состояния HTTP
        По умолчанию: 2xx, 3xx
        Используйте значения, разделённые запятыми
        -sc, --status-codes = 1xx | 2xx | 3xx | 4xx | 5xx | all
    ТАБЛИЦА
        Отображать результаты в виде таблицы вместо JSON
        Предназначено для широких экранов
        -st, --show-table
    ВЫВОД
        Выходной файл
        -o, --out = results.json | и т.д.
    ДИРЕКТОРИЯ
        Выходная директория
        Все валидные и уникальные HTTP-ответы будут сохранены в этой директории
        -dir, --directory = results | и т.д.
    ДАМП
        Выгрузить все записи тестов в выходной файл без выполнения
        -dmp, --dump
    ОТЛАДКА
        Включить отладочный вывод
        -dbg, --debug
    

    Изображения

    Real Example

    Рисунок 1 — Реальный пример

    Simple Example

    Рисунок 2 — Простой пример

    Simple Example (Table Output)

    Рисунок 3 — Простой пример (вывод в виде таблицы)

    Скачать инструмент