记一次因库网校代码审计

一.项目源码

因库网校官网已经公开了源码,也有安装教程,如有任何问题,欢迎随时联系我

官网地址:https://www.inxedu.com/index

二.测试环境

  • JDK 1.8

  • Tomcat 7

  • Mysql 5.7

  • maven 3.6

  • IntelliJ IDEA 2019.03

三.1 横向越权漏洞

1.1可能有越权漏洞的代码

img

这个接口更改用户信息前端传过来的请求好像一点验证都没有,点进业务层的updateUser()方法看看

img

看看他的xml中sql是怎么写的

img

从controller看到dao,它对前端发过来的user数据没有任何验证,所以极有可能存在横向越权漏洞

1.2漏洞验证

浏览器访问http://127.0.0.1:81/uc/updateUser?userId=3&userName=1

自动重定向到首页,所以估计有类似拦截器类的配置,idea中crtrl+shift+r,搜索Intercept,果然有

img

img

根据拦截器拦截后的操作可以看出,如果用户未登录就会跳转到首页,所以需要登录,

打开edu_user表,密码是md5加密

登录id为1的用户,访问http://127.0.0.1:81/uc/updateUser?userId=3&userName=1,查看数据库,发现id为3的用户USER_NAME成功被修改

img

用户id为1的用户却能修改id为3的用户信息,所以的确存在横向越权

1.3修复建议

用户id这种敏感数据最好不要信任前端传过来的数据,有必要验证一下传过来的id是否是登录者的id

 

2.sql注入

2.1可能有sql注入的代码

img

${}虽然用()括起来了,但是有可能还是能注入,看看其他层如何写的

业务层

img

controller层

img

一点验证都没有,这一定是个实习生写的代码,注入!注入!注入!

2.2漏洞验证

前端访问 http://127.0.0.1:81/admin/letter/delsystem?ids=1

跳回到管理员登录页面,这个请求需要登录,而很明显我们的注入是update的,一般没有回显,所以可以用sqlMap的cookie注入

打开sys_user表,密码是md5加密,登录

浏览器查看cookie,管理员登录只添加了一个cookie

键为inxedulogin_sys_user_

值为inxedulogin_sys_user_+管理员id

打开sqlmap

构建cookie注入命令

sqlmap.py -u "http://127.0.0.1:81/admin/letter/delsystem?ids=1" --cookie "inxedulogin_sys_user_=inxedulogin_sys_user_1" -D demo_inxedu_v2_0_open -T sys_user -C "LOGIN_NAME,LOGIN_PWD,USER_NAME" --dump --level 2

成功暴库

img

不过使用sqlmap要注意,访问过于频繁,后端控制台打印了很多日志

 

2.3修复建议

不到万不得已不要用${},因为他可以拼接字段,没有预编译,用#{}

由于业务需要不得不用#{}时,务必要验证前端传过来数据的合法性

 

 

 

 

 

 

posted @ 2021-11-29 23:20  lzstar-A2  阅读(235)  评论(0编辑  收藏  举报