利用LLM加速漏洞挖掘:我是如何在Scada-LTS中发现StoredXSS并拿到人生第一个CVE的

admin 2026-02-08 01:16:43 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文讲述了作者使用ChatGPT5和GitHubCopilot组合加速漏洞挖掘的过程。作者针对Scada-LTS系统,通过Semgrep初筛并结合LLM进行分析与验证,仅用约3小时便发现了3个存储型XSS漏洞,成功申请到CVE编号。文章展示了LLM在减少噪音、聚焦问题及加速研究流程方面的显著优势,提出了人工与LLM结合的高效安全审计新范式。 综合评分: 90 文章分类: 渗透测试,漏洞分析,AI安全,WEB安全,漏洞POC


cover_image

利用 LLM 加速漏洞挖掘:我是如何在 Scada-LTS 中发现 Stored XSS 并拿到人生第一个 CVE 的

haidragon haidragon

安全狗的自我修养

2026年2月6日 14:54 湖南

官网:http://securitytech.cc



📌 引言

我最初是在准备一份关于漏洞挖掘的培训材料。与其只做 PPT、用传统工具,我决定做一次真实实验,使用我最喜欢的一些大语言模型(LLMs)

具体来说,我组合使用了 ChatGPT 5 + GitHub Copilot。目标是看看这些工具在真实世界漏洞的初筛、分析与利用流程中,究竟能加速多少。

结果非常惊人: 原本需要我几天做的人工审计、静态分析和动态测试,我在大约 3 小时内完成了。

期间我在 Scada-LTS 中验证了 3 个 Stored XSS 漏洞,提交到 VulDB,并最终注册为 CVE。这对我来说也是一个里程碑:我的第一个 CVE。


🔧 Fork Scada-LTS 与 Semgrep 初步筛选

实验的起点是从 GitHub fork Scada-LTS 项目。

Scada-LTS 是一个用于工业环境的开源 SCADA / ICS 平台,非常适合作为测试对象。Fork 完成后,我把代码库接入了 Semgrep —— 一个能够高亮不安全编码模式的静态分析工具。

Semgrep 标出了多个热点位置,包括:

  • XML 解析器中的潜在 XXE
  • JavaScript 中不安全的 innerHTML
  • Java 中的路径遍历
  • 拼接格式化 SQL 字符串

这些都是非常适合深入分析的候选点。

与其手动逐条检查,我直接把这些标记行作为入口,交给 ChatGPT 继续深入分析。

点击查看大图

Semgrep 输出的潜在问题位置


💻 ChatGPT 连接终端环境

我在 macOS 上配置了 ChatGPT 5 App,并让它直接连接我的终端(MacOS App 的一个特性)。终端中运行的是 Kali Linux,但不是原生,而是通过 Exegol 容器环境模拟。

Exegol 配合 Orb 栈提供编排支持,能够快速启动,具备:

  • 加速网络
  • Rosetta x86 模拟
  • VirtioFS 文件共享
  • 多项性能优化

这让我在 ARM 主机上也能得到近似原生性能的 x86_64 Kali。

点击查看大图

Exegol Kali x86_64 启动


通过这种集成方式,我可以直接让 ChatGPT:

  • 给出终端命令建议
  • 查找代码引用
  • 解析输出结果
  • 将 Semgrep 命中点与真实代码路径关联

整个流程是迭代式的: Semgrep → ChatGPT → 精准搜索 → ChatGPT 再分析。

其中一个效率提升点是:我用 ripgrep 替代了 grep。

ripgrep 的优势:

  • 默认递归
  • 自动跳过 .gitignore
  • 速度更快
  • 高亮更清晰

这样可以在几分钟内,把成千上万行结果过滤成少量热点。

ChatGPT 直接检查终端输出


🤝 ChatGPT + Copilot 组合拳

ChatGPT 用来引导调查与提出假设,而 GitHub Copilot 则非常适合做验证工作

Copilot 可以访问整个仓库的上下文,帮助确认 Semgrep 标出来的路径:

  • 是否真的可利用
  • 还是只是误报

例如 Copilot 确认:

虽然 XML 中允许 DOCTYPE,但外部实体被禁用,因此远程 XXE 不太可能,但仍可能触发 Billion Laughs DoS

这种组合方式:

ChatGPT 探索 + Copilot 验证

极大加速了分析。

点击查看大图

使用 Copilot 进行二次确认


🔍 填充应用数据并验证漏洞

定位完热点之后,就要进入动态测试阶段。

问题是:Scada-LTS 需要大量配置数据才能正常跑起来,手动填会花好几个小时。

借助 ChatGPT Agent Mode,我查到了一个可以直接导入的示例项目,可以快速填充真实数据点、事件和报表。

导入后,我开始系统性测试字段。

第一个成功的利用点来自:

data_point_edit.shtm

Payload:

<imgsrc=xonerror=alert(1)>

我在 Data Point Name 字段实现了 Stored XSS。

随后又在:

  • Data Source Edit
  • Reports 模块(Colour 字段)

发现了第二、第三个漏洞。

每个都能成功弹窗。

这验证了 Semgrep 最初发现的:

  • 不安全 innerHTML
  • 未转义 JSP 表达式

确实可以被利用。

点击查看大图

漏洞验证成功


🆔 从 VulDB 到 CVE

为了正式发布漏洞,需要和 CVE Numbering Authority(CNA) 合作。

CNA 是由 CVE.org 授权的机构,负责验证漏洞并分配 CVE ID。

如果厂商没有自己的 CNA,可以使用独立 CNA,例如 VulDB 或 MITRE。

我选择了 VulDB,因为它:

  • 稳定
  • 分析可信

流程非常清晰。

发布流程如下:

  1. 提交报告:向 VulDB 提交完整漏洞文档。
  2. 验证确认:检查影响、重复性、标准符合度,并进行厂商协调披露。
  3. 分配 CVE:其中三个漏洞合并后生成 CVE-2025-10234、CVE-2025-10235
  4. 公开登记:VulDB 提交到 CVE.org 公布。

点击查看大图

VulDB 控制台


⏱ 时间线与总结

整个流程:

Semgrep&nbsp;→ ChatGPT/Copilot → 利用 → CVE 注册

总共只用了 约 3 小时。 而传统方式通常需要好几天。

这个实验说明:

LLM 并不是取代人类,而是在放大人的能力

它们可以:

  • 减少噪音
  • 聚焦真正问题
  • 加速研究流程
  • 提高质量
  • 节省时间去打游戏 🎮

🧠 总结一句话

以前:人工 + 工具 现在:人工 × LLM

  • 公众号:安全狗的自我修养
  • vx:2207344074
  • http://gitee.com/haidragon
  • http://github.com/haidragon
  • bilibili:haidragonx

#


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:安全狗的自我修养 haidragon haidragon《利用 LLM 加速漏洞挖掘:我是如何在 Scada-LTS 中发现 Stored XSS 并拿到人生第一个 CVE 的》

评论:0   参与:  0