Laravel Debug mode远程代码执行漏洞(CVE-2021-3129)复现分析

Laravel Debug mode远程代码执行漏洞(CVE-2021-3129)复现分析

漏洞描述:

Laravel 是一个免费的开源 PHP Web 框架,在国内外应用十分广泛。2021年1月份,国外某安全研究团队披露了 Laravel <= 8.4.2 版本中存在远程代码执行漏洞。

当Laravel开启了Debug模式时,由于Laravel自带的Ignition组件的某些函数功能存在过滤不严的问题,导致攻击者可以发起恶意请求,构造恶意Log文件等方式触发Phar反序列化,造成远程代码执行,执行任意命令控制服务器。

影响范围:

Laravel 框架 < 8.4.3

facade ignition 组件 < 2.5.2

漏洞分析:

环境搭建

系统环境:centos 7

Laravel:Laravel v8.30.0

PHP:PHP v7.3.25

运行以下命令使用docker部署Laravel漏洞环境

git clone https://github.com/SNCKER/CVE-2021-3129

cd CVE-2021-3129

docker-compose up -d

docker images

 浏览器访问http://ip:8888,出现以下界面则表示Laravel漏洞环境搭建成功

远程代码执行漏洞分析

安装好环境,使用命令

docker ps -a

docker exec -it d1ef96fcb17f /bin/sh

进入容器,执行容器命令

查看.env文件,此时app key为空

在错误页面点击generate app key

burpsuite抓包可以抓到一个参数为solution的post请求包。

此时再去查看.env文件,app key已经被赋予了一个值。

刷新页面也正常了。

在源码中搜索上述请求包中的GenerateAppKeySolution,发现其在\Laravel\src\vendor\facade\ignition\src\Solutions路径下。在这个目录下存在9个solution php文件,通过这些solution,开发者可以通过点击按钮的方式,快速修复一些错误。本次漏洞就是其中的MakeViewVariableOptionalSolution.php过滤不严谨导致的。

所有的solution都是通过solution控制器进行调用的,控制器的路径为\Laravel\src\vendor\facade\ignition\src\Http\Controllers\ExecuteSolutionController.php。当解决不同的错误时,就会调用不同的solution,solution中的run方法会接收参数执行相应操作。

跟进MakeViewVariableOptionalSolution.php中的run方法,发现其调用了makeOptional方法。makeOptional方法采用file_get_contents函数处理接收参数中的viewFile参数,file_get_contents函数的作用是把整个文件读入一个字符串中。此处viewFile参数是可控的,且接收后也未作任何处理。

可以实现php反序列化漏洞从而RCE,如果存在文件上传功能,通过在文件中插入构造的恶意序列化内容,上传后配合配合phar://伪协议给viewFile参数赋值,就可以实现反序列化远程命令执行

漏洞复现

远程代码执行漏洞复现

将exp下载到本地

https://github.com/SNCKER/CVE-2021-3129/blob/master/exploit.py

给phpggc执行权限

        chomd  777  phpggc/phpggc

        ls

修改exploit.py中的url为自己的漏洞地址http://192.168.10.132:8888

        vim exploit.py

        :wq

 

把exp和phpggc放在同一目录下,使用python3执行exp

        ls

        python3  exploit.py

 

 最终,得到密码。

修复建议

安全版本

Laravel 8.4.3及其以上版本

facade ignition 2.5.2 及其以上版本

修复方案

将Laravel框架和ignition组件升级至安全版本

参考文章:https://blog.csdn.net/weixin_44023403/article/details/115262270

                  https://www.bilibili.com/read/cv12126821

Guess you like

Origin blog.csdn.net/qq_48985780/article/details/121300427