Guns后台任意文件上传漏洞分析
Guns后台任意文件上传漏洞分析
船山信安 2024-12-30 01:12
下载地址:
主项目:
https://gitee.com/stylefeng/guns
核心包:
https://gitee.com/stylefeng/roses
分析认证逻辑
找个正常的接口访问,发现没有自定义filter,
我们大概看一下spring的filter执行流程是咋样的,
可以看到这里有6个filter,但是从上面的堆栈图可以看出,
有些filter执行的是他父类的doFilterInternal方法、父类的doFilter方法,
本来以为是实现了WebSecurityConfigurerAdapter接口,结果并没有,
发现此系统是实现了HandlerInterceptor接口进行权限认证的,
分析TokenAndPermissionInterceptor拦截器,
这里使用getRequestURI()后,就开始匹配路由是否被拦截,
这里是不拦截的路由,
之后判断如果存在token,就会验证token是否有效,无效则报错,
如果不存在token,就在resourceServiceApi中查找路由资源,
并判断访问的路由是否需要权限验证,
权限绕过思路:
白名单路由可以用../绕过,不过最后还是会被spring拦住,(这里可以用%2e%2e\绕过,不过存在tomcat环境,直接报错)
jwt不是硬编码在本地的,秘钥没有通用性,伪造token不行,
resourceServiceApi会调用到以下函数,
resourcecache存在一些接口资源,可以访问一些未授权的接口,
在resourcecache中的接口,利用@GetResource注释设置了requiredLogin = false,就不需要认证,
分析这些未授权接口后,没有一个接口有洞,就很尴尬,,,
任意文件上传
这里可以任意文件上传,不管更改fileBucket或者filename,总会用fieldid拼接文件路径,
因此可以控制文件名,那么文件夹就是fieldid,
如果控制文件夹,那么文件名就是fieldid.后缀,
如以下数据包,任意文件上传,不过文件名不可控,
可以用在钓鱼,如果项目在c盘,可以放到启动项中,
这里可以看到是在哪个盘,
来源:https://xz.aliyun.com/ 感谢【
tj
】