Зловживання AI-агентами: локальні AI CLI інструменти & MCP (Claude/Gemini/Warp)
Tip
Вивчайте та практикуйте AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Вивчайте та практикуйте Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Підтримайте HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на github.
Огляд
Локальні command-line interfaces (AI CLIs), такі як Claude Code, Gemini CLI, Warp та подібні інструменти, часто постачаються з потужними вбудованими можливостями: читання/запис файлової системи, виконання shell-команд та доступ в зовнішню мережу. Багато з них діють як MCP-клієнти (Model Context Protocol), дозволяючи моделі викликати зовнішні інструменти через STDIO або HTTP. Оскільки LLM планує ланцюги інструментів недетерміновано, ідентичні підказки можуть призводити до різної поведінки процесів, файлів та мережі між запусками та хостами.
Ключові механіки, які спостерігаються в поширених AI CLI:
- Здебільшого реалізовані на Node/TypeScript з тонким обгортанням, що запускає модель та відкриває інструменти.
- Кілька режимів: інтерактивний чат, план/виконання та одноразовий запуск за підказкою.
- Підтримка MCP-клієнта з транспортами STDIO та HTTP, що дозволяє розширювати можливості як локально, так і віддалено.
Наслідки зловживань: одна підказка може інвентаризувати та exfiltrate credentials, змінити локальні файли та непомітно розширити capability підключенням до віддалених MCP‑серверів (прогалина у видимості, якщо ті сервери — третя сторона).
Плейбук нападника — інвентаризація секретів через підказку
Доручіть агенту швидко відсортувати та підготувати credentials/secrets для exfiltration, лишаючись непомітним:
- Масштаб: рекурсивно перераховувати під $HOME та каталогами додатків/гаманців; уникати шумних/псевдо шляхів (
/proc,/sys,/dev). - Продуктивність/стелс: обмежити глибину рекурсії; уникати
sudo/priv‑escalation; підсумувати результати. - Цілі:
~/.ssh,~/.aws, cloud CLI creds,.env,*.key,id_rsa,keystore.json, browser storage (LocalStorage/IndexedDB profiles), crypto‑wallet data. - Вивід: записати короткий список у
/tmp/inventory.txt; якщо файл існує, створити резервну копію з міткою часу перед перезаписом.
Example operator prompt to an AI CLI:
You can read/write local files and run shell commands.
Recursively scan my $HOME and common app/wallet dirs to find potential secrets.
Skip /proc, /sys, /dev; do not use sudo; limit recursion depth to 3.
Match files/dirs like: id_rsa, *.key, keystore.json, .env, ~/.ssh, ~/.aws,
Chrome/Firefox/Brave profile storage (LocalStorage/IndexedDB) and any cloud creds.
Summarize full paths you find into /tmp/inventory.txt.
If /tmp/inventory.txt already exists, back it up to /tmp/inventory.txt.bak-<epoch> first.
Return a short summary only; no file contents.
Розширення можливостей через MCP (STDIO і HTTP)
AI CLIs часто виступають як MCP клієнти для доступу до додаткових інструментів:
- STDIO transport (local tools): клієнт spawn-ить допоміжний ланцюжок для запуску tool server. Типовий ланцюжок:
node → <ai-cli> → uv → python → file_write. Приклад, що спостерігався:uv run --with fastmcp fastmcp run ./server.py, який запускаєpython3.13і виконує локальні операції з файлами від імені агента. - HTTP transport (remote tools): клієнт відкриває вихідне TCP-з’єднання (наприклад, порт 8000) до віддаленого MCP server, який виконує запитувану дію (наприклад, запис
/home/user/demo_http). На кінцевій машині ви побачите лише мережеву активність клієнта; операції з файлами на стороні сервера відбуваються поза хостом.
Notes:
- MCP tools описуються моделі й можуть автоматично вибиратися під час планування. Поведінка варіюється між прогоном.
- Віддалені MCP server-и збільшують blast radius і знижують видимість на хості.
Локальні артефакти та журнали (Forensics)
- Gemini CLI session logs:
~/.gemini/tmp/<uuid>/logs.json - Поля, що часто зустрічаються:
sessionId,type,message,timestamp. - Приклад
message: “@.bashrc what is in this file?” (зафіксований намір користувача/агента). - Claude Code history:
~/.claude/history.jsonl - Записи JSONL містять поля на кшталт
display,timestamp,project.
Pentesting віддалених MCP серверів
Віддалені MCP server-и відкривають JSON‑RPC 2.0 API, який фронтує LLM‑орієнтовані можливості (Prompts, Resources, Tools). Вони успадковують класичні вразливості веб‑API, додаючи асинхронні транспорти (SSE/streamable HTTP) та семантику на рівні сесій.
Ключові актори
- Host: фронтенд LLM/агента (Claude Desktop, Cursor, etc.).
- Client: конектор на кожен сервер, який використовує Host (one client per server).
- Server: MCP server (локальний або віддалений), що експонує Prompts/Resources/Tools.
AuthN/AuthZ
- OAuth2 поширений: IdP проводить автентифікацію, MCP server виступає як resource server.
- Після OAuth сервер видає authentication token, який використовується в наступних MCP запитах. Це відрізняється від
Mcp-Session-Id, який ідентифікує з’єднання/сесію післяinitialize.
Transports
- Local: JSON‑RPC over STDIN/STDOUT.
- Remote: Server‑Sent Events (SSE, still widely deployed) та streamable HTTP.
A) Ініціалізація сесії
- Отримайте OAuth token, якщо потрібно (Authorization: Bearer …).
- Розпочніть сесію та виконайте MCP handshake:
{"jsonrpc":"2.0","id":0,"method":"initialize","params":{"capabilities":{}}}
- Зберігайте повернутий
Mcp-Session-Idі додавайте його до подальших запитів відповідно до правил транспорту.
B) Перелічити можливості
- Інструменти
{"jsonrpc":"2.0","id":10,"method":"tools/list"}
- Ресурси
{"jsonrpc":"2.0","id":1,"method":"resources/list"}
- Промпти
{"jsonrpc":"2.0","id":20,"method":"prompts/list"}
C) Перевірки можливості експлуатації
- Ресурси → LFI/SSRF
- Сервер має дозволяти лише
resources/readдля URI, які він оголосив уresources/list. Спробуйте URI поза цим набором, щоб перевірити слабке застосування обмежень:
{"jsonrpc":"2.0","id":2,"method":"resources/read","params":{"uri":"file:///etc/passwd"}}
{"jsonrpc":"2.0","id":3,"method":"resources/read","params":{"uri":"http://169.254.169.254/latest/meta-data/"}}
- Успіх означає LFI/SSRF і можливе internal pivoting.
- Ресурси → IDOR (multi‑tenant)
- Якщо сервер multi‑tenant, спробуйте безпосередньо прочитати URI ресурсу іншого користувача; відсутні per‑user checks leak cross‑tenant data.
- Інструменти → Code execution and dangerous sinks
- Перелічіть tool schemas та fuzz parameters, які впливають на command lines, subprocess calls, templating, deserializers або file/network I/O:
{"jsonrpc":"2.0","id":11,"method":"tools/call","params":{"name":"TOOL_NAME","arguments":{"query":"; id"}}}
- Шукайте віддзеркалення помилок/stack traces у результатах, щоб уточнювати payloads. Незалежні тести повідомляли про поширені уразливості типу command‑injection та суміжні помилки в MCP tools.
- Prompts → Injection preconditions
- Prompts зазвичай розкривають лише метадані; prompt injection має значення тільки якщо ви можете змінити prompt parameters (наприклад, через compromised resources або баги клієнта).
D) Інструменти для перехоплення та fuzzing
- MCP Inspector (Anthropic): Web UI/CLI, що підтримує STDIO, SSE та streamable HTTP з OAuth. Ідеально підходить для швидкого recon та ручних викликів інструментів.
- HTTP–MCP Bridge (NCC Group): Надає міст між MCP SSE та HTTP/1.1, щоб ви могли використовувати Burp/Caido.
- Запустіть bridge, спрямований на цільовий MCP server (SSE transport).
- Виконайте вручну handshake
initialize, щоб отримати валіднийMcp-Session-Id(per README). - Проксіруйте JSON‑RPC повідомлення такі як
tools/list,resources/list,resources/readтаtools/callчерез Repeater/Intruder для replay та fuzzing.
Quick test plan
- Authenticate (OAuth if present) → run
initialize→ enumerate (tools/list,resources/list,prompts/list) → validate resource URI allow‑list and per‑user authorization → fuzz tool inputs at likely code‑execution and I/O sinks.
Impact highlights
- Missing resource URI enforcement → LFI/SSRF, internal discovery and data theft.
- Missing per‑user checks → IDOR and cross‑tenant exposure.
- Unsafe tool implementations → command injection → server‑side RCE and data exfiltration.
References
- Commanding attention: How adversaries are abusing AI CLI tools (Red Canary)
- Model Context Protocol (MCP)
- Assessing the Attack Surface of Remote MCP Servers
- MCP Inspector (Anthropic)
- HTTP–MCP Bridge (NCC Group)
- MCP spec – Authorization
- MCP spec – Transports and SSE deprecation
- Equixly: MCP server security issues in the wild
Tip
Вивчайте та практикуйте AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Вивчайте та практикуйте Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Підтримайте HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на github.
HackTricks

