[代码审计]某租车系统JAVA代码审计[前台sql注入]

时间:2022-09-17 14:45:18

0x00 前言

艰难徘徊这么久,终于迈出第一步,畏畏缩缩是阻碍大多数人前进的绊脚石,共勉。

系统是租车系统,这个系统是Adog师傅之前发在freebuf(http://www.freebuf.com/articles/web/162910.html)的,他审的时候没有发现sql注入,但在评论中有个师傅说有前台sql注入。

那么我就来找找前台的sql注入吧,虽说是java但其实代码审计的点都是通用的,万变不离其宗。

扯远了,这篇文章,算是踏入java代码审计领域的开篇。

0x01 基础环境搭建

源码下载:http://down.admin5.com/jsp/135501.html

环境还是某study一把梭,下载链接(http://phpstudy.php.cn/phpstudy/JspStudy.zip)

IDE的话用的是IDEA

安装步骤按照使用说明来就是了

[代码审计]某租车系统JAVA代码审计[前台sql注入]

安装步骤1中,注意要把tomcat的server.xml中的这一行注释掉

[代码审计]某租车系统JAVA代码审计[前台sql注入]

步骤2:在数据库的目录中打开cmd窗口,导入mysql的命令: (jspstudy的mysql默认账号密码是root/root)

mysql -u root -p opencar <opencar.sql

顺便一提这个租车系统的默认配置账号密码也是root/root,见db.properties

[代码审计]某租车系统JAVA代码审计[前台sql注入]

接着重启jspstudy即可。

访问url:http://localhost:8080/opencarrun/,无报错则表示成功安装。

0x02 前台sql注入

加载源码到IDEA,打开大概是这样子的。

[代码审计]某租车系统JAVA代码审计[前台sql注入]

xss和短信轰炸就不说了,直接找sql注入。

根据Adog师傅的文章,我找到了几个处理sql语句的类,比如

[代码审计]某租车系统JAVA代码审计[前台sql注入]

加红的原因是因为IDEA找不到类的位置,加载的opencar文件夹也确实没有源码。

那么如何找到这里的源码呢?其实在opencarrun\WEB-INF\lib\中存放了相关的依赖jar包,其中有一个名为car-weishang-1.0.jar的jar包

因为是jar包,我们需要反编译回java文件。

下载jd-gui(http://jd.benow.ca/),可以单独下载,也可以下载idea的插件,我这里是单独下载。

反编译一下这个包,可以拿到相关的源码:

[代码审计]某租车系统JAVA代码审计[前台sql注入]

重点关注service下的,因为是前台,所以权限有限,可以重点关注get前缀的方法(表示查询)

找sql注入的话其实也没有比较好的方法,就是一个个看,再辅以一定的搜索技巧(看源码规律配上正则来搜)。

这套系统从Adog师傅的文章知道是用了预编译的,那么我们要考虑的就是预编译防御不了的地方,比如like,in,order by这三个位置的。

参考京东安全的这篇文章(https://mp.weixin.qq.com/s?__biz=MjM5OTk2MTMxOQ==&mid=2727827368&idx=1&sn=765d0835f0069b5145523c31e8229850&mpshare=1&scene=1&srcid=0926a6QC3pGbQ3Pznszb4n2q),虽然说的是mybatis框架的,但是预编译的道理还是一样。

[代码审计]某租车系统JAVA代码审计[前台sql注入]

再结合,java是强类型语言,要注入的话就必须是String类型,那么我们只需要分析可传String参数的方法即可。

[代码审计]某租车系统JAVA代码审计[前台sql注入]

经过刷选,最终符合条件的方法没几个,再一一去看代码是否会有注入,有注入了再去回调调用的地方,最终找到外部传进来的参数和访问url。

很幸运找到了几个。

看到ShopService类的getGoodsPojoListByTypeAndcatAndBranAndPrice方法

[代码审计]某租车系统JAVA代码审计[前台sql注入]

回溯看看方法在哪里调用到(Ctrl+Shift+F)

[代码审计]某租车系统JAVA代码审计[前台sql注入]

在GoodList.java文件中,跟进去。

[代码审计]某租车系统JAVA代码审计[前台sql注入]

这个方法的几个参数都是有注入的。

同理还有ShopService类的getGoodsPojoListByTypeAndcatAndBranAndPriceCount方法、getGoodsListByExtendCat方法也是一样,但是位置都是在getGoodsPojoListByTypeAndcatAndBranAndPrice方法之后,所以利用的话还是getGoodsPojoListByTypeAndcatAndBranAndPrice方法比较好利用,至于其他service类也是有可能有注入,就不再一一分析。

分析GoodList.java的访问url是什么,看到匹配的是/goods url下面。

[代码审计]某租车系统JAVA代码审计[前台sql注入]

直接访问会跳404页面

[代码审计]某租车系统JAVA代码审计[前台sql注入]

通过对前端页面研究发现是通过首页的搜索页面进去的。

[代码审计]某租车系统JAVA代码审计[前台sql注入]

其中的cat_id就是我们的注入参数(当然还有其他的,不一一举例),因为系统是对异常进行了捕获的,所以不能直接进行报错注入。

那么就只能进行盲注了,用union回显也是不行的,因为这里的三条语句都是受影响,那么就只能用延时盲注了。

但因为受影响的字段较多,且会执行三遍,并且这里用不了and,只能用or。

那么用or  1=1 和 or 1=2查询的时间就已经足够了。

or 1=2的时候大约执行7-8秒,or 1=1的时候大约执行24-26秒左右。

那么我们可以使false的时候为or 1=2,true为or 1=1 ,payload如下:

http://localhost:8080/opencarrun/goods?cat_id=1)%20or+1=if(ascii(substr(user(),1))=114,1,2)%23&menuId=7+

底层不知道为什么还有一个报错,但不影响注入

[代码审计]某租车系统JAVA代码审计[前台sql注入]

虽然是前台注入,但是这个注入点颇为鸡肋,实战意义不大,仅供参考。

到此,该CMS告一段落。

0x03 总结

刚开始还有很多生疏的地方,慢慢来吧。

[代码审计]某租车系统JAVA代码审计[前台sql注入]的更多相关文章

  1. 基于JSP&plus;Servlet开发在线租车系统 java 源码

    运行环境: 最好是java jdk 1.8,我们在这个平台上运行的.其他版本理论上也可以.IDE环境: Eclipse,Myeclipse,IDEA都可以tomcat环境: Tomcat 7.x,8. ...

  2. 我的Java之旅——答答租车系统的改进

    之前的答答租车系统虽然可以实现项目的要求,但是没有用Java面向对象,今天用面向对象的三大特性封装.继承和多态来改进原来的代码.题目和之前的代码参考上篇博客,这里不再述说. 改进后的代码: Vehic ...

  3. 我的Java之旅——答答租车系统

    今天试着写了一个新的程序,叫做"答答租车系统",是慕课网上的一个综合练习,戳我看原题. 项目要求截图如下: 我的代码(简单粗暴版): Vehicle.java public cla ...

  4. Java学习笔记三十&colon;Java小项目之租车系统

    Java小项目之租车系统 一:项目背景介绍: 根据所学知识,编写一个控制台版的“呱呱租车系统” 功能: 1.展示所有可租车辆: 2.选择车型.租车量: 3.展示租车清单,包含:总金额.总载货量以及其车 ...

  5. Java练习 SDUT-3349&lowbar;答答租车系统(面向对象综合练习)

    答答租车系统(面向对象综合练习) Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 各位面向对象的小伙伴们,在学习了面向对 ...

  6. Java审计之SQL注入篇

    Java审计之SQL注入篇 0x00 前言 本篇文章作为Java Web 审计的一个入门文,也是我的第一篇审计文,后面打算更新一个小系列,来记录一下我的审计学习的成长. 0x01 JDBC 注入分析 ...

  7. java学习之租车系统

    ​背景:有三种类型的车供给用户来租用​ ​要求:控制台用户交互界面,根据用户需求输出租车价格,结果如下: 创建租车类主要设计过程: 创建租车类 创建Car父类,包含四种属性成员,重写构造方法 创建三种 ...

  8. Java Filter防止sql注入攻击

    原理,过滤所有请求中含有非法的字符,例如:, & < select delete 等关键字,黑客可以利用这些字符进行注入攻击,原理是后台实现使用拼接字符串,案例:某个网站的登入验证的SQ ...

  9. PHPSHE 1&period;7前台SQL注入漏洞分析

    此CMS  SQL注入漏洞产生原因为未将经过 addslashes() 函数过滤的数据使用单引号包裹,从而导致的SQL注入漏洞.接下来看漏洞详情: 首先查看phpshe下的common.php文件37 ...

随机推荐

  1. 转&colon; git复制到非空目录

    1. 进入非空目录,假设是 /workdir/proj1 2. git clone --no-checkout https://domain_or_ip/source.git tmp 3. mv tm ...

  2. HBase完全分布模式安装

    假设Hadoop已经成功安装. 实验环境如下: centos 6.4 hadoop-0.20.2 hbase-0.90.5       用户名root hadoop安装目录:/root/bin/had ...

  3. 00 alv抬头等

    *&---------------------------------------------------------------------* *& Report ZHJ_TEST0 ...

  4. git使用记录

    唔,git有本地版本管理功能,所以,这个完全是可以拿来自己做版本管理的.所以有必要学习一下,另外,在oschina上开了个账户,用来管理自己一些代码,也是增加自己学习git的动力. 1. 使用clon ...

  5. C&plus;&plus;中尖括号和引号的区别---转载

    如果你还看一些别的C++教程,那么你可能很早就发现了,有些书上的#include命令写作#include <文件名>,但有时候又会出现#include "文件名".你会 ...

  6. DDD(领域驱动设计)理论结合实践

    DDD(领域驱动设计)理论结合实践   写在前面 插一句:本人超爱落网-<平凡的世界>这一期,分享给大家. 阅读目录: 关于DDD 前期分析 框架搭建 代码实现 开源-发布 后记 第一次听 ...

  7. IDEA快捷键 日常整理

    F9 : debug Ctrl+” +/- ” : 当前方法展开.折叠 Ctrl+Shift+”+/-” : 全部展开.折叠 Alt+1 : 工程面板 Alt+4:控制台 Alt+7:查看本类方法 S ...

  8. 微信token验证失败的几种情况

    最近在研究用PHP做微信开发的时候,“修改配置时”,总是遇到token验证失败的提示.历经一番查找,种种输出日志和echo,发现,如果不echo调试信息,也不写日志,就不需要ob_clean(),如果 ...

  9. 将web项目打成war包部署在tomcat步骤

    将web项目打成war包部署在tomcat步骤 1.将自己的项目打成war包. 2.将打包好的war复制到${tomcat.home}/webapps项目下. 3.在${tomcat.hom}/con ...

  10. &lbrack;转&rsqb;Getting started with ASP&period;NET Web API OData in 3 simple steps

    本文转自:https://blogs.msdn.microsoft.com/webdev/2013/01/29/getting-started-with-asp-net-web-api-odata-i ...