发布于12月5日12月5日 利用AI提取Fofa历年漏洞查询语句 2024年9月8日马云惹不起马云 Tilt 前言 最近,我使用Rust 开发了一个基于管道的AI 助手,名为Qpipe。本文将演示我如何使用它来提取多年来所有与漏洞相关的资产的查询语句。 开源链接:https://github.com/Rvn0xsy/Qpipe 近日,智普开放了国内首个免费的大型模型API接口。我想知道我是否可以用它做点什么。我首先想到的就是梳理近两年披露的漏洞,首先从网络空间搜索引擎的语法入手。 特殊时期、通过特殊渠道披露的漏洞,一般都有[Markdown]格式的文档描述漏洞涉及的资产(查询语句),并附有PoC HTTP数据包。因此,唯一需要做的就是将文档喂给AI,让AI提取结构化查询语句。 AI提示 $ Qpipe -h 使用: Qpipe [选项] 选项: -c, --config FILE 设置自定义配置文件 -d,--调试 -h, --help 打印帮助 -V, --version 打印版本 首先将Qpipe下载到本地,然后编写具体的配置文件: model: 'glm-4-flash' api_key: 'API_KEY' url: 'https://open.bigmodel.cn/api/paas/v4/chat/completions' 服务器:'127.0.0.1:3000' process_group: - name: '文档搜索' cron:“现在” 提示: 您现在是数据提取专家,请在我提供的文档中找到“Fofa/fofa”下面的声明,并用漏洞标题对其进行总结。 输出格式如下: 标题漏洞标题/Title,Fofa声明/Fofa Stream: '/path/to/script.py' 编写交互式流 Stream实际上是一个与Qpipe通信的脚本。主要处理任务的逻辑都在这个脚本中。原则上,脚本是通过Qpipe定期启动的。 Qpipe会在后台启动一个http服务来接收数据并将其发送到AI接口。目前仅支持智能频谱。 #!/usr/bin/env python3 导入操作系统 导入请求 将pandas 导入为pd 网址='http://127.0.0.1:3000' GROUP_NAME='文档搜索' def send_msg(msg: str) - str: 响应=requests.post(f'{URL}/{GROUP_NAME}', data=msg) # 打印(响应.文本) 返回response.headers['进程ID'] def get_msg(process_id: str) - str: headers={'进程ID': process_id} 响应=requests.get(f'{URL}/{GROUP_NAME}', headers=headers) # 打印(响应.文本) 返回响应.文本 def list_files(path: str) - list: 文件=[] 对于os.listdir(path): 中的md 如果md.endswith('.md'): 文件.append(md) 返回文件 def get_query(file_path: str) - list: 打开(file_path,'r',编码='utf-8')作为file: 内容=文件.read() 如果“fofa”不在content.lower(): 中 返回[] process_id=send_msg(str(内容)) 结果=get_msg(process_id).split(',') 返回结果 如果__name__=='__main__': 路径='/path/to/Poc/Markdown' md_files=list_files(路径) 查询列表=[] 文件名='/tmp/output.csv' fp=open(文件名, 'w', 换行='') 对于md_files: 中的f 结果=get_query(file_path=os.path.join(path, f)) 如果长度(结果)==0: 继续 尝试: print(f'查询{f} - {结果[0]}: {结果[1]}') fp.write(f'{结果[0]},{结果[1]}\n') fp.flush() 除了: 继续 fp.close() 由于我不太擅长写提示,所以得到的结果不是很理想。有时AI提取生成的结果仍然有意想不到的内容: 不过,总体结果还是比较好的。为了提高质量,一方面需要优化配置文件中的Prompt,另一方面可以调用更强大的模型。 提取的语句位于此处:39ed264a2db15ec58fd13432d58c41e6 摘要 通过使用Qpipe,我处理了一个点赞数较高的仓库。总共过滤出了300多条Fofa查询语句,而且都是结构化的。当然,Qpipe不仅仅用于这么简单的事情。它还支持定时任务启动处理。我打算用它来做工作中的运营事务,至少可以过滤一些信息。 最后,Qpipe 有点像langchain 的低调版本,stream 充当具有特殊能力的Agent,赋予AI 处理任务的能力。未来langchain内置的一些提示可能可以作为参考来编写更强大的配置文件。 优化提示: #Role: 数据提取专家 ## 目标 您现在是数据提取专家,请在我提供的文档中找到“Fofa/fofa”下面的声明,并用漏洞标题对其进行总结。 ## 约束 严格按照格式输出,不需要其他多余的字符。 ## 技能 精通数据搜索和分析 ## 输出格式 Title{漏洞标题}/标题,Fofa{声明}/Fofa ## 工作流程: 1. 分析文档内容,总结漏洞标题。 2. 搜索Fofa 语句。如果没有找到,则声明为“None” 2.按照格式输出结果 最终结果:52387fbf6e951763bce08ac3735ff98f
创建帐户或登录后发表意见