攻防渗透集锦JS泄露突破多个后台
字数 2906 2025-09-23 19:27:38

通过JS文件与接口信息泄露进行渗透测试的教学文档

0x01 前言

本文档详细剖析了一次完整的Web渗透测试过程,核心攻击向量为Swagger API文档泄露导致的敏感信息泄露,并综合利用目录爆破、接口测试、用户名枚举、弱口令爆破等技术,最终成功突破多个系统后台。本次渗透充分体现了“信息收集的深度决定渗透测试的高度”这一原则。

0x02 信息收集阶段

1. 目标入口发现

  • 初始入口:一个常见的系统登录端口。
  • 关键发现:通过对目标Web服务进行目录与路径爆破,发现了一处 Swagger UI 接口文档页面(例如 /swagger-ui.html, /swagger/ 等)。
  • 漏洞性质:该Swagger页面存在未授权访问,无需登录即可查看。

2. Swagger文档分析

  • Swagger文档的价值:Swagger(OpenAPI)是一种用于描述RESTful API的规范。泄露的Swagger文档包含了API的所有端点(Endpoint)、请求方法(GET/POST/PUT/DELETE)、参数、甚至示例值,是攻击者的“宝藏图”。
  • 信息提取
    • 访问Swagger UI页面后,通常页面会指明其使用的JSON规范文件路径(通常为 /swagger/v1/swagger.json/v2/api-docs)。
    • 直接访问此 swagger.json 文件,获取完整的、结构化的API信息。

3. 自动化工具提取接口

  • 工具使用:使用自动化工具 swagger-hack 来解析 swagger.json 文件,并提取所有API端点。
  • 命令示例
    python swagger-hack2.0.py -u http://target.com/swagger/v1/swagger.json
    
  • 工具输出:工具会生成一个CSV文件(如 swagger.csv),其中包含所有接口的URL、HTTP方法、参数等详细信息。

4. 构造测试数据包

  • 测试策略:将提取出的所有接口URL导入Burp Suite的Intruder模块进行模糊测试/爆破。
  • 两种常见请求方式
    1. GET请求:直接将接口路径拼接在目标域名后,形成完整的URL进行访问。
      • GET /api/xxx/list HTTP/1.1
    2. POST请求:即使接口描述中没有明确参数,也尝试发送一个空的或默认的JSON报文体。
      • POST /api/xxx/config HTTP/1.1
      • Content-Type: application/json;charset=UTF-8
      • {}

0x03 敏感信息泄露与利用

1. 发现泄露信息

  • 经过对大量接口的爆破,发现多个返回 200 状态码的接口,其响应体中包含了敏感的配置信息。
  • 泄露内容示例
    {
      "brokerIP": "xx.xxx.161.59",
      "brokerPort": 1883,
      "clientID": "iot-driver-001",
      "userName": "msl_mqtt_user",
      "password": "3HlcSiVhvalAq9JU"
    }
    
    {
      "brokerIP": "xxx.xxx.32.65",
      "brokerPort": 1883,
      "clientID": "iot-driver-003",
      "userName": "msl_mqtt_user",
      "password": "3HlcSiVhvalAq9JU"
    }
    
    {
      "clientId": "msl_iot_226CC04AF6026B84",
      "userName": "iot-driver-user001",
      "password": "z@.x%h>4*k18"
    }
    
  • 信息整理:获得两组IP地址 (161.59, 32.65) 和两套凭证:
    • 凭证A: msl_mqtt_user / 3HlcSiVhvalAq9JU
    • 凭证B: iot-driver-user001 / z@.x%h>4*k18

2. 扩大攻击面

  • 资产发现:将泄露的IP地址作为新的目标,进行Web服务端口扫描(如80, 443, 8080等),寻找新的Web应用入口。
  • 结果:在两个IP上都发现了新的Web登录界面,其特征与初始目标类似(如MQTT管理界面、物联网平台后台)。

3. 凭证复用尝试与受挫

  • 首次尝试:使用泄露的凭证A和B,在两个IP新发现的登录口上进行尝试。
  • 结果:登录均失败。表明这些凭证并非这些Web后台的登录凭证,可能是用于连接MQTT消息队列或其他内部服务的专用凭证。

0x04 突破点:用户名枚举与弱口令

1. 重新审视信息

  • 当直接凭证复用失败后,回到Swagger泄露的信息中寻找线索。
  • 关键发现:文档中多次出现 MSL 这个字符串(如 "driverName": "MSL")。这极有可能是企业名称、项目代号或产品名称的缩写

2. 用户名枚举漏洞

  • 测试过程:选择其中一个登录口,尝试使用 MSL 作为用户名,并故意输入错误密码。
  • 漏洞发现:对比使用肯定不存在的用户名(如random123)和 MSL 作为用户名时,服务器的错误响应信息存在差异
    • 不存在用户:可能返回“用户不存在”或“凭证错误”。
    • 存在用户(MSL):返回“密码错误”。
  • 漏洞确认:这种响应差异确认了用户名枚举漏洞的存在,证明了 MSL 是一个在该系统中存在的有效用户名。

