声明:由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章作者不为此承担任何责任。
Laravel源码:https://github.com/laravel/laravel
参考链接:
https://www.ambionics.io/blog/laravel-debug-rce 原文
https://www.nosec.org/home/detail/4651.html 翻译版
https://blog.csdn.net/caiqiiqi/article/details/112556086
https://mp.weixin.qq.com/s/k08P2Uij_4ds35FxE2eh0g
历史版本漏洞信息:
CVE-2017-16894 框架信息泄漏 利用条件 version<=5.5.21
CVE-2018-15133 反序列化 利用条件 version 5.5.40
CNVD-2020-24410 FrozenNode Laravel-Administrator: 5.0.12
CVE-2021-3129 利用条件 Laravel < 8.4.3;facade ignition < 2.5.2
SQL注入、XSS......
本篇文章主要针对CVE-2021-3129编号漏洞进行复现。
- 漏洞描述
Facade Ignition for Laravel是比利时Facade公司的一款运行在Laravel Web框架中的可自定义的错误页面。Ignition for Laravel 2.5.2之前版本存在授权问题漏洞,该漏洞源于程序未进行正确的身份验证,攻击者可利用该漏洞执行任意代码。 - 环境搭建
$ git clone https://github.com/laravel/laravel.git
$ cd laravel
$ git checkout e849812
$ composer install
$ composer require facade/ignition==2.5.1
$ cp ./.env.example ./.env # .env文件必须这里设置了`APP_DEBUG=true`
$ php artisan serve
image-20210629162115504.png
- 配置Laravel加密key
image-20210629161704390.png
image-20210629161823354.png
http://127.0.0.1:8000/_ignition/execute-solution
生成APPkey请求体内容:
{solution: "Facade\Ignition\Solutions\GenerateAppKeySolution", parameters: []}
parameters: []
solution: "Facade\\Ignition\\Solutions\\GenerateAppKeySolution"
通过这个请求Ignition
成功在配置文件中生成了一个key。
image-20210629162042912.png
APP_KEY=base64:T4fFTEv/U0ttucMj/iMpJIu5mPl16I7iG20DpZqyoqs=
image-20210629214950301.png
image-20210629214956738.png
漏洞成因:
vendor/facade/ignition/src/Solutions/MakeViewVariableOptionalSolution.php
过滤不严谨导致的
漏洞利用:
rce利用后的laravel.log文件:
image-20210629213409361.png
利用结果:
image-20210629215438747.png