
C言語製のAIチャットボックス向けペネトレーションテストツール:チャットインターフェースに対して言語系(SQLi/NoSQL/XSS/SSTI)およびプロンプトインジェクションのペイロードを送信し、効果があったものを検出します
thc-BloodMiamiC で書かれた AI チャットボックスのペネトレーションテストツール。チャットインターフェースに対して 言語 (SQL/NoSQL/XSS/SSTI) および プロンプト インジェクションのペイロードを送信し、効果があったものを検出します — DB エラー文字列、反射されたスクリプトマーカー、モデルのジェイルブレイクシグナルなど。高速、スレッド対応、libcurl ベース。
機能言語インジェクション (-i L) — SQLi、NoSQL、XSS、JS インジェクションプローブ。レスポンスをエラー/シグネチャリスト (mysql_fetch_array、ORA-01756、<script>、onerror= など) と照合プロンプトインジェクション (-i P) — ジェイルブレイク/プロンプト上書きプローブ。ヒットを Low (モデルの混乱)、Medium (バイパスの可能性)、Critical (ジェイルブレイクシグナル) として評価スレッド 送信 — 並列度を調整可能 (-c、デフォルト 10)カスタムヘッダー、user-agent、タイムアウト、詳細 モード、結果のファイル出力 (-o)wordlist/language.txt、wordlist/prompt.txtビルドgit clone https://github.com/foxcornlab/thc-BloodMiami.git
cd thc-BloodMiami
# deps: gcc, make, libcurl dev headers
sudo apt install libcurl4-openssl-dev # debian/ubuntu
make
使い方# language injection scan
./build/bloodmiami -t https://example.com/chat -i L -d wordlist/language.txt
# prompt injection scan, verbose, results to file
./build/bloodmiami -t https://example.com/chat -i P -d wordlist/prompt.txt -v -o results.txt
# 20 threads, 10s timeout, custom header
./build/bloodmiami -t https://example.com/chat -i L -d wordlist/language.txt -c 20 -T 10 \
-H "Authorization: Bearer <token>"
Usage: bloodmiami [OPTIONS]
Required:
-t, --target URL Target chat interface URL
-i, --injection TYPE Injection type: L (language) or P (prompt)
-d, --dictionary FILE Dictionary file with payloads
Optional:
-v, --verbose Enable verbose output
-T, --timeout SEC Request timeout in seconds (default: 5)
-U, --user-agent STR Custom User-Agent string
-H, --header STR Add custom HTTP header
-c, --concurrency NUM Concurrent requests (default: 10)
-o, --output FILE Save results to file
-h, --help Show help
-V, --version Show version
仕組み辞書の各行が1つの POST (Content-Type: application/json) となり、ペイロードはチャット形式の JSON ボディに埋め込まれます。レスポンスボディは以下をスキャンします:
SQL エラー — mysql_fetch_array、ORA-01756、Unclosed quotation mark、PostgreSQL query failed などNoSQL エラー — MongoError、BSONObj、WriteResult などXSS マーカー — <script>、javascript:、onerror=、document.cookie などJS エラー — SyntaxError、ReferenceError、eval( などHTTP 5xx — インジェクションが引き起こした可能性のあるサーバーエラーとしてフラグ付けペイロードは埋め込む前に JSON エスケープされるため、辞書内の引用符やバックスラッシュがリクエストボディを破損させることはありません。TLS 検証は意図的に無効化されています (CURLOPT_SSL_VERIFYPEER=0) — これはテストツールであり、ラボまたは許可されたターゲットに対してのみ使用してください。
ペイロード辞書wordlist/language.txt — SQLi (UNION、エラーベース、時間ベース)、NoSQL オペレーター、XSS ベクター、SSTI プローブwordlist/prompt.txt — ジェイルブレイクの試行、ロールプレイ上書き、システムプロンプト抽出プローブ、間接インジェクションマーカー独自のものを追加できます: 1行に1ペイロード、# はコメント。ペイロードはそのままターゲットに送信されるため、テストが許可されているシステムにのみ向けてください。
免責事項許可されたセキュリティテストおよび研究専用です。所有していないものに対してこれを使用する前に許可を得る責任はあなたにあります。
謝辞オープンソースセキュリティコミュニティ — ペイロードのアイデアとシグネチャリストlibcurl — HTTP 処理の大部分を担当
Vineeth Kumar(foxcornlab) による研究。バグを見つけた場合や機能を希望する場合は、issueを作成してください。