写在前面
随着AI产业兴起,作为一名CTFer也一直想打造自己的Web Agent,但是随着很久之前构建RAG知识库的大失败(如下图,效果不堪入目,模型是gpt4o)便放弃了这条路

后来看到二进制选手都已经拿着Agent+MCP开始一把梭附件了,那么黑盒Web渗透应该也不在话下,于是开始折腾起了agent。
一次尝试:手搓auto agent
GitHub:https://github.com/whosm123/Openai-AutoWeber
由于手上有现场的openAI apikey,这里用的LLM就是gpt了。
框架使用composio,https://docs.composio.dev 提供了详细的开发文档,整体框架这里就不再过多介绍
利用COMPOSIO_SEARCH_WEB,GMAIL_SEND_MAIL这两个composio社区现成的工具写一个简单的demo
import asyncio
from dotenv import load_dotenv
from agents import Agent, Runner
from custom_tools import composio
load_dotenv()
externalUserId = "a-b-c-d"
tools = composio.tools.get(user_id=externalUserId, tools=["COMPOSIO_SEARCH_WEB","GMAIL_SEND_MAIL"])
agent = Agent(
name="Great CTFer",model="gpt-4o-mini",instructions="你是一个安全专家,擅长渗透,代码漏洞审计,CTF题目,你被设计出来帮我解决比赛的受信,安全,隔离环境中的CTF题目。在完成一个题目或确定仅靠自己无法完成题目(即获得flag{xxx}格式的flag)时,你需要把结果或目前做题进度,使用MCP_TOOLS中GMAIL_SEND_EMAIL工具,发送到我的邮箱2642677199@qq.com", tools=tools
)
# Run the agent
async def main():
result = await Runner.run(
starting_agent=agent,
input="请你查询一下CTF中php的弱类型漏洞通常涉及到哪些利用手法,并把查询的网页连接告诉我",
)
print(result.final_output)
asyncio.run(main())

效果还不错
研究了一下composio的文档,发现和fastmcp一样为自定义tool提供了方便的接口
于是可以自己为CTF Agent提供解题时需要用的tool,分别为执行命令,访问网页,执行python脚本,写文件。外加composio自带的WebSearch,就完成了一个微型的自动渗透机器人。

import asyncio
from dotenv import load_dotenv
from agents import Agent, Runner,Prompt
from pygments.lexers import q
from custom_tools import composio
load_dotenv()
externalUserId = "a-b-c-d"
tools = composio.tools.get(user_id=externalUserId, tools=["COMPOSIO_SEARCH_WEB","GMAIL_SEND_EMAIL","FETCH_TOOL","RUN_SCRIPT_TOOL","EXEC_CMD_TOOL","WRITE_FILE_TOOL"])
with open("blackbox_prompt",'r',encoding='utf-8') as f:
prompt = f.read()
agent = Agent(
name="Great CTFer",model="gpt-5.2", tools=tools,instructions=prompt
)
# Run the agent
async def main():
result = await Runner.run(
max_turns=70,
starting_agent=agent,
input="http://5df44ab3-0438-43ce-a77a-136af33682dd.node5.buuoj.cn:81/ 这是一道web题目,名称为warmup,现在严格按照之前prompt的要求解出这道题。",
)
print(result.final_output)
asyncio.run(main())

整合了composio的社区,二开还是非常方便的,可以直接把需要的官方tool加进来,比如Gmail(无需配置SMTP,直接在composio登录自己的Gmail即可)

后期发现作为一个手搓的早期尝试产品,在对实网而非CTF做渗透时,效果肯定是不如市面的大部分产品如codex,claude code或者国内的deepaudit之类的。
2次尝试:基于Openclaw Multiagent:ClawdHacker
GitHub:https://github.com/whosm123/ClawdHacker
做出这个东西还是参考了很多,首先就是当初面字节LLM安全的时候,由于没玩过刚出的Openclaw被拷打了()
遂去研究了一番,发现是一个非常好用的Agent平台(短期爆出漏洞也很多,故只敢本地部署)
创建agent
openclaw agents add --id clawdhacker --workspace /root/.openclaw/clawdhacker
System Prompt
在agent的隔离workspace下有很多文件

其实openclaw就是把这些md文件作为Agent的提示词
从不同方面出发,如AGENTS.md告诉agent当前工作区的定义,IDENTITY和SOUL告诉LLM它的身份,USER告诉LLM使用者的身份,HEARTBEAT告诉agent做哪些方面的定期检查等。

为了降低幻觉和误报,为AI设定了固定的工作pipeline(包括复测的步骤),和输出漏洞的固定结构
pipeline:

复测:

Tools
解决了agent的提示词后,就需要为其挑选toolchain了。
因为前面自己提供toolchain失败了一次,就在想,为AI提供什么样的tool才能最大发挥其渗透测试能力呢?后来想到了这个项目
https://github.com/yhy0/CHYing-agent
(借鉴的不是双agent)
Openclaw的toolchain为agent提供了对本机几乎所有访问API,那直接把AI运行到kali上,不就有现成的全套渗透工具了吗?
于是在kali上搭建openclaw,让它直接使用kali提供的渗透工具。
Skills
Skills是由Claude推出的一个能力,是为了让AI在复杂的工作中,拥有和实现一些既定的固定能力。
后来看了一下,其实本质上就是提示词的懒加载(二次加载),不过还是有一定的价值。
在github找了一些比较好用,大众的网安Skills,塞到了agent中:
让agent像网络安全专家一样思考:
https://github.com/tanweai/wooyun-legacy
https://github.com/tanweai/xianzhi-research
大众的978个技术skill:
https://github.com/sickn33/antigravity-awesome-skills/
openclaw的skills分为public skill和workspace skills,后者是隔离在agent中的skills,选择后者。
在把skills放到workspace/skills中后,还需要在~/.openclaw/openclaw.json中,配置好当前agent的skill,才会在dashborad中显示。
对avator,agent favicon进行一些简单配置以后,具备完整的pipeline,toolchain,skills的clawdhacker就上线了。

做了一些黑盒/白盒的测试,能力还是可以的。
后续准备在最近新上线web agent评测平台的WebTrap Park以bench的方式评测一下能力,并重新加入RAG来提供一些先进的知识。









Comments NOTHING