由于传播、利用本公众号菜狗安全所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,公众号菜狗安全及作者不为此承担任何责任,一旦造成后果请自行承担!如有侵权烦请告知,会立即删除并致歉。
文章目录
项目介绍
软件架构
环境部署
1、创建数据库
2、修改pom.xml文件
3、配置tomcat
漏洞分析
第一处:admin/admin
SQL注入挖掘技巧(数据库监控)
漏洞复现
第二处:admin/div_data/
delete
(无漏洞)
其它漏洞
前台
SQL
注入
漏洞复现
/
admin
/
content
/
data
注入
XSS
总结
项目介绍
JFinalCMS,极速开发,动态添加字段,自定义标签,动态创建数据库表并crud数据,数据库备份、还原,动态添加站点(多站点功能),一键生成模板代码,让您轻松打造自己的独立网站,同时也方便二次开发,让您快速搭建个性化独立网站,为您节约更多时间,去陪恋人、家人和朋友
软件架构
- MVC:JFinal
- 页面:enjoy
- 缓存:ehcache
- 数据库:Mysql
环境部署
这个系统有两个版本,一套 JFinal版本,一套Springboot版
JFinal:https://gitee.com/heyewei/JFinalcms
Springboot:https://gitee.com/heyewei/SpringBootCMS
我这里下载的是JFinal版本的
项目下载到本地后,使用IDEA打开
1、创建数据库
数据库配置文件:JFinalcms-mastersrcmainresourcesconfig.properties
SQL文件:JFinalcms-masterJFinalCMS.sql
根据数据库配置文件创建对应的数据库,连接端口和账号根据自己环境修改
2、修改pom.xml文件
给maven-compiler-plugin插件添加版本
3、配置tomcat
配置完成后,启动项目
后台地址:admin/login
登入账号:admin/123456
漏洞分析
第一处:admin/admin
由于知道了漏洞触发路由,所以这里直接全局搜索admin/admin
只有一个文件,我们直接点进去看
漏洞点是index(),我一开始看的时候没注意到getPara方法,一直在看底下的小方法,发现不是有过滤就是,不可控,到后面才注意到。
我们先看getPara方法
这个getPara是作者自己写的一个成员方法,它里面就一行代码:this.request.getParameter(name),request是常量,值是HttpServletRequest,执行getPara就等同于执行HttpServletRequest.getParameter(name),就是get方法接收数据,参数值name是getPara()里的参数。
回看前面的代码就是name和username参数,它接收参数后,处理这两个参数值的代码是第44行
跟进findPage方法
里面是执行的sql语句,可以看到name和username的值都是直接拼接到sql语句中的,而且这里代码中也没有看到过滤,那么这里基本可以判断存在注入漏洞了
SQL注入挖掘技巧(数据库监控)
项目地址:https://github.com/cw1997/MySQL-Monitor
这里可以使用MySQL监控工具,看一下语句执行(在挖sql注入非常好用)
burp抓包
可以看到数据库执行语句
通过这个可以判断,数据有没有带入语句中,语句符号有没有转义等,还是很舒服的
漏洞复现
漏洞复现,我这里直接用sqlmap搜哈了
burp抓包,name后面加上*,保存成txt文件
存在注入,参数换成username也是一样的
第二处:admin/div_data/delete(无漏洞)
还是一样,全局搜索对应路由
只有一处,看下代码
这里有两个可控参数,divId和ids,这里执行语句在第131行,Db.update
虽然说这里的ids是直接拼接到语句中,但是这里ids的数据类型是Integer,是注入不了的,然后我又看了下findById方法,也没看到有用信息,这一处是没有注入的
其它漏洞
前台SQL注入
这两处sql注入都是在后台产生的,危害相对但是在我查找这套系统的信息的时候,发现它还有一个前台的sql注入
漏洞产生地址:/search
思路还是一样,直接全局搜索 /search
第一处点进去看
这里两个参数,但是pageNumber是Int型,所以这里看keyword,这里没有看到执行的sql语句,可以用mysql监控看,我这里为了看的更直观,我直接搜关键字keyword
不知道找的对不对,只看到这一处,把keyword的值追加到filterSql中,但是这里好像也没发现过滤啥的,但是看到poc是有做绕过空格
漏洞复现
burp抓包
payload:
/search?keyword=111'and(select*from(select+sleep(4))a/**/union/**/select+1)='
执行后可以看到有延时,漏洞是存在的
监控到的执行语句
更多的信息没分析出来,还是太菜了。。。
/admin/content/data注入
这个也是后台的,分析起来和/admin/admin,那个是一样的,都是String类型参数值直接拼接到语句中,感兴趣的可以看下,我感觉没必要。
XSS
这种漏洞没啥危害,给个参考链接
https://gitee.com/heyewei/JFinalcms/issues/I8VHM2
https://gitee.com/heyewei/JFinalcms/issues/I8VHGR
总结
我这里主要分析的是JFinal版本,Springboot版的话,使用的是mybatis-plus的动态绑定这几处sql注入都没有,但是好像有RCE漏洞,我这里就不继续写了。
这篇文章应该是属于1day分析(有公开poc不知道算不算1day),知道漏洞触发路由,所以审计起来快,正常来说,SQL注入的审计流程应该是先判断数据库连接使用的技术,然后根据不同的数据库连接技术,使用不同关键字搜索配合数据库监控来审计。
最近在HVV,一天12h,实在是没有什么时间更文章,学技术的时间都非常有限,这篇还是之前写的库存,等HVV结束要接着沉淀了,到时候更新应该会比较勤快
原文始发于微信公众号(菜狗安全):JAVA代审-JFinalCMSV5.0.0sql注入分析
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论