LARAVEL

LARAVEL下的利用方式

先点题,看看在laravel下怎么触发这个漏洞。

LARAVEL = V8.4.2 调试模式下的RCE分析直接把上述请求body中的viewFile参数的值替换为一个恶意ftp地址就可以实现rce那是随便一个ftp服务都可以吗?当然不是这个ftp服务需要满足一个条件:当客户端第一次连接时返回payload,第二次连接时将客户端连接导向其他ip:port那为什么只要访问满足上述条件的ftp服务就可以完成攻击呢?这咱们就得来看看laravel的代码逻辑了:

laravel在第6版之后,debug模式使用了ignition组件来美化堆栈信息,除此之外,ignition还附带了“一键修复bug”的功能,例如:如果我们在模板中使用了一个未知变量,会发生如下情况

LARAVEL = V8.4.2 调试模式下的RCE分析只要我们轻轻点击“Make variable optional”就可以一键修复bug

那ignition是怎么实现这一功能的呢,抓个包看看:

LARAVEL = V8.4.2 调试模式下的RCE分析其中,我们重点关注viewFile这个参数,代码中对它进行了如下处理:$contents = file_get_contents($parameters['viewFile']); file_put_contents($parameters['viewFile'], $contents)正是这里的一读一写操作给我们带来了利用的机会~接下来咱们以打本机的fpm服务为例来演示如何利用上述看似安全的代码实现rce

生成payload

使用gopherus生成攻击fastcgi的payload

LARAVEL = V8.4.2 调试模式下的RCE分析

LARAVEL = V8.4.2 调试模式下的RCE分析

本地监听一个端口用于接收reverseshell

nc -l 7777

复现