黑客24小时在线接单网站

电脑高手24在线咨询,黑客24小时在线接单网站,黑客接单平台,黑客网站找人,黑客在线qq接单

QCMS V2.0命令执行与暴绝对路径漏洞

QCMS它是一个小型的网站管理系统。结构类型多种多样,包括:ASP ACCESS、ASP SQL、PHP MYSQL。今天叫兄弟们一起挖掘QCMS的漏洞,与大家分享挖洞的全过程。

QCMS V2.0命令执行与暴绝对路径漏洞

把源码down接下来,当地建立了一个环境。各种扫描,各种扫描,各种扫描。fuzzer,经过各种模糊测试后发现apache错误日志包含以下信息:

PHP Warning: mkdir() [function.mkdir]: Invalid argument in D:\\WWW\\system\\controller\\home.php on line 36

在system\controller\home.php创建目录的文件36行mkdir函数

QCMS V2.0命令执行与暴绝对路径漏洞

而$path这个变量是由的$thumb传递,然后我们向上跟踪$thumb变量。

QCMS V2.0命令执行与暴绝对路径漏洞

我们发现$thumb初始值为空字符串。$thumb赋值是通过$url_arr这个数组。

而$url_arr这个数组又是通过explode函数生成。事实上,漏洞的真正原因是

$url_arr = explode('_',substr($url,1,-4));

Explode函数根据_将原始的URI分成数组,存放$url_arr中。

接下来把$url_arr[1]的***作为图片的宽度,向后截取个元素;

把$url_arr[2]的***作为图片的高度,向后截取个元素;

接下来再判断$url_arr[3]是否为空,并赋值$noWaterMark.

也就是说,我们必须使用它_来分割url,而且让$url_arr长度必须大于2。否则直接404并退出程序。

QCMS V2.0命令执行与暴绝对路径漏洞

在我们的23行下设置一个断点并设置一个断点$url_arr打印出来。

QCMS V2.0命令执行与暴绝对路径漏洞

发现我提交的时候http://localhost:8088/11_11_11_11

当程序可以直接绕过19行时if判断,向下走。

但由于没有创建文件夹,因此没有直接提交$path = dirname($thumb);没有给出这个函数$path我们打印赋值$path看看值是多少。

QCMS V2.0命令执行与暴绝对路径漏洞

发现此时的$path是一个.,那么$thumb值是多少?

QCMS V2.0命令执行与暴绝对路径漏洞

我们发现$thumb的值是11_w1_h1_11。我们来看下dirname这个函数。

发现函数返回文件名后的目录名。OK,然后我们提交这个URL看看:http://localhost:8088/11_11_11__11/www

QCMS V2.0命令执行与暴绝对路径漏洞

我们取消了刚才添加的删除var_dump直接访问这些代码。URL成功创建文件夹。

QCMS V2.0命令执行与暴绝对路径漏洞

你可能会问为什么有404页。OK,然后我们往下看代码。

QCMS V2.0命令执行与暴绝对路径漏洞

创建目录后,会盘对$filename这个变量是文件吗?我们打印这个文件名。

QCMS V2.0命令执行与暴绝对路径漏洞

我们会发现这个文件的名字是用的$url_arr下标为0的元素和文件的后缀名组装。

这真是一个神奇的组装。看我怎么拼接。

我提交如下url:

http://localhost:8088/index_11_11__11/.php

QCMS V2.0命令执行与暴绝对路径漏洞

组装成主页index.php

我提交http://localhost:8088/lib/config/config_11_11__11/.php

然后组装成数据库的配置文件.

QCMS V2.0命令执行与暴绝对路径漏洞

这时候$filename是文件名.就绕过了

QCMS V2.0命令执行与暴绝对路径漏洞

开始执行以下生成缩略图的操作.

接下来,程序将判断图片的大小是否在程序预定义中$size_arr在这个数组中。

QCMS V2.0命令执行与暴绝对路径漏洞

如果不是,对不起,404.我们先打印下原来的图片大小。

QCMS V2.0命令执行与暴绝对路径漏洞

发现图片大小为1,1 。如果不在预定义的数组中,则不会向下执行。如何绕过?修改图片大小。我们提交以下信息url

http://localhost:8088/lib/config/config_150_150__11/.php

QCMS V2.0命令执行与暴绝对路径漏洞

绕过成功。开始执行exec操作生成缩略图。readfile读取操作文件。

exec('convert -resize "'.$width.'x&'.$height.'>" '.$filename.' '.$thumb.'');

而convert-resize 这个命令是linux生成缩略图的命令。要使用此命令,必须先安装ImageMagick。于是我又建了一个LAMP环境。yum -y install ImageMagick

安装了下ImageMagick

QCMS V2.0命令执行与暴绝对路径漏洞

然后生成下缩略图

convert -resize "100x100>" /var/www/html/qcms/upload/static/upload/source/20141101/5.png /var/www/html/qcms/upload/static/upload/source/20141101/6.png

这个命令就是把5.png 缩放为100×100的6.png。

而我提交http://localhost:8088/lib/config/config_150_150__11/.php

然后试试lib/config/config.php生成此文件lib/config/config_w50_h50.php

把lib/config/config_w50_h50.php 当成lib/config/config.php的缩略图。

但是一个php如果文件作为图片生成另一个缩略图文件,它将失败。因此,当你再次阅读缩略图文件时,你将失败。因为文件不存在。在火狐下,由于错误,图片可能无法显示。

而在IE绝对路径可能会暴露出来

QCMS V2.0命令执行与暴绝对路径漏洞

我感觉exec('convert -resize " '.$width.''.$height.'>" '.$filename.''.$thumb.readfile($thumb); 这两个地方应该有更多的利用价值。希望大家一起研究一下。

作者:TakeDown Team漏洞研究员MXi4oyu、Arya

   
  • 评论列表:
  •  澄萌喜余
     发布于 2022-05-28 03:51:59  回复该评论
  • 该有更多的利用价值。希望大家一起研究一下。作者:TakeDown Team漏洞研究员MXi4oyu、Arya    

发表评论:

Powered By

Copyright Your WebSite.Some Rights Reserved.