jflyfox / jfinal_cms

jfinal cms是一个java开发的功能强大的信息咨询网站,采用了简洁强大的JFinal作为web框架,模板引擎用的是beetl,数据库用mysql,前端bootstrap框架。支持oauth2认证、帐号注册、密码加密、评论及回复,消息提示,网站访问量统计,文章评论数和浏览量统计,回复管理,支持权限管理。后台模块包含:栏目管理,栏目公告,栏目滚动图片,文章管理,回复管理,意见反馈,我的相册,相册管理,图片管理,专辑管理、视频管理、缓存更新,友情链接,访问统计,联系人管理,模板管理,组织机构管理,用户管理,角色管理,菜单管理,数据字典管理。
http://mtg.jflyfox.com/
Apache License 2.0
626 stars 286 forks source link

[CVE-2022-28505] SQL injection vulnerability exists in JFinal CMS 5.1.0 #33

Open N1ce759 opened 2 years ago

N1ce759 commented 2 years ago

SQL injection vulnerability exists in JFinal CMS 5.1.0

Analysis

The vulnerability appears in lines 23-47 of the com.jflyfox.system.log.LogController.java image

Here call SQLUtils to query with the following statement:

select count(*)  from sys_log t where 1=1

When the length of model.getAttrValues() is not equal to 0, go into the if branch and call the whereEquals() method to concatenate whereEquals()image

The SQL statement after concatenation is as follows:

select count(*)  from sys_log t where 1=1 AND t.log_type = 1 

Moving on, the orderBy parameter is concatenated to the end of the SQL statement String orderBy = getBaseForm().getorDerby (); defines the source of the orderBy argument getBaseForm(): image getOrderBy(): image

The orderBy parameter is the form.OrderColumn parameter passed from the front end So you can construct payload to exploit this vulnerability

Exploit

Maven Startup Environment Vulnerability address: /jfinal_cms/system/log/list Administrator login is required. The default account password is admin:admin123 image

Injection parameters: form.orderColumn payload:) AND (SELECT 6361 FROM (SELECT(SLEEP(5)))tAVU)-- woqr image

SQLMAP Injection: image