ClawdHacker——个人对Web Agent的一些探索和开发

发布于 1 小时前  5 次阅读


写在前面

随着AI产业兴起,作为一名CTFer也一直想打造自己的Web Agent,但是随着很久之前构建RAG知识库的大失败(如下图,效果不堪入目,模型是gpt4o)便放弃了这条路
image_mak
后来看到二进制选手都已经拿着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())

image_mak

效果还不错

研究了一下composio的文档,发现和fastmcp一样为自定义tool提供了方便的接口

于是可以自己为CTF Agent提供解题时需要用的tool,分别为执行命令,访问网页,执行python脚本,写文件。外加composio自带的WebSearch,就完成了一个微型的自动渗透机器人。

image_mak

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())

image_mak

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

image_mak

后期发现作为一个手搓的早期尝试产品,在对实网而非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下有很多文件

image_mak

其实openclaw就是把这些md文件作为Agent的提示词

从不同方面出发,如AGENTS.md告诉agent当前工作区的定义,IDENTITY和SOUL告诉LLM它的身份,USER告诉LLM使用者的身份,HEARTBEAT告诉agent做哪些方面的定期检查等。

image_mak

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

pipeline:

image_mak

复测:

image_mak

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 skillworkspace skills,后者是隔离在agent中的skills,选择后者。

在把skills放到workspace/skills中后,还需要在~/.openclaw/openclaw.json中,配置好当前agent的skill,才会在dashborad中显示。

对avator,agent favicon进行一些简单配置以后,具备完整的pipelinetoolchainskills的clawdhacker就上线了。

image_mak

做了一些黑盒/白盒的测试,能力还是可以的。

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

A web ctfer from 0RAYS
最后更新于 2026-03-09