写在前面📕
挖洞,轻而易举啊。
准备 🙌
cherry studio
SAST工具
MCP(可选)
快速开始 💕
Cherry Studio🍒
准备你的ai agent。请注意限定它的工作目录以及权限。我这里直接开放所有权限。


提示词如下:

现在你是网络安全专家。请你辅助我完成代码审计工作
MCP
ai agent在读doc文件这一块显得很吃力。我配置了一个方便ai agent读文件的MCP工具:
主要代码如下:
@expose_tool(
name="read_docx_file",
description="读取本地 .docx 文件的文本内容。支持读取段落文本,不包含复杂的格式信息。"
)
def read_docx_file(file_path: str) -> str:
"""
参数:
file_path (str): .docx 文件的绝对路径或相对路径。
返回:
str: 文件中的所有文本内容,按段落换行。
"""
try:
# 1. 检查文件是否存在
if not os.path.exists(file_path):
return f"错误: 文件不存在 - {file_path}"
# 2. 检查是否为 docx 后缀 (简单的检查,防止误读二进制文件)
if not file_path.lower().endswith(".docx"):
return "警告: 文件扩展名不是 .docx,本工具仅支持 .docx 格式。如果是旧版 .doc 文件,请先在 Word 中另存为 .docx。"
# 3. 读取文档
doc = Document(file_path)
# 4. 提取所有段落的文本
full_text = []
for para in doc.paragraphs:
if para.text.strip(): # 忽略空行,也可以改为保留空行
full_text.append(para.text)
# 5. 如果没有内容
if not full_text:
return "该文档似乎是空的,或者内容无法提取(例如内容全在表格或图片中)。"
return "\n".join(full_text)
except Exception as e:
# 捕获特定的错误,比如如果不是有效的 zip/docx 文件
error_msg = str(e)
if "BadZipFile" in error_msg or "not a zip file" in error_msg:
return "错误: 文件损坏或不是有效的 .docx 格式。如果是 .doc 文件,请先转换为 .docx。"
return f"读取文件时发生错误: {error_msg}"
具体的MCP服务器框架见上一篇文章
MCP配置:

正文
现在可以使用ai agent进行代码审计了。
- 首先使用SAST工具生成一个漏洞报告。我这里使用ChanziSAST

- 让ai解读你的报告。正文如下:

我为你配置了有关DOCX阅读的MCP工具。现在请你阅读""C:\.xxx\xxxxxxxx\xxxxxxxxx.docx""这篇由SAST工具生成的报告,然后验证其中的漏洞是否为误报
生成结果如下:

验证漏洞
然后就是坐享其成的时候了。验证漏洞即可。
