一次JAVA系统三个组合拳RCE代码审计案例
免责申明本文章仅用于信息安全防御技术分享,因用于其他用途而产生不良后果,作者不承担任何法律责任,请严格遵循中华人民共和国相关法律法规,禁止做一切违法犯罪行为。
一、前言
跟着小朋友师傅学习了一段时间代码审计,来验证一下成果,也把自己成果审计到的一个组合拳RCE漏洞分享给师傅们,希望师傅们不要嫌弃。
针对上述系统进行代码审计,当然源码是通过py得到的。
二、框架识别
小朋友老师说过,在做审计之前先清楚对方系统框架是一个什么框架,这里进行查看。
使用到的是Spring-MVC框架方式进行开发的,并且配置信息位于spring-servlet.xml文件当中,这个框架的中间件一般配置为Tomcat,并且tomcat下如果权限认证错误是存在一定的权限绕过风险的(小朋友说的)。
并且在这里进行查看对应的class文件,确定为SPring-mvc开发方式。
三、鉴权绕过
刚才我们分析到了对应的springmvc架构,查看配置文件,主要是进行查看权限是如何进行校验的。
在这里可以看到权限校验是通过一个类AuthInterceptor类来进行验证,跟入这个类进行查看。
相关代码如下,其中我们着重观看下面的代码。
在这里获取URL的方式存在错误,配合Tocmat中间价存在绕过风险,同时继续往下看。
这里进行判断我们的URL是否包含uploadFileApp并且请求是否走的是上传数据包,这里我们不是,继续往下走代码。
然后进行判断,是否包含actionCloudModifyFile以及actionCloudAddFile这两个路径,
这里同样是进行判断是否为上传请求,这两个路径的上传请求,继续往下看。
这里是重点,可以看到首先获取我们的session,我们模拟攻击视角肯定是没有session的,于是我们的u肯定为null,在下main进行判断我们的网址是否包含在属性opens当中,如果我们的URL是其中的某一类那么久进行返回true,这里我们查看opens属性的信息。
那么这里我们就可以理解了,我们这里可以进行尝试绕过了,首先我们包含opens当中的信息的时候不进行鉴权,但是代码当中获取URL的方式有误,并且配合Tomcat导致出现解析问题,导致存在鉴权绕过。
四、文件上传
这里可以看到目标是解析JSP文件的,于是直接进行尝试定位文件上传漏洞,搜索几个常见的文件上传关键词。
*.getOriginalFilename();
最终在这里成功定位到了漏洞。
获取到文件名之后直接进行重命名保存,并未进行过滤,并且这里的路径为actionDetailTmpFile,并非拦截器当中判断的uploadFileApp、actionCloudModifyFile、actionCloudAddFile这三个路径,导致可以进行上传。
但是还要注意原由参数pa_id\text\position这几个参数。
五、漏洞验证
构造数据包成功上传相关文件,但是发现并为进行返回信息,重新回去查看代码。
确实在进行上传成功之后返回数字0。
但是在下面还有一个接口。
这里进行传递参数pa_id参数,同时进行调用方法listPhotoAdsDetailTmp方法。
查看刚才的上传代码。
发现上传成功之后会进行调用add方法,传递tmp信息,然而tmp信息当中是包含filename的,filename则为我们上传之后服务器重命名的参数,跟入add方法。
最终发现add方法保存在了表tb_photo_ads_detail_tmp当中。
然而在看我们刚才的方法。
通过传递进去pad_id可以知道。
查询了表tb_photo_ads_detail_tmp,并且该方法最后返回了查询信息。
那么我们就可以得到相关重命名之后的文件名称,尝试获取刚才上传的文件名称。
成功获取文件名称。
上传到了这个目录,拼接这个目录后跟入获取到的文件名称。
成功解析。
页:
[1]