环境搭建
导入数据库
create database liuxing;
use liuxing;
source liuxing.sql;
设置字符集为GBK
show tables;
访问安装文件路径
http://127.0.0.1/install/index.html
填好相关参数即可。
后台管理地址
http://127.0.0.1/admin/index.jsp
默认管理员账号密码
admin/admin
漏洞分析
安装漏洞 ?
打开文件夹,发现安装成功后, 没有删除安装页面 ,很有可能存在重安装漏洞。
安装路径为
http://127.0.0.1/install/index.html
跟一下/install/index.html
再继续跟进install.jsp
继续跟进install_setup.jsp
通过import导入了要使用的类 liuxing.util.Install,继续跟进
安装完成后会通过updateConfig函数将 db_an 设置为no,
通过install_setup.jsp进行安装时,对db_an进行了判断,所以即使install页面没有删除 ,但是已经不能进行重复安装了。
SQL注入 ?
从前台开始,看见搜索框,点击“搜索”,跳转到so.jsp
跟进一下so.jsp
发现存在prepareStatement, 注入是基本凉凉。这里采用了预编译,允许数据库已参数化的形式进行查询,当运行时动态地把参数传给PreprareStatement时,即使参数里有敏感字符如 or '1=1',数据库也只是会作为一个参数一个字段的属性值来处理,而不会作为指令,所以,SQL注入基本无戏!看看其他有sql查詢的的地方:
结果都是像这样的
像这样的
有很多'?', 这其实是占位符, 预编译机制的需要。
存储型XSS
先注册一个账号,看看修改资料的功能点
尝试闭合一下前面的>的,查看源码发现payload没有被转义
""><script>alert(don9sec)</script>
然后再次点开修改资料,成功弹窗
存储型xss一枚。
看一下漏洞原理,根据关键字'youxiang',跟一下传参过程
跟进Userguanli.getInstance().Xiugaiyonghu2()
继续跟userDao.Xiugaiyonghu2,进到UserDaoMysql文件,可以看到数据库与资料修改功能点的交互
可以看见,youxiang这个参数没有经过任何过滤机制或判断机制,直接就拼接到sql语句中,存到数据库。
SQL注入
登录后台,开启代理后对管理员的功能都测试一遍,顺便抓包分析,再用户管理功能点存在一处时间盲注。
抓包
sqlmap跑一下
存在时间盲注,跟一下源码 delete.jsp
往上回溯 函数shanchuyonghu
delete语句中没做任何过滤,直接拼接参数
delete from user where id in('3') or if(ascii(substr(user(),1,1)) < 72,0,sleep(1));
delete from user where id in('3') or if(ascii(substr(user(),1,1)) < 72,0,sleep(5));
delete from user where id in('3') or if(ascii(substr(user(),1,1)) < 72,0,sleep(10));
文件上传
在“其他管理” -> “添加友情链接”处发现一处文件上传的接口
对应的文件为shangchuanwen3.jsp, 主要看这两段代码:
开发者意图
黑名单机制: 如果后缀为exe,asp等后缀,则会跳进wrong type
正则匹配 :
String regExp = ".+(.+)$";
四个转义字符,即1为2转义,3为4转义,最后为; 也就是说文件名必须是带路径的形式,如xxxx。
这一段代码表示文件名的生成,时间戳+.gif, 估计没戏了
此条路径先放着,看看shangchuanwen.jsp和shangchuanwen2.jsp,本以为代码会差不太多,但是在
shangchuanwen2.jsp文件后缀竟然可控
这里文件名为
pathname=date+men
m.group(1)的结果根据正则表达式来的,比如我们输入的filename="test.jsp",那么group(1)则为.jsp
而date为时间戳,也是可控的,所以这里完全可以构造想要上传的文件;
wen/,上传的文件所在路径
上传test.jsp, 打印字符串“don9sec”
文件名为时间戳+.jsp, 浏览器成功访问
上传哥斯拉的马子
上传成功。
参考:
http://www.codersec.net/2016/12/%E9%93%81%E4%BA%BA%E4%B8%8B%E8%BD%BD%E7%B3%BB%E7%BB%9F%E4%BB%A3%E7%A0%81%E5%AE%A1%E8%AE%A1/
本文始发于微信公众号(don9sec):Java代码审计复现-铁人下载系统 v1.0
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论