3. 弱口令爆破

  • 思路转变:既然有了确定的用户名 (MSL),而之前泄露的密码无效,极有可能是管理员为Web后台设置了非常简单(弱)的密码。
  • 爆破攻击:使用Burp Suite Intruder模块,对目标登录接口进行爆破。
    • 攻击类型:Pitchfork(叉子)或Cluster bomb(集束炸弹)。
    • 有效载荷集1(用户名):固定为 MSL
    • 有效载荷集2(密码):加载一个常用的弱口令字典(如 admin, 123456, password, MSL@123, msl2025 等)。
  • 结果:爆破成功,使用一个非常简单的弱口令(文档中提及“第一个就出了”)成功登录系统后台。

0x05 总结与提炼

关键知识点

  1. 目录爆破:是发现隐藏资产、测试接口、配置文件的必备手段。
  2. Swagger API泄露
    • 属于敏感信息泄露漏洞,危害极大。
    • 一旦发现,必须彻底挖掘其所有接口。
    • 工具 swagger-hack 能极大提高效率。
  3. 接口安全测试
    • 对未知接口不仅要测试GET,也要测试POST等其他方法。
    • 即使API文档未要求参数,尝试发送空或默认的JSON body。
  4. 凭证复用攻击:从一处泄露的凭证一定要尝试应用到当前目标的其他系统和服务上。
  5. 用户名枚举漏洞
    • 通过对比登录失败时的服务器响应信息(HTTP状态码、返回信息、响应时间)来判断用户名是否存在。
    • 是突破登录环节的重要突破口。
  6. 弱口令:永远是最高效的漏洞之一。在获得有效用户名后,弱口令爆破成功率极高。
  7. 信息关联推理:从泄露的配置信息中推断出潜在的用户名(如公司缩写、项目名),是本次渗透成功的关键思维。

防御建议

  1. 开发阶段
    • 生产环境禁用权限控制Swagger等API文档调试界面。
    • 对API接口进行严格的权限校验访问控制,避免未授权访问。
  2. 运维阶段
    • 定期进行安全扫描,及时发现信息泄露问题。
    • 在Web服务器配置中,阻止对 swagger.json, api-docs 等关键文件的公共访问。
  3. 安全编码
    • 登录功能应使用统一的错误提示,如“用户名或密码错误”,防止用户名枚举。
    • 强制实施强密码策略,并定期更换密码。
  4. 网络架构
    • 将内部服务(如MQTT Broker)部署在私有网络,并通过网关访问,避免将其管理界面直接暴露在公网。

免责声明:本文档仅用于网络安全教学和研究目的,旨在帮助相关人员了解攻击原理并采取有效措施进行防护。请勿将文中所述技术用于任何非法用途。

