安全攻防
morning
从“环境地狱”到“反杀大模型”:VulnClaw 源码级修复与 Pentest-AI 对抗实录
摘要
引言:AI 渗透 Agent 的“塔西佗陷阱” 随着大语言模型(LLM)在网络安全领域的垂直落地,自动化渗透工具正在经历一场从“规则驱动”向“意图驱动”的深刻变革。从早期的简单脚本拼接,到如今基于 ReAct(Reasoning and Acting)框架的复杂 Agent,AI 在漏洞挖掘、资产测绘和红蓝对抗中展现出了惊人的潜力。 然而,在真实的攻防场景中,安全研究员面临的最大阻碍并非“AI 能...
LLM
PTAI
Agent
Pentest
RCE
vulhub
VulnClaw
Python
ThinkPHP
git
2026-11-11
1 阅读
约10分钟阅读
先知社区
字号:
引言:AI 渗透 Agent 的“塔西佗陷阱” 随着大语言模型(LLM)在网络安全领域的垂直落地,自动化渗透工具正在经历一场从“规则驱动”向“意图驱动”的深刻变革。从早期的简单脚本拼接,到如今基于 ReAct(Reasoning and Acting)框架的复杂 Agent,AI 在漏洞挖掘、资产测绘和红蓝对抗中展现出了惊人的潜力。 然而,在真实的攻防场景中,安全研究员面临的最大阻碍并非“AI 能不能用工具”,而是“AI 得出的结论到底可不可信”。大模型的“幻觉(Hallucination)”在渗透测试中是致命的缺陷。由于 LLM 本质上是基于概率的下一个词预测模型,它极容易受到上下文暗示或碰巧出现的字符串的影响,从而产生假阳性(False Positive)。例如,目标服务器的响应头中碰巧包含了一个 admin 字符,大模型可能就会兴奋地向你报告“已发现未授权越权访问”。 为了跨越这道信任鸿沟,业界目前的 AI 渗透工具走向了两条截然不同的工程化演进路线: 1. VulnClaw(轻量级 Agent 路线): 强调大模型的主体地位。它引入了严格的“字符级证据闸门(Evidence Gate)”,强制大模型的每一个结论都必须在真实的工具输出(如 HTTP 报文、Python 执行 stdout)中逐字符命中。如果没有命中,结论就会被丢弃。 2. Pentest-AI(重型编排器路线): 强调底层工具的安全性与确定性。它内置了严格的 “Oracle 机器重放机制”,结合底层庞大的外部工具库(如 Nuclei、SQLMap),将漏洞结论分为 candidate(候选)、verified(已验证)和 refuted(已拒绝)三种状态。 作为一个深耕安全领域的从业者,我不仅想体验这两款工具的表面功能,更想探究它们的底层逻辑。本文将基于 Windows 11 环境,从零开始搭建这两套环境,深入 ThinkPHP 靶场实战,并通过阅读 Python 源码亲手修复 VulnClaw 的 0-day 崩溃 Bug。最后,我将运用红队思维,主动构造一个充满“假证据”的诱饵靶场,用精心设计的 Prompt 注入去攻击它的反幻觉机制,看看谁才是最后的赢家。 一.靶场准备与环境初探 一切的实战都建立在可复现的环境之上。我们首先利用 Docker 快速拉起 Vulhub 的 ThinkPHP 5 RCE 经典靶场。 git clone https://github.com/vulhub/vulhub.git cd vulhub\thinkphp\5-rce docker compose up -d 分析:看到这张经典的“十年磨一剑 - 为API开发设计的高性能框架”默认页面,说明靶场环境已经成功就绪。页面底部隐约露出了 V5.0.x 的版本特征,这正是后续触发 RCE 漏洞的基石。 在让 AI 动手之前,我们必须先手动验证漏洞的真实性,以确立评测的基准线。 分析:通过手动构造经典的 invokefunction payload,成功触发了 phpinfo 的回显页面。不仅看到了详细的 PHP 7.2.31 环境信息,也证明了这个 RCE 漏洞极其完美,无任何 WAF 拦截。这是我们后面用来测试 AI 是否“睁眼瞎”的最佳靶子。 二.对照组首战:Pentest-AI 的“重装困境”与水土不服 我们首先测试被寄予厚望的 Pentest-AI(以下简称 PTAI)。通过 pipx install ptai 安装后,我们对其发起扫描。 2.1 极度依赖外部武器的“包工头” PTAI 的启动非常直接,但在第一次运行时,它遭遇了严重的“火力不足恐惧症”。 分析:一上来,PTAI 的 Planner(规划器)就弹出了 Preflight 检查,要求安装包括 sqlmap、nuclei 在内的 17 个外部工具。如果在 30 秒内不按 Y 确认,它会默认拒绝安装并继续。这说明 PTAI 的架构极度依赖外挂的二进制文件,它本质上是一个调度器(Orchestrator)。 由于网络原因,我没有让它在线拉取这些工具,直接按了超时。接下来看看它在“手无寸铁”时的表现: 分析:结果惨不忍睹。Findings: 5 INFO: 4 LOW: 1。终端打出了一句极其扎心的黄字警告:LLM-driven path produced no findings; ptai escalated to the orchestrator pipeline (recon -> probes -> chain)... try Claude for better LLM-driven coverage。 这句话信息量巨大:第一,它宣称大模型没发现东西;第二,它只好退回到传统的规则管线;第三,它官方居然甩锅,暗示我们用的模型(试图接入的 DeepSeek)不如 Claude 聪明。这侧面印证了 PTAI 对非原生模型的支持极差。 2.2 细节透视:没有工具能扫出什么? 为了看清这 5 个漏洞的真面目,我们执行 ptai findings 57219ed7。 分析:看看它扫出了什么?Missing security headers、robots.txt 暴露、server-status 路径发现、以及泄露了 X-Powered-By 响应头。全都是低危和边缘信息。这个结果清晰地表明:如果没有 Nuclei/SQLMap 等实打实的武器库,仅靠纯规则扫描,它完全错过了高危的 RCE 漏洞。 三.主角登场:VulnClaw 的轻量级穿透与源码级 Debug 告别笨重的 PTAI,我们来看看主打轻量级 Agent 的 VulnClaw。VulnClaw 无需依赖繁杂的外部工具,它内置了 fetch 等基础能力,完全依赖大模型的思考和手搓 Payload。 3.1 首次扫描与工具降级 我们先跑一次基础的 scan 命令。 vulnclaw scan http://127.0.0.1:8080 分析:开局不顺。日志显示 [!] nmap 未安装或不在 PATH 中。这导致 nmap_scan 工具失败,系统触发了诊断机制(tool-health)。由于工具健康度下降,Agent 认为继续盲目探测风险较高,直接提前结束了任务。这也是 Agent 的一种安全防御机制,防止在工具不可靠时产生假阳性。 3.2 惊艳的 solve 模式与反幻觉闸门 为了强行挖掘,我改用了它的高级引擎 solve 模式,让它自己去思考怎么打。 vulnclaw solve http://127.0.0.1:8080 --goal "Find ThinkPHP RCE and output phpinfo" --stream 这一次,VulnClaw 展现了什么是真正的 Agent! 分析:请仔细看这个决策链路。它先通过 fetch 抓取首页(存为 [evidence:e003]),从中提取了 ThinkPHP V5 的特征。然后,它直接生成了 http_probe_batch,精准构造了带有 invokefunction 的 Payload,一击命中,并将返回的 phpinfo 响应存为 [eviden
这篇文章对您有帮助吗?
订阅66必读
每日精选科技资讯,直达你的邮箱