当前位置: 首页 > 技术干货 > 记某cms的漏洞挖掘之旅

记某cms的漏洞挖掘之旅

发表于:2021-03-15 10:34 作者: mtr 阅读数(1178人)

你是否正在收集各类网安网安知识学习,蚁景网安实验室为你总结了1300+网安技能任你学, 点击获取免费靶场>>


任意文件写入

这个 cms 是基于 thinkphp5.1 的基础开发的,一般我们挖 cms 如果想 rce 的话,可以在 application 文件夹直接搜索file_put_content等危险函数,如下图,我们直接全局定位到这个fileedit方法里面的file_put_content

image-20210310172633211.png

我们看到第一个参数$rootpath,他是被拼接了这么一段路径

$rootpath = Env::get('root_path') . 'theme' . DIRECTORY_SEPARATOR . $template . DIRECTORY_SEPARATOR . $path;

其中$path是我们可控的,那么一般就可以考虑下是否存在路径穿越的问题

再看到第二个参数htmlspecialchars_decode(Request::param('html')也是我们可控的

所以这里就比较清晰了,我们只需要../就可以进行路径穿越,htmlspecialchars_decode也对我们写入 php 代码没有什么影响,所以我们直接 post 传参 path=../../index.php&html=<?php phpinfo();?>即可

image-20210310172752681.png

可以看到已经成功 rce

image-20210310172822426.png

任意文件读取

我们再顺着fileedit这个方法往下瞅瞅,发现还有一个file_get_contents,他的参数也是$rootpath,所以这里也是我们可控的,不同的是进入这个 else 分支我们用 get 传参即可

我们直接传入../../index.php,发现已经成功把index.php读取出来了

image-20210310172854121.png

反序列化漏洞

上面两个漏洞是利用了file_get_contentsfile_put_content,这两个函数都是涉及了 IO 的操作函数,也就是说可以进行操作 phar 反序列化漏洞,但是他们的路径并不是完全可控的,只是后面一小部分可控,所以这条路走不通,所以接下来的思路就是搜索有没有可以操作phar的函数

我们直接全局搜索is_dir,一个一个分析是否可以利用

image-20210310173002672.png

这里我的运气比较好,映入眼帘的是scanFilesForTree这个方法,他的$dir是直接可控的,文章的开头说了这个 cms 是基于 thinkphp5.1 二次开发的,所以我们可以直接利用这个漏洞生成 phar 文件来进行 rce

我们首先看看能不能上传 phar 文件,在后台一处发现可以上传文件

image-20210310173022810.png

我们先抓个包试试水,发现提示非法图片文件,应该是写了什么过滤

image-20210310173101898.png

我们找到upload这个函数发现对图片的类型和大小进行了一些验证

public function upload($file, $fileType = 'image')
    {
        // 验证文件类型及大小
        switch ($fileType)
        {
            case 'image':
                $result = $file->check(['ext' => $this->config['upload_image_ext'], 'size' => $this->config['upload_image_size']*1024]);
                if(empty($result)){
                    // 上传失败获取错误信息
                    $this->error = $file->getError();
                    return false;
                }
                break;
        $result =  $this->uploadHandler->upload($file);
        $data   =  array_merge($result, ['site_id' => $this->site_id]);
        SiteFile::create($data);
        return $data;
    }

然后尝试加了GIF89a头就可以上传了,看来多打CTF还是有用的,于是直接上传我们的 phar 文件就好了

这里要记得生成 phar 文件的时候要要加入GIF89a头来绕过,如下

$phar->setStub('GIF89a'.'<?php __HALT_COMPILER();?>');//设置stub

可以看到已经成功上传了,同时记住下面那个路径

image-20210310171836728.png

最后我们在scanFilesForTree这里触发我们的phar文件就可以了

image-20210310173202413.png

总结

本篇的漏洞已经全部上交cnvd,这个 cms 总的来说比较适合练手,主要的切入点还是通过白盒通过寻找一些危险的函数,再想方设法的去控制它的参数变量

本文涉及相关实验: 任意文件下载漏洞的代码审计  (过本节的学习,了解文件下载漏洞的原理,通过代码审计掌握文件下载漏洞产生的原因以及修复方法。)


想亲自体验这些精彩的实验吗?点击下方按钮注册,一起来实战!

靶场.png

相关新闻

深圳SEO优化公司汕头营销型网站建设安阳seo报价福州网络营销价格宜春优秀网站设计报价南澳网站推广工具海口网站设计哪家好柳州百度网站优化价格株洲至尊标王哪家好广安企业网站建设公司清远seo网站推广公司赣州网站关键词优化眉山模板推广推荐太原网站建设延边网络营销推荐惠州建站价格韶关设计网站推荐呼和浩特百度竞价包年推广公司民治百度竞价价格兰州网站推广工具推荐阳泉网页制作价格思茅建设网站遵义关键词按天收费哪家好阜新网站制作设计公司厦门SEO按效果付费推荐南阳企业网站制作推荐遂宁网站改版哪家好泰州网站优化排名价格三亚模板网站建设哪家好南阳关键词排名包年推广价格固原网站建设报价歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化