日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
QCMSV2.0命令執(zhí)行與暴絕對(duì)路徑漏洞

QCMS是一款小型的網(wǎng)站管理系統(tǒng)。擁有多種結(jié)構(gòu)類型,包括:ASP+ACCESS、ASP+SQL、PHP+MYSQL。今天叫兄弟們一起挖掘QCMS的漏洞,與大家分享挖洞的全過(guò)程。

把源碼down下來(lái),本地先搭建了一個(gè)環(huán)境。各種掃描,各種fuzzer,各種模糊測(cè)試之后發(fā)現(xiàn)apache錯(cuò)誤日志里面有如下信息:

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

在system\controller\home.php文件的36行有創(chuàng)建目錄的mkdir函數(shù)

而$path這個(gè)變量是由$thumb傳遞過(guò)來(lái)的,那么我們向上追蹤$thumb變量。

我們發(fā)現(xiàn)$thumb初始值為空字符串。而給$thumb賦值是通過(guò)$url_arr這個(gè)數(shù)組。

而$url_arr這個(gè)數(shù)組又是通過(guò)explode函數(shù)生成的。其實(shí)真正的漏洞成因就在

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

Explode函數(shù)根據(jù)_將原始的URI分割為數(shù)組,存放到$url_arr中。

接下來(lái)把$url_arr[1]的***個(gè)元素向后截取作為圖片的寬度;

把$url_arr[2]的***個(gè)元素向后截取作為圖片的高度;

接下來(lái)再判斷$url_arr[3]是否為空,并賦值給$noWaterMark.

也就是說(shuō),我們得用_來(lái)分割url,而且讓$url_arr的長(zhǎng)度必須大于2。否則直接404并且退出程序。

我們23行下面設(shè)置個(gè)斷點(diǎn),并且把$url_arr打印出來(lái)。

發(fā)現(xiàn)當(dāng)我提交http://localhost:8088/11_11_11_11

的時(shí)候,程序可以直接繞過(guò)19行的if判斷,向下走。

但是直接這樣提交并沒(méi)有創(chuàng)建文件夾,是因?yàn)?path = dirname($thumb);這個(gè)函數(shù)并沒(méi)有給$path賦值,我們打印下$path的值,看下是多少。

發(fā)現(xiàn)此時(shí)的$path是一個(gè).,那么$thumb的值是多少呢?

我們發(fā)現(xiàn)$thumb的值是11_w1_h1_11。我們來(lái)看下dirname這個(gè)函數(shù)。

發(fā)現(xiàn)該函數(shù)返回去掉文件名后的目錄名。OK,那么我們提交這樣的URL看看:http://localhost:8088/11_11_11__11/www

我們?nèi)∠麆h掉剛才添加的var_dump這些代碼。直接訪問(wèn)這個(gè)URL發(fā)現(xiàn)文件夾創(chuàng)建成功。

大家可以可能會(huì)問(wèn)為什么還有一個(gè)404頁(yè)面。OK,我們接著往下看代碼。

目錄創(chuàng)建完之后,會(huì)盤對(duì)$filename這個(gè)變量是否是一個(gè)文件。我們打印下這個(gè)文件名。

我們會(huì)發(fā)現(xiàn),這個(gè)文件名是用$url_arr的下標(biāo)為0的元素加上文件的后綴名組裝的。

這真是一個(gè)神奇的組裝。大家看我怎么拼接。

我提交如下url:

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

就組裝成了首頁(yè)的index.php

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

那么就組裝成了數(shù)據(jù)庫(kù)的配置文件.

這時(shí)候$filename就是一個(gè)文件名.就繞過(guò)了

開(kāi)始執(zhí)行下面的生成縮略圖的操作.

接下來(lái)程序會(huì)判斷圖片的大小是否在程序預(yù)定義的$size_arr這個(gè)數(shù)組中。

如果不在,那么抱歉,404.我們先打印下原來(lái)的圖片大小。

發(fā)現(xiàn)圖片大小為1,1 。不在預(yù)定義的數(shù)組中,那么就不會(huì)向下執(zhí)行。怎么繞過(guò)呢?修改圖片大小。我們提交如下url

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

成功繞過(guò)。開(kāi)始執(zhí)行exec生成縮略圖的操作。和readfile讀取文件的操作。

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

而convert-resize 這個(gè)命令是linux下生成縮略圖的命令。要使用這個(gè)命令,必須先安裝ImageMagick。于是我又搭建了一個(gè)LAMP環(huán)境。yum -y install ImageMagick

安裝了下ImageMagick

然后生成了下縮略圖

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這個(gè)文件生成lib/config/config_w50_h50.php

把lib/config/config_w50_h50.php 當(dāng)成lib/config/config.php的縮略圖。

但是一個(gè)php文件當(dāng)作圖片生成另一個(gè)縮略圖文件就會(huì)失敗。因此再去讀取那個(gè)縮略圖文件時(shí)就會(huì)讀取失敗。因?yàn)槲募淮嬖凇T诨鸷驴赡軙?huì)暴圖片因存在錯(cuò)誤而無(wú)法顯示。

而在IE下有可能就會(huì)暴出絕對(duì)路徑

我感覺(jué)exec('convert -resize " '.$width.''.$height.'>" '.$filename.''.$thumb.''); 和readfile($thumb); 這兩處應(yīng)該還有更多的利用價(jià)值。希望大家一起研究下。

本文投稿作者:TakeDown Team漏洞研究員MXi4oyu、Arya


當(dāng)前標(biāo)題:QCMSV2.0命令執(zhí)行與暴絕對(duì)路徑漏洞
本文地址:http://www.5511xx.com/article/dghhppi.html