一起学习交流~

记一次因库网校代码审计

代码审计 star 10个月前 (11-29) 539次浏览 已收录 0个评论

一.项目源码

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

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

二.测试环境

  • JDK 1.8
  • Tomcat 7
  • Mysql 5.7
  • maven 3.6
  • IntelliJ IDEA 2019.03

三.源码审计

1.横向越权漏洞

1.1可能有越权漏洞的代码

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

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

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

1.2漏洞验证

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

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

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

打开edu_user表,密码是md5加密

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

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

1.3修复建议

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

2.sql注入

2.1可能有sql注入的代码

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

业务层

controller层

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

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

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

构建cookie注入命令

成功暴库

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

2.3修复建议

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

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


作  者:lzstar-A2
出  处:https://www.cnblogs.com/lzstar/
关于作者:一名java转安全的在校大学生
版权声明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。
特此声明:所有评论和私信都会在第一时间回复。也欢迎园子的大大们指正错误,共同进步。或者直接私信我!

qq:2694200519

喜欢 (0)
订阅评论
提醒
guest
0 评论
内联反馈
查看所有评论