
KI-Chatbox-Pentesting-Tool in C: feuert Sprach-Payloads (SQLi/NoSQL/XSS/SSTI) und Prompt-Injection-Payloads auf Chat-Oberflächen ab und markiert diejenigen, die anschlagen
thc-BloodMiamiAI-Chatbox-Pentesting-Tool, geschrieben in C. Feuert language- (SQL/NoSQL/XSS/SSTI) und prompt-Injection-Payloads auf eine Chat-Schnittstelle ab und markiert diejenigen, die anschlagen — DB-Fehlermeldungen, reflektierte Script-Marker, Modell-Jailbreak-Signale. Schnell, threaded, auf libcurl basierend.
Was es tutLanguage injection (-i L) — SQLi-, NoSQL-, XSS-, JS-Injection-Probes; gleicht die Antwort mit Fehler-/Signaturlisten ab (mysql_fetch_array, ORA-01756, <script>, onerror=, ...)Prompt injection (-i P) — Jailbreak-/Prompt-Override-Probes; bewertet Treffer als Low (Modellverwirrung), Medium (möglicher Bypass), Critical (Jailbreak-Signal)Threaded-Sender — einstellbare Parallelität (-c, Standard: 10)Custom headers, user-agent, timeouts, verbose-Modus, Ergebnisse in Datei (-o)wordlist/language.txt, wordlist/prompt.txtBuildgit 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
Verwendung# 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
Wie es funktioniertJede Zeile des Wörterbuchs wird zu einem POST (Content-Type: application/json), wobei der Payload in einen JSON-Body im Chat-Stil eingebettet wird. Der Response-Body wird auf Folgendes geprüft:
SQL-Fehler — mysql_fetch_array, ORA-01756, Unclosed quotation mark, PostgreSQL query failed, ...NoSQL-Fehler — MongoError, BSONObj, WriteResult, ...XSS-Marker — <script>, javascript:, onerror=, document.cookie, ...JS-Fehler — SyntaxError, ReferenceError, eval(, ...HTTP 5xx — markiert als möglicher durch Injection ausgelöster ServerfehlerPayloads werden vor dem Einbetten JSON-escaped, damit Anführungszeichen/Backslashes im Wörterbuch den Request-Body nicht beschädigen können. Die TLS-Verifikation ist absichtlich deaktiviert (CURLOPT_SSL_VERIFYPEER=0) — dies ist ein Testtool, setze es nur auf Lab-/autorisierten Zielen ein.
Payload-Wörterbücherwordlist/language.txt — SQLi (UNION, error-based, time-based), NoSQL-Operatoren, XSS-Vektoren, SSTI-Probeswordlist/prompt.txt — Jailbreak-Versuche, Rollenspiel-Overrides, System-Prompt-Extraktions-Probes, Marker für indirekte InjectionFüge eigene hinzu: ein Payload pro Zeile, # für Kommentare. Payloads treffen das Ziel unverändert, richte dies also nur auf Systeme, die du testen darfst.
HaftungsausschlussNur für autorisierte Sicherheitstests und Forschung. Du bist dafür verantwortlich, die Erlaubnis einzuholen, bevor du dies auf etwas richtest, das dir nicht gehört.
DanksagungDie Open-Source-Sicherheitscommunity — Payload-Ideen und Signaturlistenlibcurl — erledigt die gesamte schwere HTTP-ArbeitRecherche von
Vineeth Kumar(foxcornlab). Bug gefunden oder Feature-Wunsch? Öffne einissue.