2.搭建环境成功后的漏洞审计~
前情提要:
学习自深情哥微信公众号文章~
https://mp.weixin.qq.com/s/k6j4QJuwmJAeZQAiLquUaA
如若环境不会搭建,请参考上一篇文章:
https://www.cnblogs.com/pmv57/articles/18743858
源码来源:
审计流程:
首先我们查看\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语句


浙公网安备 33010602011771号