此仓库包含一个 Python 脚本,演示了 Swagger UI 中跨站脚本 (XSS) 漏洞的概念验证 (PoC),使用了 Selenium 库。本 PoC 的目标是通过利用包含恶意负载的 Swagger UI 来识别易受此漏洞影响的网站。
Swagger UI 是一款广泛使用的工具,用于通过友好的用户界面来查看和与 API 交互。然而,在 2.9.2 版本中,发现了一个跨站脚本 (XSS) 漏洞,攻击者可能利用该漏洞向加载的 Swagger UI 页面中注入恶意 JavaScript 代码。
当应用程序在将用户输入的数据显示到页面之前未进行充分验证时,就会发生 XSS。在这种情况下,攻击者可以通过在 Swagger UI 的输入字段中插入恶意 JavaScript 代码来利用该漏洞,这些代码将在访问同一被攻击页面的其他用户的浏览器上下文中执行。

注意: 上图展示了一个示例,说明攻击者如何利用受影响版本中的安全漏洞,在 Swagger UI 中插入 XSS 负载。
缓解此漏洞最有效的方法是确保 Swagger UI 已更新到不受影响的版本。请查看最新版本的 Swagger UI 并始终保持更新。
对于希望使用或自定义 Swagger UI 的开发者来说,至关重要的是在将输入数据显示到界面之前对其进行正确的验证。避免直接渲染用户输入的 HTML 或 JavaScript 是预防 XSS 漏洞的推荐做法。
以下是一个简化的示例,说明如何利用 Swagger UI 的漏洞:
http://127.0.0.1:8080/swagger-ui.html?configUrl=https://xss.smarpo.com/test.json本节仅用于教育和信息目的。请勿鼓励或参与恶意或非法活动。报告漏洞时请始终遵循负责任的披露实践。
在运行脚本之前,请确保已安装以下前置条件:
pip install selenium
将此仓库克隆或下载到你的机器上。
编辑 sites_para_testar.txt 文件,输入你想要测试的网站 URL,每行一个。
在仓库文件夹中打开终端,并使用以下命令运行脚本:
python main.py
脚本将遍历 sites_para_testar.txt 文件中列出的网站,访问其 Swagger UI URL,并检查是否检测到 XSS 弹窗。结果将记录在三个文件中:valido.txt(可能易受攻击的 URL)、talvezvalido.txt(可能易受攻击的 URL)和 naovalido.txt(不易受攻击的 URL)。
该脚本使用 Selenium 库自动化与 Chrome 浏览器的交互。它加载 sites_para_testar.txt 文件中配置的 Swagger UI URL,向 configUrl 参数添加恶意负载,并检查是否触发了 XSS 弹窗。
脚本按以下步骤执行:
从 Selenium 和其他依赖项导入必要的库。
配置 ChromeDriver 选项以忽略 SSL 和证书错误。
初始化 Chrome 驱动器。
从 sites_para_testar.txt 文件读取要测试的网站,并迭代处理。
打开每个添加了恶意负载的 Swagger UI URL。
尝试检查是否触发了 XSS 弹窗。
根据检查结果,将 URL 记录到 valido.txt、talvezvalido.txt 或 naovalido.txt 文件中。
关闭 Chrome 驱动器。
此脚本仅供教育和网络安全意识目的使用。不得用于恶意或非法目的。作者不对任何滥用此脚本的行为或使用该脚本造成的任何损害负责。
如果你发现任何改进此脚本的方法或有建议,欢迎提交拉取请求。
本项目采用 MIT 许可证 授权。