thinkphp6.0反序列化利用链审计

前言

这几天在忙实验室纳新,然后就是实验室准备创办公司,需要准备好多资料233截止到今天晚上终于把tp6的手册看完了,不得不说确实看一遍就有新的收获,上次看tp5手册遗漏了很多细节或者自己忘了233.看完手册就开始审计吧。
先上参考文章,大师傅就是大师傅啊。

https://www.anquanke.com/post/id/187393#h2-1

https://www.anquanke.com/post/id/194036

环境

tp6安装:

composer create-project topthink/think=6.0.x-dev v6.0

手动设置漏洞点:
别问为什么这样写。。这个反序列化漏洞想要触发就得有内容完全可控的反序列化点,例如: unserialize(可控变量)。
得有程序员这样写才能触发。。

将 application/index/controller/Index.php 代码修改成如下:

<?php
namespace app\controller;

class Index
{
    public function index()
    {
        $u = unserialize($_GET['c']);
        return 'ThinkPHP V6.x';
    }
}

反序列化利用链

根据师傅们的文章

在 ThinkPHP5.x 的POP链中,入口都是 think\process\pipes\Windows 类,通过该类触发任意类的 __toString 方法。但是 ThinkPHP6.x 的代码移除了 think\process\pipes\Windows 类,而POP链 __toString 之后的 Gadget 仍然存在,所以我们得继续寻找可以触发 __toString 方法的点。
这里5.2.x版本函数动态调用的反序列化链后半部分,还可以利用。
可惜我没审计过5.2x的tp链,不过看了一下和tp5.1的链子很像,松了一口气,不然我就是一起审计2个版本了。。

等把所有链子审完再写吧,写多少发多少,这样后续更新会轻松些--

猜你喜欢

转载自www.cnblogs.com/wangtanzhi/p/12913807.html