之间一直都有去作为一个新手去认识java去收集java代审的学习资料,看得多不如实操一把,所以拥有了这一次的java代审。这里通过freebuf的文章找到一个没有用struct2或是spring框架的cms,相对来说部署较为简单,希望借此cms来帮助自己敲开JAVA代码审计的大门
环境搭建
cms的下载地址:http://down.admin5.com/jsp/135501.html
这里我用的环境是JDK1.8 + Tomcat8.0.x + Jspstudy
安装运行程序
(1)将解压文件夹中的opencarrun安装包复制到tomcat–>webapps–> 下;
(2)将sql导入mysql;
(3)启动tomcat;
(注意要把tomcat的server.xml中的这一行注释掉)
接着重启jspstudy即可。
访问url:http://localhost:8080/opencarrun/
,无报错则表示成功安装
查看源代码目录
后台有一个fckeditor的编辑器,但是发现其漏洞均利用不了;xss漏洞仅通过黑盒测试并没有通过代码去审计;所以关键就找找sql注入的漏洞吧
前台Sql注入
首先映入眼帘的则是搜索这一项功能
查看对应的源代码文件./GoodsList.java
看看文件中都有哪些可控的传参
代码一些方法的姨妈红主要是IDEA找不到类的位置,源代码中没有加载到该类。
在opencarrun\WEB-INF\lib\
中存放了相关的依赖jar包,其中有一个名为car-weishang-1.0.jar
的jar包,因为是jar包,我们需要反编译回java文件。
(因为之前做过安卓app的安全测试,用到过jd-gui)所以这里通过jd-gui软件对jar拖进去进行反编译
重点关注ShopService
类,ctrl+f搜索刚刚的getGoodsPojoListByTypeAndcatAndBranAndPrice
方法
(当然还有其他的,不一一举例,不过基本都是预编译,这个传参则是漏网之鱼,用了预编译的,那么我们要考虑的就是预编译防御不了的地方,比如like,in,order by这三个位置的)举例:
其中的cat_id
就是我们要找的注入参数,因为系统是对异常进行了捕获的,所以不能直接进行报错注入
利用盲注了,用union回显也是不行的,因为这里的三条语句都是受影响。但因为受影响的字段较多,且会执行三遍,并且这里用不了and,只能用or,那么用or 1=1 和 or 1=2查询的时间就已经足够了。
首先注意闭合,)+or+1=1#
的时候大约执行20秒左右
)+or+1=2#
的时候大约执行6秒
那么我们可以使false的时候为or 1=2,true为or 1=1 ,payload如下:
/opencarrun/goods?cat_id=1)+or+1=if(ascii(substr(database(),1))=111,1,2)#&menuId=7
确认数据库名第一位o的ascii为111无误
边学习边记录哈~
参考文章:https://www.freebuf.com/articles/web/162910.html
GOT IT!
******************************************************
具体利用方式需根据具体实践场景~