用AI做站点信息收集和精确定向渗透

· 约 6 分钟 · 开发 · 阅读 23 · 访客 22

本期内容包含AI提示词与注意力机制的分析,如果你对工具本身不感兴趣,可快进到“正在寻找无尽能源”章节

一把梭智能与人在回路的取舍

去年,2025年,也就是deepseek v3迭代改进的那年,国内模型的渗透能力应该没有那么火热;但是今年不一样,deepseek v4在开源渗透harness中的表现已经足够对网站系统的安全性进行初步测试了

AI能不能自主对网站进行全面测试呢?也许行,可能也不行,测试是否全面,哪些功能需要重点测,哪些功能需要小心测,遇到WAF要采取什么策略,以及基于业务评判的漏洞标准该怎么定,这些都是AI全流程自主渗透必须解决的问题

对于人类来说,作为渗透测试工程师,我们对网站系统有自己不可言传的理解,这些理解与人类的生存环境、生活方式、处事原则、心理状态,甚至接活的时候项目经理的语气、表情、急急急的程度都会干预我们对一个网站系统的整体认知

牢大,我们AI能自己理解这些吗?what can i say?如果我们把这些理解、条件全都套到AI提示词里面,那AI的自主性又在哪里?本质还是照着人类的意思干活,只是AI成为了人的“手”,帮人做一些烧脑的、操作性质的工作,而且人还得盯着,避免AI疯狂输出,测完才发现“用户禁止我向系统写入数据,我的操作创建了一个测试记录,必须如实向用户汇报”

当然AI本身的知识面通常比一个人要大,AI的思维能力也足够做具体的工程工作;比如做二进制技术分析、漏洞挖掘,人可以把想知道或者想要做的事情告诉AI,AI帮你弄弄,避免人在实操过程中耗尽精力

柯洁说过,不想干的事情就别干(一会我去他直播间刷礼物让他说)。目前AI最擅长的事情还是做一些不乏灵活性的机械重复劳动,主要是填补纯工具和纯人类中间组成的固定工作流中间某个工具人节点的空白,这种事情纯工具做不到(或成本太高),纯人类太浪费,那就AI来做

AI干嘛

网站信息收集是有固定套路的,现成的工具也很多,那我们要AI干嘛?

现有的工具能把网站的所有API接口一字不漏抓取(大部分前后端分离的网站),但是这是工具能覆盖的场景,当工具不能覆盖的时候,就要改工具的代码;而且,工具不能告诉你这个API接口的功能和用法,这些还需要人亲自下场

关于接口的功能和用法,这就是“固定工作流中的工具人节点”,工具做不到、人类做太累太耗精力

既然都让AI做了,那不妨让AI多做一些,当AI抓完所有API接口之后,AI对站点的API路径命名规则会有个全面的理解,这时我们也不要浪费它,继续让AI生成路径爆破字典,再智能先进的武器也离不开一秒六棍的真理

既然AI已经多做一点了,那不妨让AI多做一点,现在AI已经掌握网站所有的API接口和功能,那顺便让AI基于自己的训练数据,从这个功能引申一下可能存在哪些测试面吧,虽然对人类来说可能这个功能微不足道,但是有时也能起到提示的作用

正在寻找无尽能源

这次的AI harness设计是这样的

虽然AI工作流是固定的,但是我在每个阶段给了AI最大的自由度,给AI发布任务是结果取向的,只是告诉AI需要做网站的功能模块识别,找出这个网站的功能,并将这些功能分成多个模块;AI提交模块信息后,由代码发起AI子Agent,对每个模块发起API枚举和功能梳理;最后根据现有的API接口风格创建扫描字典,组合历史路径信息数据库进行最后一轮路径扫描探测

其实我很变态的,我这里让AI做的事情相对模糊,只是让AI做全面的模块收集、做全面的API收集,但是怎么收集、怎么样算全面、哪些功能算同一类这些事情都没有标准。CyberstrikeAI的提示词里面列举了常见的漏洞类型,我这里却没有列举常见的功能模块;就像我让陌生人帮我买杯咖啡,我不说我想喝什么,我也不告诉你更多信息,陌生人要猜我今天想喝什么——其实并非变态,而是我自己也不知道附近有哪些咖啡店,我也不知道附近的咖啡店哪些咖啡好喝,只是对于腼腆的陌生人来说这是大难题,因为我已经闭口不谈了,陌生人没有机会了解代买咖啡行业的规范,也没有机会了解我的验收偏好

相比于模糊的目标,AI认为例子的信号是具体而强烈的,比如你让AI做渗透测试,渗透测试的产出是一系列漏洞,漏洞类型很多、测试方式也很多,从完成任务的角度来说,切入点非常多,这是比较泛的一件事情;一旦提示词里面写了“例如SQL注入、XSS漏洞等”,AI:“卧槽!很清晰、很明确,这就是渗透的真谛!”,模型注意力更偏向于绑定一条具体的路径,很难去探索抽象的、不确定能否落地的事情

所以我避免在提示词中“教AI做事”,但是这样也会出现新的问题,那就是模型不确定自己要做什么,它的注意力容易被任何事情吸引

在这次的工程实践中,AI在模糊的指令中容易形成无效的循环工具调用问题,这就是模型无法对模糊提示词产生集中的注意力,最终导致其注意力被循环的、无效的信息吸引,产生不正常的注意力坍缩问题

那咋整呢?信息收集这种事情,每个网站的功能数量、业务类型都不太一样,给不出很明确的结束条件

既然AI是因为注意力不在目标上导致的死循环,那就要想办法让AI的注意力回到目标上

我现在的做法是,AI连续工具调用多次之后,让AI汇报当前目标、目前进度、下一步打算以及遇到了什么困难,实测可以有效缓解循环调用工具问题,而且AI可以自己根据当前情况决定目标,增强了AI的自主性、减少人工干预

这个做法确实可以有效避免AI陷入死循环,但是有时死循环发生在工具调用失败的情况下,AI提交的格式不对,工具报错信息只提示格式不对,但是没有具体的位置、也没有下一步建议,结果AI就不断用错误的格式重试,又陷入死循环;此时AI的目标是明确的,让AI进行汇报也没办法(因为AI目标就是调用工具然后结束工作),这时就需要细化报错信息,让AI注意到语法错误的位置,AI才能改好格式调用工具

最后测出来效果差不多这样,这是前后端分离站点的结果,感觉还是挺完整的

下面这是一个传统aspx站点的结果,除了登录页面啥也访问不了;能摸到这个程度也还行,起码人看到这个结果也能想到下一步要用字典去跑,给后续提供了个思路

好!以后上班就用这个

查找文章

↑↓ 选择 · Enter 打开 · Esc 关闭 查看全部结果