Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
http-garden — HTTP実装向け差分テストフレームワーク | Kitploit
ツール/GitHubGitHub/narfindustries/http-garden
脆弱性分析動的コード分析 (DAST)ウェブセキュリティファジング
GitHubnarfindustries/http-garden

http-garden

HTTP実装向け差分テストフレームワーク

リポジトリを見る
941842ヶ月前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- の接頭辞が必要な場合があることに注意してください。

実行

  • いくつかのサーバーとプロキシをビルドして起動します:
root@kitploit:~
./garden.sh start --build gunicorn hyper nginx haproxy
  • 別のシェルから repl を起動します:
root@kitploit:~
./garden.sh repl
  • HAProxy を通じて基本的な GET リクエストを送信し、その結果を Gunicorn、Hyper、Nginx オリジンサーバーに送信して、それらの解釈が一致するかどうかを表示します:
root@kitploit:~
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 改行を使用するペイロードを試してみましょう。これは仕様で禁止されています。

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

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 から除外した注目すべき項目の説明です。

結果

Garden が見つけたバグの完全なリストについては、TROPHIES.md を参照してください。

ツールをダウンロード
twisted
undertow
uvicorn
waitress
webrick
yahns
名前理由
Microsoft 製のものMSRC は「HTTP スマグリングは脆弱性とは見なされない」と私たちに伝えました。そして、私は特に Microsoft を助ける必要性を感じていません。
unicornyahns と同じ HTTP パーサーを使用しています。
SwiftNIOHTTP 解析に llhttp を使用していますが、これは node_stdlib で既にカバーされています。
BunHTTP 解析に picohttpparser を使用していますが、これは h2o で既にカバーされています。
DenoHTTP 解析に hyper を使用していますが、これは Garden に既に含まれています。
DaphneHTTP 解析に twisted を使用していますが、これは Garden に既に含まれています。
pitchforkyahns と同じパーサーを使用しています。
nghttpxHTTP 解析に lhttp を使用していますが、これは node_stdlib で既にカバーされています。
Cheroot私たちの報告を無視しています。
CherryPyHTTP 解析に cheroot を使用しています。
libhttpserverHTTP 解析に libmicrohttpd を使用していますが、これは Garden に既に含まれています。
WerkzeugHTTP 解析に CPython 標準ライブラリを使用していますが、これは Garden に既に含まれています。
CaddyHTTP 解析に Go 標準ライブラリを使用していますが、これは Garden に既に含まれています。
TengineNginx の HTTP パーサーを使用しています。
OpenRestyNginx の HTTP パーサーを使用しています。
Google Cloud Global External Application Load BalancerEnvoy ベースです。
Google Cloud Regional External Application Load BalancerEnvoy ベースです。
Phusion PassengerHTTP 解析に llhttpd を使用していますが、これは node_stdlib で既にカバーされています。
passimHTTP 解析に libsoup を使用していますが、これは Garden に既に含まれています。
boaメンテナンスされていません。
Ulfiuslibmicrohttpd を使用していますが、これは Garden に既に含まれています。
Vultr Load Balancer単なる HAProxy であり、Garden に既に含まれています。
VMWare Avi Load Balancer単なる Nginx であり、Garden に既に含まれています。
Sanichttptools を使用していますが、これは Uvicorn で既にカバーされています。
CPython http.server本番環境での使用を想定していません。
openjdk_stdlib一貫した脆弱性開示チャネルを提供していません。
dart_stdlib以前の報告を無視しました。
eventletHTTP ライブラリは CPython 標準ライブラリの単なるフォークです。
uwsgiチャンク化されたメッセージボディをサポートしていません。