记一次密码重置到后台GetShell
字数 1351 2025-08-06 08:35:09
从密码重置到后台GetShell的渗透测试实战教学
1. 初始信息收集与登录尝试
-
初始访问方式:
- 使用IP地址直接访问目标网站
- 发现登录页面后点击登录按钮
-
域名解析问题:
- 点击登录后出现"Unknown host"错误
- 分析原因:登录按钮使用域名访问,而当前环境无法解析该域名
- 解决方案:将域名替换为IP地址+后台路径直接访问
2. 密码重置漏洞利用
-
发现密码重置功能:
- 在成功访问的后台页面发现"找回密码"功能
- 测试admin账号的密码重置流程
-
安全问题破解:
- 发现admin账号的密码重置问题为"1+1=?"
- 尝试简单答案"2"未成功
- 使用Burp Suite进行暴力破解:
- 首先尝试数字1-1111
- 扩展尝试11111、111111等更长数字组合
-
用户名枚举:
- 当直接破解admin失败后,转向枚举其他用户
- 成功枚举出两个有效账号:cs和test
-
test账号利用:
- 选择test账号进行密码重置
- 猜测其安全问题答案为"111"(基于该账号可能是测试账号的假设)
- 成功重置test账号密码
3. 后台功能探索与权限提升
-
初始权限限制:
- 使用test账号登录后尝试文件上传功能
- 发现"上传资源"和"上传头像"功能均无权限或无效
-
功能分析:
- 后台共有8个功能,仅"微课"功能可正常使用
- 检查"上传附件"按钮:
- 发现点击无反应
- 使用浏览器开发者工具(F12)检查是否被注释
-
其他功能测试:
- 尝试访问其他功能均失败
-
密码重置参数分析:
- 在密码重置功能中发现userid参数
- 在前台"活跃用户"处确认自己的id与密码重置处的userid一致
- 尝试修改其他账号密码:
- 先测试修改pwd账号密码
- 使用Burp暴力破解,发现原密码为"!@#$%^"时重置成功
- 成功登录pwd账号
-
管理员权限获取:
- 将userid替换为管理员id
- 成功重置并登录管理员账号
- 发现管理员权限与test账号权限基本相同(关键发现)
4. 文件上传GetShell
-
隐藏上传点发现:
- 在"个人中心"页面查看源代码
- 发现一个隐藏的文件上传URL
-
文件上传测试:
- 直接访问该URL确认是文件上传接口
- 上传策略:
- 先上传合法jpg文件
- 直接修改文件后缀为jsp进行绕过
- 成功上传Webshell
-
Webshell访问:
- 直接访问上传的jsp文件获取系统权限
5. 渗透测试关键总结
-
最小影响原则:
- 实际测试发现无需获取管理员权限(test账号已足够)
- 应在动静最小的情况下获取系统权限
-
细心观察的重要性:
- 隐藏上传URL的发现依赖于对页面源代码的仔细检查
- 密码重置流程的每个参数都值得深入分析
-
测试流程优化建议:
- 优先尝试低权限账号的利用
- 不要忽视看似无效的功能按钮(检查源代码)
- 所有用户输入参数都应测试是否存在IDOR等漏洞
-
防御建议:
- 密码重置问题应设置足够复杂度
- 实现严格的用户枚举防护
- 文件上传功能应进行多重验证:
- 文件内容检测
- 后缀名白名单
- 随机化上传路径
- 隐藏接口不等于安全接口,所有功能都应进行权限验证
6. 技术要点备忘
-
密码重置漏洞利用链:
弱密码问题 → 用户名枚举 → IDOR漏洞 → 权限提升 -
文件上传绕过技巧:
合法文件上传 → 修改请求参数 → 扩展名绕过 -
隐藏接口发现方法:
前端代码审计 → 敏感关键词搜索(upload/file等) → 直接访问测试 -
权限提升检查点:
- 所有接收用户ID的参数
- 前端隐藏的API接口
- 看似无效但实际可用的功能按钮