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

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

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

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

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

Категории

Все категории
Loading categories
http-garden — Фреймворк дифференциального тестирования для HTTP-реализаций | Kitploit
Инструменты/GitHubGitHub/narfindustries/http-garden
Анализ уязвимостейДинамический анализ кода (DAST)Веб-безопасностьФаззинг
GitHubnarfindustries/http-garden

http-garden

Фреймворк дифференциального тестирования для HTTP-реализаций

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

Популярное

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

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

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

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

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

The HTTP Garden

The HTTP Garden — это набор HTTP-серверов и прокси, сконфигурированных для совместного использования, а также скрипты для взаимодействия с ними, которые делают поиск уязвимостей намного-намного проще. Посмотрите наш доклад на ShmooCon 2024 с классными демонстрациями уязвимостей, которые можно найти с помощью The HTTP Garden.

Благодарности

Мы хотели бы поблагодарить наших друзей из Galois, Trail of Bits, Narf Industries и Дартмутского колледжа за то, что этот проект стал возможным.

Эта работа основана на результатах, полученных при поддержке Агентства перспективных оборонных исследовательских проектов (DARPA) по контракту № HR0011-19-C-0076.

Начало работы

Зависимости

  1. The HTTP Garden работает на Linux x86_64 и AArch64 и не тестировался на других платформах.
  2. Целевые серверы собираются и запускаются в Docker-контейнерах, поэтому вам понадобится Docker.
  3. Также понадобится Python 3.12+ и следующие Python-пакеты, которые можно установить из PyPI (например, с помощью pip) или через системный менеджер пакетов:
  • docker
    • Для взаимодействия с Docker
  • pyyaml
    • Для разбора yaml
  • tqdm
    • Для индикаторов прогресса

Если вы устанавливаете Python-пакеты через системный менеджер пакетов, учтите, что имена пакетов, возможно, потребуется дополнить префиксом py3-, python3- или python- в зависимости от системы.

Запуск

  • Соберите и запустите несколько серверов и прокси:
./garden.sh start --build gunicorn hyper nginx haproxy
  • Из другой командной оболочки запустите repl:
./garden.sh repl
  • Отправьте простой GET-запрос через HAProxy, затем передайте результат исходным серверам Gunicorn, Hyper и Nginx и выведите, совпадают ли их интерпретации:
garden> payload 'GET / HTTP/1.1\r\nHOST: a\r\n\r\n' | transduce haproxy | fanout | grid
'GET / HTTP/1.1\r\nHOST: a\r\n\r\n'
⬇️ haproxy
'GET / HTTP/1.1\r\nhost: a\r\n\r\n'
gunicorn: [
    HTTPRequest(
        method=b'GET', uri=b'/', version=b'1.1',
        headers=[
            (b'host', b'a'),
        ],
        body=b'',
    ),
]
hyper: [
    HTTPRequest(
        method=b'GET', uri=b'/', version=b'1.1',
        headers=[
            (b'host', b'a'),
        ],
        body=b'',
    ),
]
nginx: [
    HTTPRequest(
        method=b'GET', uri=b'/', version=b'1.1',
        headers=[
            (b'host', b'a'),
            (b'content-length', b''),
            (b'content-type', b''),
        ],
        body=b'',
    ),
]
         g
         u
         n
         i h n
         c y g
         o p i
         r e n
         n r x
        +-----
gunicorn|✓ ✓ ✓
hyper   |  ✓ ✓
nginx   |    ✓

Похоже, они все согласны. (Обратите внимание: даже несмотря на то, что Nginx добавил заголовки content-length и content-type, Garden знает об этом и не позволяет этому незначительному расхождению появляться в выводе grid.)

Давайте попробуем полезную нагрузку, которая использует голый символ перевода строки LF в конце тела chunked-сообщения. Это запрещено спецификацией.

garden> payload 'POST / HTTP/1.1\r\nHost: a\r\nTransfer-Encoding: chunked\r\n\r\n0\n\r\n' | fanout | grid
gunicorn: [
    HTTPResponse(version=b'1.1', method=b'400', reason=b'Bad Request'),
]
hyper: [
]
nginx: [
    HTTPRequest(
        method=b'POST', uri=b'/', version=b'1.1',
        headers=[
            (b'transfer-encoding', b'chunked'),
            (b'host', b'a'),
            (b'content-length', b'0'),
            (b'content-type', b''),
        ],
        body=b'',
    ),
]
         g
         u
         n
         i h n
         c y g
         o p i
         r e n
         n r x
        +-----
gunicorn|✓ ✓ X
hyper   |  ✓ X
nginx   |    ✓

Итак, Gunicorn ответил 400, Hyper не ответил, а Nginx принял запрос. Это нарушение спецификации авторами Nginx, которое они не желают исправлять.

Вы также могли заметить, что, хотя Gunicorn и Hyper ответили не совсем одинаково, ранее в выводе grid они отображались как согласованные. Это потому, что их ответы по сути эквивалентны (отклонение сообщения), и Garden учитывает это.

Структура каталогов

images

Каталог images содержит подкаталог для каждого HTTP-сервера и трансмодера в Garden. Для каждой цели создаётся собственный Docker-образ. Все программы, когда возможно, собираются из исходников. Чтобы можно было легко собирать несколько версий каждой цели, все цели параметризуются URL-адресом репозитория (APP_REPO), именем ветки (APP_BRANCH) и хешем коммита (APP_VERSION).

tools

Каталог tools содержит скрипты, используемые для взаимодействия с серверами. Внутри вы найдёте:

  • probe_quirks.py: скрипт для перечисления безобидных особенностей разбора HTTP в тестируемых системах, которые следует игнорировать во время фаззинга;
  • repl.py: основной пользовательский интерфейс The HTTP Garden;
  • update.py: скрипт для обновления хешей коммитов в docker-compose.yml;
  • ...и ещё несколько скриптов, не предназначенных для пользователей.

Цели

HTTP-серверы

|-| | aiohttp | | apache_httpd | | apache_tomcat | | appweb | | aws_c_http | | cpp_httplib | | eclipse_grizzly | | eclipse_jetty | | fasthttp | | go_stdlib | | gunicorn | | h2o | | haproxy_fcgi | | hyper | | hypercorn | | ktor | | libevent | | libmicrohttpd | | libsoup | | lighttpd | | mongoose | | netty | | nginx | | node_stdlib | | openbsd_httpd | | openlitespeed | | openwrt_uhttpd | | protocol_http1 | | puma | | tornado | | twisted | | undertow | | uvicorn | | waitress | | webrick | | yahns |

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