从JS敏感信息泄露到GETSHELL
字数 1190 2025-08-19 12:41:32

从JS敏感信息泄露到GETSHELL - 渗透测试实战分析

1. 信息收集阶段

  1. 初始目标发现

    • 通过FOFA搜索目标IP,发现开放了86、83、82三个端口,分别对应不同的后台管理系统
    • 选择从86端口系统开始渗透测试
  2. 初步探测

    • 发现系统登录界面没有验证码保护
    • 尝试使用300万大字典对admin账户进行爆破,未成功

2. JS敏感信息泄露利用

  1. 发现关键线索

    • 查看登录成功跳转页面(index.html)
    • 直接访问xxx.xxx.xxx.xxx:86/index.html时发现短暂显示后台界面后跳转回登录页
    • 使用Burp Suite拦截响应,停留在index.html页面
  2. 分析JS文件

    • 检查index.js文件内容
    • 发现泄露了三个重要URL接口:
      • /api/user/getUserInfo
      • /api/user/list
      • /api/user/update
    • 这些接口可通过修改key参数进行未授权访问
  3. 接口利用

    • 尝试访问/api/user/list?key=1(盲猜key值为1)
    • 成功获取用户列表信息

3. 用户枚举与密码爆破

  1. 获取用户列表

    • 从接口响应中提取所有用户名
    • 发现存在admin2等管理账户
  2. 针对性爆破

    • 对admin2账户尝试简单密码"123456"
    • 成功登录系统

4. 权限提升与横向移动

  1. 受限系统分析

    • 86端口系统功能有限,仅发现头像上传功能
    • 上传功能限制严格,无法直接上传webshell
  2. 横向移动尝试

    • 推测83端口系统可能使用相同数据库
    • 使用admin2/123456凭据尝试登录83端口系统
    • 成功登录功能更复杂的83端口后台

5. 最终getshell

  1. 文件上传漏洞利用
    • 在83端口系统发现可上传aspx文件的功能
    • 上传冰蝎(Behinder)webshell
    • 成功获取系统控制权限

6. 技术要点总结

  1. JS敏感信息泄露

    • 前端JS文件可能包含后端API接口信息
    • 未授权接口可能暴露系统敏感数据
    • 开发应避免在前端硬编码敏感接口和参数
  2. 密码安全

    • 管理员账户使用弱密码(123456)
    • 多系统使用相同密码导致横向渗透风险
    • 应实施强密码策略和定期更换机制
  3. 文件上传绕过

    • 对于base64编码的图片上传,可尝试:
      • 更改.jpg为.jsp
      • 将webshell内容base64编码后上传
    • 可在文件名后追加后缀绕过检查
  4. 防御建议

    • 实施严格的API访问控制
    • 前端代码应进行混淆和敏感信息清理
    • 不同系统应使用独立认证机制
    • 文件上传功能应进行严格的内容检查和重命名

7. 渗透测试方法论

  1. 完整流程

    • 信息收集 → 漏洞发现 → 漏洞利用 → 权限提升 → 横向移动 → 目标达成
  2. 关键思维

    • 不放过任何细节(如JS文件分析)
    • 当一条路径受阻时尝试其他攻击面(端口、功能点)
    • 利用已获取信息进行横向渗透(密码复用)
从JS敏感信息泄露到GETSHELL - 渗透测试实战分析 1. 信息收集阶段 初始目标发现 : 通过FOFA搜索目标IP,发现开放了86、83、82三个端口,分别对应不同的后台管理系统 选择从86端口系统开始渗透测试 初步探测 : 发现系统登录界面没有验证码保护 尝试使用300万大字典对admin账户进行爆破,未成功 2. JS敏感信息泄露利用 发现关键线索 : 查看登录成功跳转页面(index.html) 直接访问 xxx.xxx.xxx.xxx:86/index.html 时发现短暂显示后台界面后跳转回登录页 使用Burp Suite拦截响应,停留在index.html页面 分析JS文件 : 检查index.js文件内容 发现泄露了三个重要URL接口: /api/user/getUserInfo /api/user/list /api/user/update 这些接口可通过修改key参数进行未授权访问 接口利用 : 尝试访问 /api/user/list?key=1 (盲猜key值为1) 成功获取用户列表信息 3. 用户枚举与密码爆破 获取用户列表 : 从接口响应中提取所有用户名 发现存在admin2等管理账户 针对性爆破 : 对admin2账户尝试简单密码"123456" 成功登录系统 4. 权限提升与横向移动 受限系统分析 : 86端口系统功能有限,仅发现头像上传功能 上传功能限制严格,无法直接上传webshell 横向移动尝试 : 推测83端口系统可能使用相同数据库 使用admin2/123456凭据尝试登录83端口系统 成功登录功能更复杂的83端口后台 5. 最终getshell 文件上传漏洞利用 : 在83端口系统发现可上传aspx文件的功能 上传冰蝎(Behinder)webshell 成功获取系统控制权限 6. 技术要点总结 JS敏感信息泄露 : 前端JS文件可能包含后端API接口信息 未授权接口可能暴露系统敏感数据 开发应避免在前端硬编码敏感接口和参数 密码安全 : 管理员账户使用弱密码(123456) 多系统使用相同密码导致横向渗透风险 应实施强密码策略和定期更换机制 文件上传绕过 : 对于base64编码的图片上传,可尝试: 更改.jpg为.jsp 将webshell内容base64编码后上传 可在文件名后追加后缀绕过检查 防御建议 : 实施严格的API访问控制 前端代码应进行混淆和敏感信息清理 不同系统应使用独立认证机制 文件上传功能应进行严格的内容检查和重命名 7. 渗透测试方法论 完整流程 : 信息收集 → 漏洞发现 → 漏洞利用 → 权限提升 → 横向移动 → 目标达成 关键思维 : 不放过任何细节(如JS文件分析) 当一条路径受阻时尝试其他攻击面(端口、功能点) 利用已获取信息进行横向渗透(密码复用)