免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
文件上傳解析漏洞

上傳漏洞

Mirror王宇陽

2019年10月28日

Web網(wǎng)站通常存在文件上傳(例如:圖片、文檔、zip壓縮文件^等)只要存在上傳功能,就有可能會(huì)有上傳漏洞的危機(jī)。和SQL注入漏洞相比較而言,上傳漏洞更加危險(xiǎn),因?yàn)樵撀┒纯梢灾苯由蟼饕粋€(gè)WebShell到服務(wù)器上。

解析漏洞

利用上傳漏洞,通常需要結(jié)合Web容器(IIS、Nginx、Apache、Tomcat)的解析漏洞來讓上傳的漏洞得到實(shí)現(xiàn)

IIS解析漏洞

IIS5.x/IIS 6.0文件解析漏洞

  • 目錄名中含有.asp字符串的(目錄下)均按照asp文件進(jìn)行解析;例如:index.asp/目錄中的所有文件都會(huì)asp解析

    當(dāng)出現(xiàn)xx.asp命名的文件名,訪問目錄下任意一個(gè)文件,均會(huì)送給asp.dll解析(執(zhí)行asp腳本)

  • 文件名中含有.asp;字符,即使時(shí)jpg格式文件,IIS也會(huì)按照asp對(duì)文件進(jìn)行解析

    當(dāng)文件名xx.asp;xx.jpg,IIS6會(huì)將文件送給asp.dll解析(按照asp腳本解析);

    請(qǐng)求時(shí):IIS從左往右檢查.號(hào),查詢到;/號(hào)則(內(nèi)存)截?cái)?;如此?zhí)行后,IIS認(rèn)識(shí)的就是xx.asp

  • 默認(rèn)解析:.asa .cer .cdx IIS6 同時(shí)默認(rèn)解析前面三個(gè)文件后綴,都會(huì)給asp.dll解析

  • 修復(fù)方案:

    設(shè)置權(quán)限,限制用戶創(chuàng)建、修改文件夾權(quán)限

    更新微軟的補(bǔ)丁或者自定義修改IIS的檢測規(guī)則,阻止上傳非法的文件名后綴

IIS7.0/7.5

  • 默認(rèn)開啟 Fast-CGI 狀態(tài),在一個(gè)服務(wù)器文件URL地址后面添加xx.php會(huì)將xx.jpg/xx.php解析為PHP文件

  • 修復(fù)方法:

    修改php.ini文件,將cgi.fi: x_pathinfo設(shè)置為 0

    IIS7的解析漏洞主要是由于PHP的配置不當(dāng)導(dǎo)致的

    Windows操作系統(tǒng)中,文件名不能以空格或“.”開頭,也不能以空格或“.”結(jié)尾。當(dāng)把一個(gè)文件命名為以空格或“.”開頭或結(jié)尾時(shí),會(huì)自動(dòng)地去掉開頭和結(jié)尾處的空格和“.”。利用此特性,也可能造成“文件解析漏洞”。

Nginx解析漏洞

Nginx <= 0.8.37

影響版本:0.5/0.6/<0.7.65/<0.8.37

  • Fast-CGI開啟狀態(tài)下,存在如同IIS7一樣的漏洞:URL地址后面添加xx.php會(huì)將xx.jpg/xx.php解析為PHP文件

    空字節(jié):xx.jpg%00.php (部分版本中,F(xiàn)ast-CGI關(guān)閉下也會(huì)被執(zhí)行)

  • 修復(fù)方法:

    修改php.ini文件,將cgi.fix_pathinfo設(shè)置為 0 [關(guān)閉]

    再Nginx配置中設(shè)置:當(dāng)類似xx.jpg/xx.php的URL訪問時(shí)候,返回403;

    if ( $fastcgi_script_name ~ ..*/.*php) {
    	return 403 ;
    }
    

Apache解析漏洞

Apache后綴名解析漏洞

  • Apache解析文件的規(guī)則時(shí)從右到左開始判斷,如果后綴名為不可識(shí)別文件解析,則會(huì)繼續(xù)向左判斷,直至可以正確識(shí)別

    xxx.php.owf.zip 其中.owf.zip文件后綴Apache不識(shí)別,直至判斷.php才會(huì)按照PHP解析文件

  • 修復(fù)方法:

    Apache配置中,禁止xx.php.xxx類似的文件執(zhí)行

    <Files ~ "/.(php.|php3.)">
    	Order Allow,Deny
    	Deny from all
    </Files>
    

[CVE-2017-15715]

  • Apache中存在一個(gè)上傳的判斷邏輯:(自定義)

    <?php
        if(isset($_FILES['file'])){
            $name = basename($_POST['name']);
            $ext = pathinfo($name,PATHINFO_EXTNSION);
            if(in_array($ext,['php','php3','php4','php5','phtml','pht'])){
                exit("bad file");
            }
            move_uploaded_file($_FILES['file']['tmp_name'],'./'.$name);
        }
    ?>
    

    判斷檢查上傳文件的后綴名,如果發(fā)現(xiàn)了,就進(jìn)行攔截。

    利用CVE-2017-15715,上傳一個(gè)包含換行符的文件。注意,只能是\x0A,不能是\x0D\x0A,所以我們用hex功能在1.php后面添加一個(gè)\x0A

? 訪問/1.php%0A,即課成功getShell;

文件上傳繞過

