
Инструмент для пентестинга AI-чат-боксов на C: отправляет в чат-интерфейсы пейлоады языковых (SQLi/NoSQL/XSS/SSTI) и промпт-инъекций и помечает те, что срабатывают
thc-BloodMiamiИнструмент для пентеста AI-чат-ботов, написанный на C. Отправляет полезные нагрузки языковых (SQL/NoSQL/XSS/SSTI) и prompt-инъекций в чат-интерфейс и помечает те, что сработали — строки ошибок БД, отражённые маркеры скриптов, сигналы джейлбрейка модели. Быстрый, многопоточный, на основе libcurl.
Что он делаетЯзыковая инъекция (-i L) — пробы SQLi, NoSQL, XSS, JS-инъекций; сопоставление ответа со списками ошибок/сигнатур (mysql_fetch_array, ORA-01756, <script>, onerror=, ...)Prompt-инъекция (-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
Как это работаетКаждая строка словаря превращается в один 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, пробы SSTIwordlist/prompt.txt — попытки джейлбрейка, переопределения через ролевую игру, пробы извлечения системного промпта, маркеры косвенной инъекцииДобавляйте свои: одна полезная нагрузка на строку, # для комментариев. Полезные нагрузки отправляются на цель как есть, поэтому направляйте это только на системы, которые вам разрешено тестировать.
Отказ от ответственностиТолько для авторизованного тестирования безопасности и исследований. Вы несёте ответственность за получение разрешения, прежде чем направлять это на что-либо, чем вы не владеете.
БлагодарностиСообществу open-source безопасности — идеи полезных нагрузок и списки сигнатурlibcurl — выполняет всю тяжёлую работу с HTTPИсследование от
Vineeth Kumar(foxcornlab). Нашли баг или хотите новую функцию — откройтеissue.