JFinalcms代码审计

2024-10-27 30 0

JFinalCms是开源免费的JAVA企业网站开发建设管理系统,极速开发,动态添加字段,自定义标签,动态创建数据库表并crud数据,数据库备份、还原,动态添加站点(多站点功能),一键生成模板代码。

环境布置:IDEA打开项目,等待maven加载好。

使用phpstudy集成的mysql5.7数据库即可,导入JFinalCMS.sql数据库。

修改pom文件:

JFinalcms代码审计插图

使用local9.0.90TOMCAT,JDK环境1.8。

JFinalcms代码审计插图1

运行TOMCAT,打开后台:

http://localhost:8081/cms_war_exploded/

反射xss:

搜索/admin/login定位到代码块:

JFinalcms代码审计插图2

由上可见,通过getPara获取账号密码后再通过render渲染到前端页面:

JFinalcms代码审计插图3

再分析前端代码构造xss进行闭合:

JFinalcms代码审计插图4

存储xss:

前台存在留言功能,留言会被管理员审核:

JFinalcms代码审计插图5

登录后台,点击扩展管理,留言信息:

JFinalcms代码审计插图6

原理同上。

Sql注入漏洞(1):

该CMS存在很多处sql注入漏洞,大多数都是以+直接拼接sql注入语句造成,可以全局搜索+号寻找注入点。

JFinalcms代码审计插图7

找到以上代码块,可以直接看到title参数通过+直接拼接进入sql语句执行,于是我们继续找前端是调用的什么接口,并看看是否在接受参数时进行了过滤。

搜索findPage参数:

JFinalcms代码审计插图8

可以看到Contentcontroller层中存在title参数,点进去,定位到具体代码块:

JFinalcms代码审计插图9

可以看到调用了getPara方法获取传入的title参数,继续跟进getPara方法:

JFinalcms代码审计插图10

并未重写该方法,只是简单获取参数,未进行任何过滤,回到原来的controller层,向上翻,找到接口调用,数据包如下:

POST /cms_war/admin/content/data HTTP/1.1

Host: localhost:8081

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:130.0)
Gecko/20100101 Firefox/130.0

Accept: text/html, \*/\*; q=0.01

Accept-Language:
zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2

Accept-Encoding: gzip, deflate, br

Content-Type: application/x-www-form-urlencoded; charset=UTF-8

X-Requested-With: XMLHttpRequest

Content-Length: 47

Origin: http://localhost:8081

Connection: keep-alive

Referer: http://localhost:8081/cms_war/admin/content

Cookie: JSESSIONID=EF8BB53892173B8A4577EFC32D0215BA;
listQuery=categoryId%3D&title%3D&sorts%3D&pageNumber%3D1

Sec-Fetch-Dest: empty

Sec-Fetch-Mode: cors

Sec-Fetch-Site: same-origin

Priority: u=0

categoryId=&title=%E7%BD%91&sorts=&pageNumber=1

将localhost替换为物理机IP放入sqlmap:

JFinalcms代码审计插图11

证明存在sql注入漏洞,其对应前端功能如下:

JFinalcms代码审计插图12

Sql注入漏洞(2):

前台搜索框处也存在sql注入漏洞,只不过此处的调用过程较难找到。

JFinalcms代码审计插图13

如上图搜索关键字search定位到代码块:

JFinalcms代码审计插图14

仔细分析如上代码,我无法追踪keyword的具体调用。

以上代码是通过setAttr方法直接存储到当前请求的属性当中。我对keyword处打断点调试也未理清楚它后续是如何调用的。

于是再换一种思路,直接全局搜索keyword:

JFinalcms代码审计插图15

定位到具体代码,但无法确定是否是调用的此处findPage代码来构造sql。

搜索findPage也没有明确思路。

于是改变思路,由于keyword关键字最终是通过模板template渲染调用。

JFinalcms代码审计插图16

于是在template处挨个点进去找类似功能代码:

JFinalcms代码审计插图17

最终定位到代码块:

JFinalcms代码审计插图18

根据注释明确此处代码是根据不同关键词进行搜索,包含关键词keyword,继续查看keyword调用链:

JFinalcms代码审计插图19

确定是通过调用findPage,传入keyword参数来调用数据:

JFinalcms代码审计插图20

用sqlmap验证keyword参数:

JFinalcms代码审计插图21

任意文件读取:

翻找controller层代码,找到文件下载代码块:

JFinalcms代码审计插图22

可见未对传入的fileKey参数进行过滤,直接拼接进行文件读取。

(且我在翻找filter过滤器后,发现似乎 并未对该路径进行权限校验,可进行未授权调用接口)

JFinalcms代码审计插图23


4A评测 - 免责申明

本站提供的一切软件、教程和内容信息仅限用于学习和研究目的。

不得将上述内容用于商业或者非法用途,否则一切后果请用户自负。

本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。

如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。敬请谅解!

程序来源网络,不确保不包含木马病毒等危险内容,请在确保安全的情况下或使用虚拟机使用。

侵权违规投诉邮箱:4ablog168#gmail.com(#换成@)

相关文章

办事处网络安全监控与事件响应;国外员工终端安全性怎么保障 | FB甲方群话题讨论
拿不下总统之位,那就用热加载拿下验证码识别与爆破好了!
Sooty:一款SoC分析一体化与自动化CLI工具
shiro CVE-2016-6802 路径绕过(越权)
Apache Solr 身份验证绕过漏洞(CVE-2024-45216)详解
llama_index的CVE-2024-4181漏洞根因分析

发布评论