JPressProjects / jpress

JPress,一个使用 Java 开发的建站神器,目前已经有 10w+ 网站使用 JPress 进行驱动,其中包括多个政府机构,200+上市公司,中科院、红+字会等。
http://www.jpress.cn
GNU Lesser General Public License v3.0
2.66k stars 1.18k forks source link

jpress后台存在命令执行漏洞-恶意插件 #167

Closed Er1cccc closed 2 years ago

Er1cccc commented 2 years ago

审计过程

jpress后台提供了插件安装功能,在io.jpress.web.admin._AddonControllerdoUploadAndInstall方法,该方法的作用是先处理文件上传,然后进行插件安装

image-20211221123337325

文件上传的步骤略,直接看安装部分

image-20211221123838727

跟进AddonManager.me().install(newAddonFile)方法,在这个方法中,先调用了一下AddonUtil.readAddonInfo读取插件信息

image-20211221124437123

跟进AddonUtil.readAddonInfo,在这个方法里面会创建一个类加载器来加载插件里的类

image-20211221124722280

跟进classLoader.load(),这个方法的作用就是先加载类,然后把不同的类进行归类,Controller归到一起,Interceptor归到一起

先加载类

image-20211221124855501

然后根据类的功能进行归类,把他们分别添加到了addonInfo的特定字段当中

image-20211221125020872

接下来在处理请求时就会利用到这些controller

攻击步骤

  1. 使用弱口令进入后台

  2. 上传恶意插件jpress-addon-helloworld-4.0.jar

image-20211220230337451

  1. 安装完成查看一下插件是否存在

image-20211220230357826

  1. 利用插件实现命令执行,访问http://127.0.0.1/helloworld/?command=dir

image-20211220230448114

JPressProjects commented 2 years ago

不处理这个问题,原因是: 1、必须获得 JPress 的后台登录地址,虽然有默认的登录地址,但是可配置成其他复杂的地址 2、拥有登录地址后,必须有管理员的账号和密码,这种一般只有设置了弱密码,或者管理员主动泄漏。 3、安装了 恶意 的插件

而目前 Java 行业凡是对于可以安装插件的产品来讲,都是无法避免这个问题的。这个需要网站管理提高安全意识、设置复杂的登录地址和登录账号密码,不轻易安装不认可的插件即可解决。这种由于安全意识造成的问题,并非软件问题。