免责申明
本文章仅用于信息安全防御技术分享,因用于其他用途而产生不良后果,作者不承担任何法律责任,请严格遵循中华人民共和国相关法律法规,禁止做一切违法犯罪行为。
朋友给到一套源码xx系统的,这里尝试进行审计,其实发现这个源码是一个Struts2框架的,所以一开始没有太去关注一些别的东西,一股脑去看相关的struts2的配置文件了。
二、配置文件寻找
这里其实寻找配置文件还是比较简单的,这里我们直接搜索Action即可规定文件后缀为.xml
寻找到对应的配置文件之后就好说了,剩下的就进行正常的审计流程即可。
这里进行审计首先第一个比较好的信息是,在struts2当中的配置文件当中没有存在相关的拦截器等信息,这里还是比较开心的以为可以随便访问。
第二个比较坏的信息就是没有一个路径作为跟路径让我进行访问,后来询问了很多大佬之后我才明白,action的name就可以当作开头。
第三个就是这里的method属性没写的话是默认调用exec什么的,这里{1}就是你url后面跟的什么方法名称就调用什么方法。
http://ip/departmentAddressTree_{1} => http://ip/departmentAddressTree_getContent.do
这样子调用,但是还是没有成功,最后才知道了,还要求加一个.do结尾或者.action结尾。
这里访问了半天都跳转到了登陆页面,无法成功进入对应的代码当中。
这里明明struts2当中不存在对应的拦截器为什么登陆不上去,回到了web.xml当中寻找。
应该是这个拦截器原因跟入这个拦截器。
跟入父类。
找到了正常的doFilter方法,这里首先获取了url使用两种方式,下面那种是存在风险的。然后进行sVaildLogin方法判断登陆之后才可以进入到判断url的if当中。
跟入isValueLogin方法。
是一个接口,寻找实现类。
实现类直接就是true顺利进入到了url的判断当中,回到拦截器当中。
这里两个判断首先判断其实也就是判断是否包含Skip的路径。
另外一个就是直接判断是否包含png等各种信息。
满足任意一个判断直接就进行放行了。
使用白名单路径绕过也可以: ..;/来跳出目录
原文始发于微信公众号(进击安全):某平台白盒JAVA权限绕过到RCE审计流程
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论