客戶端校驗(yàn)

  • 客戶端使用JavaScript檢查上傳文件的后綴名

    # js驗(yàn)證文件后綴
    extArray = new Array('.gif','.jpg','.png'); // 白名單
    function LimitAttach(form,file){
        allowSubmit = false;
        if(!file)
            return;
        while(file.indexOf('\\')!=-1)
        file = file.slice(file.indexOf('\\')+1);
        ext = file.slice(file.indexOf('.')).toLowerCase();
        for(var i = 0 ; i < extArray.length ; i++){
            if(extArray[i] == ext){
                allowSubmit = true ; 
                break ;
            }
        }
        if(allowSubmit)
            form.submit();
        else
            alert("bad Extension");
    }
    

    一般情況可以通過抓包繞過客戶端的 js校驗(yàn)

    # php接收文件(沒有任何校驗(yàn))
    <?php
    	if(isset($_POST['submit'])){
            $name = $_FILES['file']['name']; //文件名
            $naem = md5(date('Y-m-d h:m:s')).strrchr($name,'.');// 文件重命名保留擴(kuò)展
            $size = $_FILES['file']['size']; //文件字節(jié)大小
            $tmp = $_FILES['file']['tmp_name']; //臨時(shí)路徑
            move_uploaded_file($tmp,$name); //移動(dòng)文件到tmp目錄下
            echo '文件上傳成功'.$name;
        }
    ?>
    
  • 繞過客戶端校驗(yàn):

    使用FireBug開發(fā)者工具,在本地構(gòu)造一個(gè)可以越過觸發(fā)校驗(yàn)函數(shù)即可提交表單的內(nèi)容;讓校驗(yàn)函數(shù)不被調(diào)用即可繞過。

    另外也可以通過抓包方式在通過客戶端校驗(yàn)后修改數(shù)據(jù)包的內(nèi)容。(改包過程中可能會(huì)改動(dòng)數(shù)據(jù)包的大小,需要留意Content-Length定義的長度要與實(shí)際相符)

服務(wù)端校驗(yàn)

  • Content-type字段校驗(yàn)(MIME類型校驗(yàn)

  • 文件擴(kuò)展名檢測(檢測文件Extension相關(guān)的內(nèi)容)采用黑白名單過濾的機(jī)制

  • 文件內(nèi)容體檢測(檢測內(nèi)容是否合法或者惡意代碼)

  • 目錄驗(yàn)證

MIME校驗(yàn):Content-type

  • Content-type字段顯示文件的MIME類型,判斷MIME類型可以對(duì)文件做簡單的過濾

    # 校驗(yàn)Content-type字段MIME類型
    <?php
        if($_FILES['file']['type'] != 'image/jpeg'){  // 判斷文件的MIME格式
            echo "Sorry!文件上傳格式錯(cuò)誤 Error";
            exit;
        
        }
    ?>
    
  • 繞過MIME校驗(yàn):

    利用Burp抓包工具,將content-type字段改為需要的MIME類型

擴(kuò)展名檢測

  • 黑名單策略:

    存在一個(gè)專門的文件,記錄服務(wù)器不允許上傳的文件名

  • 白名單策略:

    存在一個(gè)專門的文件,記錄服務(wù)器允許上傳的文件名

    # 擴(kuò)展名檢測
    <?php
        if(isset($_POST['submit'])){
            $name = $_FILES['file']['name']; // 獲取文件名
            $ext = substr(strrchr($name,"."),1); //獲取擴(kuò)展名[strrchr()找到符號(hào)"."并返回從該位置到結(jié)尾的所有字符(字符串),substr(str,1)獲得擴(kuò)展名字符串]
            while($ext==xxx){}
            // 調(diào)用黑白名單進(jìn)行循環(huán)對(duì)比,一旦命中則執(zhí)行相關(guān)的放過/攔截操作!
        }
    ?>
    

目錄驗(yàn)證

  • 讓上傳的文件存儲(chǔ)在一個(gè)統(tǒng)一的目錄

    # 目錄驗(yàn)證
    <?php
        if(isset($_POST['submit'])){
            $name = $_FILES['file']['name']; //文件名
            $naem = date('Y-m-d h:m:s').strrchr($name,'.');// 文件重命名保留擴(kuò)展
            $tmp = "./root/"; //存儲(chǔ)路徑,可以是服務(wù)器指定或者用戶原則或則機(jī)制選擇
            move_uploaded_file($tmp,$name); //移動(dòng)文件到tmp目錄下
        }
    ?>
    

服務(wù)器校驗(yàn)文件實(shí)例代碼

<?php
	if(isset($_POST['submit'])){
		$name = $_FILES['file']['name'] ;
		$type = $_FILES['file']['type'] ;
		$tmp = "./image/";
	}
	
	file_array = new array('jpeg','png','jpg','gif');// 白名單
	for ($i=0; $i < file_array.length; $i++) {
		if (substr(strrchr($name, "."),1) == file_array[i]) {
			if( $type == "image/gif" | $type == "image/jpeg" ){

				move_uploaded_file($tmp, $name);
                echo "圖片上傳成功……".$name;
				exit;
			}
		}
	}
?>

繞過策略

  • burp抓包改包,繞過校驗(yàn)機(jī)制,再利用包含漏洞進(jìn)行g(shù)etShell

文本編輯器上傳漏洞

常見文本編輯器:FCKEditor、Ewebeditor、UEditor、KindEditor、XHditor;合俗稱“富文本編輯器

筆者接觸文本編輯器不多,貢獻(xiàn)一個(gè)不錯(cuò)的參考文章: https://blog.yuntest.org/jszy/stcs/91.html

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
文件上傳漏洞及解析漏洞總結(jié)
系統(tǒng)特性與web安全
網(wǎng)絡(luò)安全|上傳漏洞——文件解析漏洞
什么是文件的后綴名?如果得知文件的后綴?
一句話木馬繞過和防御
淺談文件上傳漏洞
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服