从JS敏感信息泄露到GETSHELL
字数 1190 2025-08-19 12:41:32
从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编码后上传
- 可在文件名后追加后缀绕过检查
- 对于base64编码的图片上传,可尝试:
-
防御建议:
- 实施严格的API访问控制
- 前端代码应进行混淆和敏感信息清理
- 不同系统应使用独立认证机制
- 文件上传功能应进行严格的内容检查和重命名
7. 渗透测试方法论
-
完整流程:
- 信息收集 → 漏洞发现 → 漏洞利用 → 权限提升 → 横向移动 → 目标达成
-
关键思维:
- 不放过任何细节(如JS文件分析)
- 当一条路径受阻时尝试其他攻击面(端口、功能点)
- 利用已获取信息进行横向渗透(密码复用)