渗透攻击实例-完整的实战演练


渗透攻击实例-完整的实战演练

文章插图
 
正准备启动信息收集工作 , 页面上有三个地方引起了我的注意:.do 的接口地址、登录功能、密码找回功能 。
审查 .do 接口 。看到 .do 自然联想到 struts2 命令执行全家桶 。
安恒出品的 S2 漏洞验证工具扫描下:
渗透攻击实例-完整的实战演练

文章插图
 
扫描不出漏洞
审查登录功能 。登录功能的审查点很多 , 比如账号是否可枚举、密码是否可暴破 , 但前提是没有验证码 , 显然这里存在图片验证码 , 所以 , 我先确认验证码是否可绕过 。
拦截登录请求:
渗透攻击实例-完整的实战演练

文章插图
 
应答标志为 2 , 第二次重发 , 应答标志变为 1
显然 , 验证码防御机制有效 , 虽然 Python 调用 tesseract 识别图片的手法可有效攻击图片验证码 , 但需要我爬取该站的大量图片来训练 , 这个阶段无需太深入 , 暂时放一放 。
审查密码找回功能 。密码找回功能很容易出现逻辑错误 , 经验来看 , 至少可从七个方面攻击密码找回功能:重置凭证接收端可篡改、重置凭证泄漏、重置凭证未校验、重置凭证可暴破、用户混淆、应答中存在影响后续逻辑的状态参数、token 可预测 。
 
访问密码找回页面:
渗透攻击实例-完整的实战演练

文章插图
 
拦截密码找回的请求:
渗透攻击实例-完整的实战演练

文章插图
 
从应答描述可知 , 提示该用户不存在 , 重发几次 , 结果相同 , 说明图片验证码未生效 , 好了 , 第一个洞 , 用户名可枚举 。
显然 , 用户名在该请求的 params 参数中 , URL 解码可得明文:
渗透攻击实例-完整的实战演练

文章插图
 
于是 , 将 root 设定为枚举变量 , 加载中国人姓名(top500)、后台账号两个字典 , 进行枚举:(这里需要的注意的是 , 大部分的系统可能存在黑名单校验 , 枚举时可使用VPN进行IP轮换)
渗透攻击实例-完整的实战演练

文章插图
 
得到三个有效账号:nana、admin、liufei 。
随意选个账号进入密码找回流程 , liufei , 应答为 JSON 数据 , 格式化后吓我一跳:
渗透攻击实例-完整的实战演练

文章插图
 
敏感信息大赠送!有邮箱 , 甚至有哈希密码 。记下来 , 第二个漏洞 , 账号相关敏感信息泄漏 。
我的目的很明确 , 获取登录密码 , 所以 , 我计划利用泄漏信息 , 从信息库和哈希反解两方面达到目的 。
信息库 。提取邮箱中的用户名 , liufei 的 liufei、nana 的 18xxxxxx56、admin 的 legxxxxxxng , 在信息库中查询历史密码 。
只找到 liufei 相关的多个历史密码 , 逐一验证 , 均错误 。
哈希反解 。提取三个账号的哈希密码 , liufei 的
a1e0476879cab2a76cc22c80bbf364dd、nana 的 208f0aba4a6d4b9afe94207e6c57d594、admin 的 3faf009c43bb39c5a37859bc48feaff3 。
有了哈希密码 , 第一时间查彩虹表(https://www.cmd5.com/) , 反解明文密码:
渗透攻击实例-完整的实战演练

文章插图
 
只有账号 liufei 的密码解出为 !QAZ2wsx , nana、admin 无解 , 暂时放下 。第三个漏洞 , 业务系统存在弱口令账号 liufei 。
 
通过 liufei / !QAZ2wsx 登录网站:
渗透攻击实例-完整的实战演练

文章插图
 
功能非常有限 , 只有个回收站 , 里面没有业务任何数据 。
上图中有几个输入框 , 应该是个查询功能 , 但是找不到查询按钮 , 尝试在前端 html 源码中翻找查询接口 , 无果;在 burp 的报文历史中审查 JS , 也没找到有用的接口 。看来 , 还得找个高权限的账号 。


推荐阅读