通过JS文件与接口信息泄露进行渗透测试的教学文档 0x01 前言 本文档详细剖析了一次完整的Web渗透测试过程,核心攻击向量为 Swagger API文档泄露 导致的敏感信息泄露,并综合利用目录爆破、接口测试、用户名枚举、弱口令爆破等技术,最终成功突破多个系统后台。本次渗透充分体现了“信息收集的深度决定渗透测试的高度”这一原则。 0x02 信息收集阶段 1. 目标入口发现 初始入口 :一个常见的系统登录端口。 关键发现 :通过对目标Web服务进行 目录与路径爆破 ,发现了一处 Swagger UI 接口文档页面(例如 /swagger-ui.html , /swagger/ 等)。 漏洞性质 :该Swagger页面存在 未授权访问 ,无需登录即可查看。 2. Swagger文档分析 Swagger文档的价值 :Swagger(OpenAPI)是一种用于描述RESTful API的规范。泄露的Swagger文档包含了API的所有端点(Endpoint)、请求方法(GET/POST/PUT/DELETE)、参数、甚至示例值,是攻击者的“宝藏图”。 信息提取 : 访问Swagger UI页面后,通常页面会指明其使用的JSON规范文件路径(通常为 /swagger/v1/swagger.json 或 /v2/api-docs )。 直接访问此 swagger.json 文件,获取完整的、结构化的API信息。 3. 自动化工具提取接口 工具使用 :使用自动化工具 swagger-hack 来解析 swagger.json 文件,并提取所有API端点。 命令示例 : 工具输出 :工具会生成一个CSV文件(如 swagger.csv ),其中包含所有接口的URL、HTTP方法、参数等详细信息。 4. 构造测试数据包 测试策略 :将提取出的所有接口URL导入Burp Suite的Intruder模块进行模糊测试/爆破。 两种常见请求方式 : GET请求 :直接将接口路径拼接在目标域名后,形成完整的URL进行访问。 GET /api/xxx/list HTTP/1.1 POST请求 :即使接口描述中没有明确参数,也尝试发送一个空的或默认的JSON报文体。 POST /api/xxx/config HTTP/1.1 Content-Type: application/json;charset=UTF-8 {} 0x03 敏感信息泄露与利用 1. 发现泄露信息 经过对大量接口的爆破,发现多个返回 200 状态码的接口,其响应体中包含了敏感的配置信息。 泄露内容示例 : 信息整理 :获得两组IP地址 ( 161.59 , 32.65 ) 和两套凭证: 凭证A: msl_mqtt_user / 3HlcSiVhvalAq9JU 凭证B: iot-driver-user001 / z@.x%h>4*k18 2. 扩大攻击面 资产发现 :将泄露的IP地址作为新的目标,进行Web服务端口扫描(如80, 443, 8080等),寻找新的Web应用入口。 结果 :在两个IP上都发现了新的Web登录界面,其特征与初始目标类似(如MQTT管理界面、物联网平台后台)。 3. 凭证复用尝试与受挫 首次尝试 :使用泄露的凭证A和B,在两个IP新发现的登录口上进行尝试。 结果 :登录均失败。表明这些凭证并非这些Web后台的登录凭证,可能是用于连接MQTT消息队列或其他内部服务的专用凭证。 0x04 突破点:用户名枚举与弱口令 1. 重新审视信息 当直接凭证复用失败后,回到Swagger泄露的信息中寻找线索。 关键发现 :文档中多次出现 MSL 这个字符串(如 "driverName": "MSL" )。这极有可能是 企业名称、项目代号或产品名称的缩写 。 2. 用户名枚举漏洞 测试过程 :选择其中一个登录口,尝试使用 MSL 作为用户名,并故意输入错误密码。 漏洞发现 :对比使用肯定不存在的用户名(如 random123 )和 MSL 作为用户名时,服务器的错误响应信息 存在差异 。 不存在用户:可能返回“用户不存在”或“凭证错误”。 存在用户( MSL ):返回“密码错误”。 漏洞确认 :这种响应差异确认了 用户名枚举漏洞 的存在,证明了 MSL 是一个在该系统中存在的有效用户名。 3. 弱口令爆破 思路转变 :既然有了确定的用户名 ( MSL ),而之前泄露的密码无效,极有可能是管理员为Web后台设置了非常简单(弱)的密码。 爆破攻击 :使用Burp Suite Intruder模块,对目标登录接口进行爆破。 攻击类型 :Pitchfork(叉子)或Cluster bomb(集束炸弹)。 有效载荷集1(用户名) :固定为 MSL 。 有效载荷集2(密码) :加载一个常用的 弱口令字典 (如 admin , 123456 , password , MSL@123 , msl2025 等)。 结果 :爆破成功,使用一个非常简单的弱口令(文档中提及“第一个就出了”)成功登录系统后台。 0x05 总结与提炼 关键知识点 目录爆破 :是发现隐藏资产、测试接口、配置文件的必备手段。 Swagger API泄露 : 属于 敏感信息泄露 漏洞,危害极大。 一旦发现,必须彻底挖掘其所有接口。 工具 swagger-hack 能极大提高效率。 接口安全测试 : 对未知接口不仅要测试GET,也要测试POST等其他方法。 即使API文档未要求参数,尝试发送空或默认的JSON body。 凭证复用攻击 :从一处泄露的凭证一定要尝试应用到当前目标的其他系统和服务上。 用户名枚举漏洞 : 通过对比登录失败时的服务器响应信息(HTTP状态码、返回信息、响应时间)来判断用户名是否存在。 是突破登录环节的重要突破口。 弱口令 :永远是最高效的漏洞之一。在获得有效用户名后,弱口令爆破成功率极高。 信息关联推理 :从泄露的配置信息中推断出潜在的用户名(如公司缩写、项目名),是本次渗透成功的关键思维。 防御建议 开发阶段 : 生产环境 禁用 或 权限控制 Swagger等API文档调试界面。 对API接口进行严格的 权限校验 和 访问控制 ,避免未授权访问。 运维阶段 : 定期进行 安全扫描 ,及时发现信息泄露问题。 在Web服务器配置中,阻止对 swagger.json , api-docs 等关键文件的公共访问。 安全编码 : 登录功能应使用 统一的错误提示 ,如“用户名或密码错误”,防止用户名枚举。 强制实施 强密码策略 ,并定期更换密码。 网络架构 : 将内部服务(如MQTT Broker)部署在私有网络,并通过网关访问,避免将其管理界面直接暴露在公网。 免责声明 :本文档仅用于网络安全教学和研究目的,旨在帮助相关人员了解攻击原理并采取有效措施进行防护。请勿将文中所述技术用于任何非法用途。