這是一篇網絡安全小白寫的筆記。
目錄
0 文件上傳漏洞概述
1 利用文件名及文件類型名類漏洞
1.1 javascript檢測擴展名繞過漏洞
1.2 0x00特殊字符截斷漏洞
1.3 IIS和Windows系統下的“;”截斷字符露洞
1.4FCKEditor為典型的黑名單式文件檢測漏洞
2 利用文件內容類漏洞
2.1 文件頭檢測漏洞
3 利用系統漏洞
3.1 Apache從后往前解析特性
3.2 IIS 6文件夾拓展名漏洞
0 文件上傳漏洞
上傳漏洞是利用文件上傳漏洞把腳本文件上傳到服務器。
1 利用文件名類漏洞
1.1 javascript檢測擴展名繞過漏洞
檢測原理 通過js代碼檢測文件文件類型
function check(){
var filename=document.getElementById("file");
var str=filename.value.split(".");
var ext=str[str.length-1];
if(ext=='jpg'||ext=='png'||ext=='jpeg'||ext=='gif'){
return true;
}else{
alert("這不是圖片!")
return false;
}
return false;
在表單中使用onsumbit=check();
調用js函數來檢查上傳文件的擴展名。
漏洞原理 利用瀏覽器修改腳本,破壞檢測即可。
1.2 0x00特殊字符截斷漏洞
漏洞原理 在C語言、PHP等語言中,0x00
被認為是終止符,可構造文件名為xxx.php[\0].jpg
,[\0]
為16進制的0x00
字符,由于[\0]
(0x00
)是截斷字符,文件名會變成xxx.php
。
1.3 IIS和Windows系統下的“;”截斷字符漏洞
漏洞原理 在IIS和Windows環境下,截斷字符“;
”與0x00
類似。可構造aaa.asp;bbb.jpg
。IIS 6將執行aaa.asp
。
1.4 FCKEditor為典型的黑名單式文件檢測漏洞
漏洞原理 黑名單式的限制文件上傳,代碼如下:
$Config ['AllowedExtensions'] ['File'] = array();//允許上傳的類型
$Config ['DeniedExtensions'] ['File'] = array('php','php3','php5','phtml','asp','aspx','ascx','jsp','cfm','cfc','pl','bat','exe','dll','reg','cgi');//禁止上傳的類型
漏洞防止 如果不必要,可以刪除上傳代碼。
2 利用文件內容類漏洞
2.1 文件頭檢測漏洞
漏洞原理 判斷文件頭內容是否符合要求,
幾個常見的文件頭對應關系:
(1).JPEG
、.JPE
、.JPG
:"JPGGraphic File
";
(2).gif
:"GIF 89A
";
(3).zip
:"Zip Compressed
";
(4).doc
、.xls
、.xlt
、.ppt
、.apr
:"MS Compound Document v1 or Lotus Approach APRfile
";
3 利用系統漏洞
3.1 Apache從后往前解析特性
漏洞原理 Apache 1.x、2.x中對文件解析有如下特性:
(1)從后往前解析,直至一個可識別文件類型為止;
(2)可識別類型定義在mime.types
文件中。
可構造xxx.php.rar
來繞過。
3.2 IIS 6文件夾拓展名漏洞
漏洞原理 IIS 6曾經出過的漏洞,處理文件父文件夾如為*.asp
,則本文件按ASP格式解析。例如:****/aaa.asp/bbb.jpg
,bbb.jpg
將按asp文件解析。
參考資料
[01]上傳漏洞總結
[02]米斯特白帽培訓講義 漏洞篇 文件上傳
[03]Web應用安全(麥子學院)|文件上傳漏洞
[04]Web應用安全(麥子學院)|文件上傳另一種方式
[05]Web應用安全(麥子學院)|文件上傳漏洞之繞過方式
[06]Web應用安全(麥子學院)|文件上傳漏洞防御
[07]閑話文件上傳漏洞
[08]文件上傳漏洞(繞過姿勢)
[09]吳翰清.白帽子講Web安全 [M].北京:高等教育出版社,2012.3 . 180-191