文件包含和文件讀取漏洞代碼審計


1,Metinfo文件包含漏洞分析

漏洞代碼出現在/message/index.php文件中,代碼如下:

if(!$metid)
    $metid='index';
if($metid!='index'){
    require_once $metid.'.php'
}else{
    /*省略*/
}

  這一段代碼很簡單,使用require_once函數包含了傳進去的參數$metid.php文件,我們可以包含本地文件,使用截斷來進行利用。

如果是想要進行遠程文件包含的話,需要服務器端的allow_url_include=on,也就是允許遠程文件包含才可以,然后我們可以直接遠程包含一句話木馬拿shell

 

2,文件讀取(下載)漏洞(phpcmsv9)

漏洞位於文件/phpcms/modules/search/index.php public_的public_get_suggest_keyword()函數

public function public_get_suggest_keyword(){
    $url=$_GET['url'].'&q='.$_GET['q'];
    $res=@file_get_contents($url);
    if(CHARSET != 'gbk'){
        $res=iconv('gbk',CHARSET,$res);
    }
    echo $res;
}

  可以看到在該函數從GET方法里面獲取要讀取的URL和文件,使用file_get_contents函數來讀取內容,當然我們要讀取任意目錄的文件的話,需要使用../來實現跳級

比如?url=&q=../../1.php,這樣我們就可以利用跳級讀取任意我們知道文件名的文件

最終利用這個漏洞讀取數據庫配置文件的EXP是:

/index.php?m=search&c=index&a=public_get_suggest_keyword&url=&q=../../phpsso_server/caches/configs/database.php

  感覺這兩個漏洞看上去不是很難,但是在當時安全意識比較落后的時候,應該很少有人能意識到這樣編寫代碼所造成的危害。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM