首先看到这里是";.js"绕过了鉴权,造成了任意文件上传漏洞。
但是,这个系统既没用到tomcat也没用到spring,;.js依旧可以绕过,看来没那么简单,这就有意思了。
(心急的巨佬可以直接移步0x03、0x04,感觉枯燥、无聊的巨佬移步0x05)
路由待会说,先简单看一下上传点。
接收method参数(这个洞的姿势挺多的,关键还是看鉴权)选择loadfile方法。上传即可
0x02 鉴权分析
接下来需要找到系统的鉴权是怎么做的
web.xml中有一个Filter,而且是全局的。
就是找PurFilter.class就行了,这里发现一个好玩的。listExpUrl是不做鉴权的,相当于白名单,上一代目文件上传漏洞路径就在这个里面(草率了),官方也是直接删除该文件修复漏洞)
0x03 ".js"的作用
下面这段代码就是说从getRequestUrl中获取到的路径中的最后一个"."再到后面的字符就作为后缀。
然后contains匹配在白名单里面即可鉴权放过。
可是问题来了,".js"是可以绕过鉴权了,那为什么还多加一个";"号?这个";.js"对路由为什么又没影响呢?
直接上图
整体看下来就是,这个CustomerAction.entphone路径是正则匹配出来后再加入路由。";.js"并不会影响到路由。如果没用fuzz,看代码绕过的,确实绕的很漂亮。
如果对照代码顺着整个文章思路看下来,会发现还有一个非常非常明显的,和这个漏洞不是一个类型且不会被该漏洞影响修复的鉴权绕过方法(又是RCE了?轻点,不值钱了)。
写的不好,写的错误的地方,欢迎巨佬留言交流。
原文始发于微信公众号(星期天不睡懒觉):浙大恩特CRM 通杀任意文件上传漏洞分析
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论