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

HTTP Garden は、組み合わせ可能なように設定された HTTP サーバーとプロキシのコレクションであり、それらと対話して脆弱性の発見をはるかに簡単にするスクリプトも含まれています。HTTP Garden で見つけられる脆弱性のクールなデモについては、私たちの ShmooCon 2024 トーク をご覧ください。

謝辞

このプロジェクトを可能にしてくれた Galois、Trail of Bits、Narf Industries、Dartmouth College の友人たちに感謝します。

この資料は、契約番号 HR0011-19-C-0076 に基づき、国防高等研究計画局(DARPA)の支援を受けた作業に基づいています。

はじめに

依存関係

  1. HTTP Garden は x86_64 および AArch64 Linux 上で動作し、他のプラットフォームでは未テストです。
  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
  • HAProxy を通じて基本的な GET リクエストを送信し、その結果を 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 改行を使用するペイロードを試してみましょう。これは仕様で禁止されています。

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 ディレクトリには、Garden 内の各 HTTP サーバーおよびトランスデューサー用のサブディレクトリが含まれています。各ターゲットは独自の Docker イメージを取得します。可能な限り、すべてのプログラムはソースからビルドされます。各ターゲットの複数のバージョンを簡単にビルドできるように、すべてのターゲットはリポジトリ URL(APP_REPO)、ブランチ名(APP_BRANCH)、コミットハッシュ(APP_VERSION)でパラメータ化されています。

tools

tools ディレクトリには、サーバーとの対話に使用するスクリプトが含まれています。その中には次のものがあります。

  • probe_quirks.py: テスト対象システムにおける無害な HTTP 解析の癖を列挙し、ファジング中に無視するためのスクリプト。
  • repl.py: 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 |

HTTP トランスデューサー

|-| | apache_httpd_proxy | | apache_traffic_server | | envoy | | go_stdlib_proxy | | h2o_proxy | | haproxy | | lighttpd_proxy | | nghttpx | | nginx_proxy | | openlitespeed_proxy | | pound | | squid | | varnish | | yahns_proxy |

除外したもの

以下は、Garden から除外した注目すべき項目の説明です。

ツールをダウンロード