StudentManager代码审计
简介
继续入门代码审计的小项目,今天是StudentManager
项目地址为:https://github.com/Hui4401/StudentManager
IDEA导入servlet包:
1.点击Project Structure
2.点击Libraries
3.点击上方的+号,在弹出窗选中java,找到tomact所在的目录,在lib中找到servlet-api.jar
添加进去即可
部署中可能遇到404的问题:https://blog.51cto.com/u_14604401/5692898
另外一个注意点:修改数据库连接的时候注意多个servlet中都要修改….弄了半天没懂当时
Cookie绕过登录验证
在index.jsp
处:
遍历所有cookie字段,判断是否cookie中存在name的键
如果cookie中存在name键,就把name对应的值作为findWithId(
)方法的参数调用该方法
如果返回的结果是老师就跳转到one_page_student
如果是学生就进入student/main.jsp
跟进findWithId()
:
这里仅仅是把name的值,在数据库中查询,如果查到结果就返回
题外话:这里sql语句直接进行拼接,肯定存在注入
复现:
伪造一下存在的教师账户(cookie中添加存在用户111),不用登录就可以直接跳转到后台
|
|
绕过认证直接进入后台
SQL 注入
1
之前前看到findWithId()
中存在SQL语句拼接,所以存在sql注入可以利用
2
check_login
中将获取到的用户信息传给checkAccount
进行验证:
可以看到也是拼接了id和password:
存在注入,这里可以万能密码登录了:
3
又是一个findWithid
|
|
4
在scoreD.java
里面的findWithId
:
追踪发现在这里进行了调用:
我这里连接数据库有点问题,所以借图:https://xz.aliyun.com/t/12105?
其他注入点:
注意:cookie注入还有一点坑点,空格和,号不能用
全局搜索关键字就行
任意用户注册
通过session获取验证码的值,如果验证码正确则注册成功:
验证码randStr
对应的值是在code.jsp
中设置的,且并没有去设置失效的时间,可以重复利用
注册一个用户aaa 抓包然后把用户名aaa改成bbb,别的不动
全部注册成功
越权修改头像+任意文件上传
这个上传头像是个上传图片文件的功能,这里的mac也没演示,可以试试能不能截断:
通过获取的id上传到文件夹id命名的文件
展示头像时候是直接调用id查看这个id名的文件:
所以上传头像的时候抓包替换id为别人的:
目录穿越
刚才上传头像代码处,尝试把id修改为../
来实现目录穿越的文件上传
可以看到穿越成功: