2.搭建环境成功后的漏洞审计~

前情提要:

学习自深情哥微信公众号文章~
https://mp.weixin.qq.com/s/k6j4QJuwmJAeZQAiLquUaA
如若环境不会搭建,请参考上一篇文章:

https://www.cnblogs.com/pmv57/articles/18743858

源码来源:

https://gitee.com/zj1983/zz

审计流程:

首先我们查看\zz-master\src\main\resources下的spring.xml文件
然后在115行可以发现一个全局路由拦截器

原因是因为:<mvc:mapping path="/"/>,这个的path路径是,说明他是对于所有目录都可以起到一个拦截作用

然后我们跟进去看一下AllHandlerInterceptor到底是如何拦截的~(ctrl+鼠标右键点击)
然后跟进去能在59行看到一个哪些是不用登陆就能访问方法(也就是所谓的前台漏洞)

然后跟进去isSystemNoStateFunction方法,看一下哪些方法可以前台访问

总共有19条,审计的话一条一条看就好了

1.UserLogin前台注入

右键在文件中查找

找到这个方法,然后发现传参进去了user_id,用来查询是否登录
更进去GetDBUser方法

发现直接拼接,前面没有任何过滤,后面也没有任何过滤

本来认为密码处也有漏洞,但是跟进去CreatePassword方法

但是这里先是密码md5的32位加密,然后又分为四组再md5一次,根本不可逆~~~
tips:
一般前台写登录框,都不会查询密码,在查用户名的时候,会把密码顺带带出来,所以如果黑盒测试的话,用户名处可以多下功夫(当然也不一定orz)
http://localhost:8082/UserLogin?user_id=sa'and sleep(5)%23
页面成功sleep

2.UserLoginJson前台注入

和UserLogin几乎是一模一样,方法调用都一样

http://localhost:8082/UserLoginJson?user_id=sa%27and%20sleep(5)%23

3.getUserOrgForUserId前台注入

也是传进去一个id,然后调用GetUserOrg

同样发现也是没有过滤

http://localhost:8082/getUserOrgForUserId?userId=sa%27and%20sleep(5)%23

4.RunSQL任意SQL执行

RunSQL路由中跟进来就可以发现一个根据;分割sql语句的方法

然后也是传进去很多参数,而分割的sqlinfo也是可以人为控制的
然后在126行有一个sql解析中,selectList会毫无过滤的执行一个从sqlinfo传入的sql语句

tips:

selectList是SqlSession接口中的方法,然后就是可以用来执行sql语句

最后成功执行任意sql语句

posted @ 2025-03-01 17:59  Zephyr07  阅读(5)  评论(0)    收藏  举报