本文首发于我的个人博客,记录了我在实验室学习渗透测试所做的第七个漏洞复现。
漏洞概述
通达OA是一套国内常用的办公系统,在V11.X<V11.5和通达OA 2017版本中存在任意用户登录漏洞。攻击者在远程且未经授权的情况下,通过此漏洞可以以任意用户身份登录到系统(包括系统管理员)。复现此漏洞可以使用已有的POC脚本,也可以手工复现。
实验工具与环境
实验工具:通达OA2017 v10.13.18,Burp Suite
实验环境:Windows 10
利用POC复现
1. 工具安装配置
下载好通达OA2017后安装,所有选项默认即可。
2. 登录
初始用户名:admin,密码为空,直接登录。
登录后,可以发现管理员后台地址都为如下格式:
http://网站/general/index.php?isIE=0&modify_pwd=0
复制该地址,关闭网页,清除掉该网页的cookie,之后再次直接访问该地址,可以看到此时提示我们用户未登录。
3. 生成并替换cookie
下载poc,在命令行中通过该poc生成我们的cookie,即COOKIE:
后分号前的一段字符串。
python POC.py -v 11 -u http://本机IP
复制该字符串,在刚才的网页打开F12进行cookie的替换。点击应用程序,找到cookie,选择本地地址,将PHPSESSID
的值替换成刚才生成的cookie。
替换后刷新页面,可以看到已经进入了登录成功的界面。这说明,已经成功利用cookie登录了进来。
手工复现
1. 抓包
使用Burp Suite抓包:在Proxy一栏下,选择Intercept,首先点击“Open Browser”打开内置浏览器(谷歌),然后在“Intercept is off”状态下打开http://localhost,然后使“Intercept is on”,在账号密码均为空的情况下点击登录,此时能看到已经抓取到了我们需要的包。
2. 修改请求
点击“Action-->Send to Repeater”,然后就可以在Repeater一栏下看到这个包。点击左上角的Send后,会在右侧的Response下看到服务器的返回结果。如果状态码是200,说明成功了。
然后修改几个地方:
- 首行的地址改为
/logincheck_code.php
- 删除Cookie一行
- 尾行最后加上
&UID=1
修改好后,再次发送,在Response中可以找到Set-Cookie,后面即为我们需要替换的cookie。
3. 验证
清除Cookie,直接打开前面提到的链接,还是提示用户未登录,按F12,替换cookie后刷新页面,登录成功。