❶ 文件上傳漏洞成因是什麼
預防文件上傳漏洞
1.為了防範用戶上傳惡意的可執行文件和腳本,以及將文件上傳伺服器當做免費的文件存儲伺服器使用,需要對上傳的文件類型進行白名單(非黑名單,這點非常重要)校驗,並且限制上傳文件的大小,上傳的文件,需要進行重新命名,使攻擊者無法猜測到上傳文件的訪問路徑。
2.對於上傳的文件來說,不能簡單的通過後綴名稱來判斷文件的類型,因為惡意攻擊可以將可
執行文件的後綴名稱改成圖片或者其他的後綴類型,誘導用戶執行。因此,判斷文件類型需
要使用更安全的方式。
3.很多類型的文件,起始的幾個位元組內容是固定的,因此,根據這幾個位元組的內容,就可以確
定文件類型,這幾個位元組也被稱為魔數(magic number)。(將文件轉換成二進制)
❷ 文件上傳漏洞攻擊方法有什麼
文件上傳漏洞是什麼?怎樣防禦文件上傳漏洞攻擊?文件上傳漏洞是web安全中經常利用到的一種漏洞形式。這種類型的攻擊從大的類型上來說,是攻擊 數據與代碼分離原則 的一種攻擊。
一些web應用程序中允許上傳圖片,文本或者其他資源到指定的位置,文件上傳漏洞就是利用這些可以上傳的地方將惡意代碼植入到伺服器中,再通過url去訪問以執行代碼
造成文件上傳漏洞的原因是
對於上傳文件的後綴名(擴展名)沒有做較為嚴格的限制
對於上傳文件的MIMETYPE 沒有做檢查
許可權上沒有對於上傳的文件的文件許可權,(尤其是對於shebang類型的文件)
對於web server對於上傳文件或者指定目錄的行為沒有做限制
下面就閑話一些文件上傳漏洞的防禦方式和攻擊者的繞過方式
1.前端限制
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函數來檢查上傳文件的擴展名。這種限制實際上沒有任何用處,任何攻擊者都可以輕而易舉的破解。只能用於對於用戶完全信任的情況下,很難稱之為一種安全措施只能稱之是一種防止用戶誤操作上傳的措施,
反制:
隨便的編輯一下頁面/用burpsuite/寫個小腳本就可以突破之,無須多言
2.檢查擴展名
顧名思義,就是在文件被上傳到服務端的時候,對於文件名的擴展名進行檢查,如果不合法,則拒絕這次上傳
在這里,還有一點是值得一提的,在檢查擴展名是否合法的時候,有兩種策略
黑名單策略,文件擴展名在黑名單中的為不合法,示例代碼
$postfix = end(explode('.','$_POST['filename']);
if($postfix=='php'||$postfix=='asp'||$postfix=='sh'){
echo "invalid file type";
return;
}
白名單策略,文件擴展名不在白名單中的均為不合法
$postfix = end(explode('.','$_POST['filename']);
if($postfix=='jpg'||$postfix=='png'||$postfix=='gif'){
//save the file and do something next
} else {
echo "invalid file type";
return;
}
白名單策略是更加安全的,通過限制上傳類型為只有我們接受的類型,可以較好的保證安全,因為黑名單我們可以使用各種方法來進行注入和突破
反制
在一些 webserver 中,存在解析漏洞
1.老版本的IIS中的目錄解析漏洞,如果網站目錄中有一個 /.asp/目錄,那麼此目錄下面的一切內容都會被當作asp腳本來解析
2.老闆本的IIS中的分號漏洞:IIS在解析文件名的時候可能將分號後面的內容丟棄,那麼我們可以在上傳的時候給後面加入分號內容來避免黑名單過濾,如 a.asp;jpg
3.舊版Windows Server中存在空格和dot漏洞類似於 a.php. 和 a.php[空格] 這樣的文件名存儲後會被windows去掉點和空格,從而使得加上這兩個東西可以突破過濾,成功上傳,並且被當作php代碼來執行
4.nginx空位元組漏洞 xxx.jpg%00.php 這樣的文件名會被解析為php代碼運行
5.apache的解析漏洞,上傳如a.php.rar a.php.gif 類型的文件名,可以避免對於php文件的過濾機制,但是由於apache在解析文件名的時候是從右向左讀,如果遇到不能識別的擴展名則跳過,rar等擴展名是apache不能識別的,因此就會直接將類型識別為php,從而達到了注入php代碼的目的
3.檢查HTTP Header中的Content-Type
HTTP協議規定了上傳資源的時候在Header中加上一項文件的MIMETYPE,來識別文件類型,這個動作是由瀏覽器完成的,服務端可以檢查此類型不過這仍然是不安全的,因為HTTP header可以被發出者或者中間人任意的修改,不過加上一層防護也是可以有一定效果的
反制
使用各種各樣的工具(如burpsuite)強行篡改Header就可以,太容易將header中的
Content-Type: application/php
或者其他類型
改為
Content-Type: image/jpg
Content-Type: image/png
Content-Type: text/plain
等這些web程序允許的淚洗改附上常用的MIMETYPE表
text/plain(純文本)
text/html(HTML文檔)
text/javascript(js代碼)
application/xhtml+xml(XHTML文檔)
image/gif(GIF圖像)
image/jpeg(JPEG圖像)
image/png(PNG圖像)
video/mpeg(MPEG動畫)
application/octet-stream(二進制數據)
application/pdf(PDF文檔)
application/(編程語言) 該種語言的代碼
application/msword(Microsoft Word文件)
message/rfc822(RFC 822形式)
multipart/alternative(HTML郵件的HTML形式和純文本形式,相同內容使用不同形式表示)
application/x-www-form-urlencoded(POST方法提交的表單)
multipart/form-data(POST提交時伴隨文件上傳的表單)
4.分析文件頭內容來檢查文件類型
與方法2不同,還有一種檢查類型的方式是使用對於文件內容的驗證機制,這種方法利用的是每一個特定類型的文件都會有不太一樣的開頭或者標志位。可以通過比如php的exif_imagetype()函數,一個通過這種方法來過濾的示例代碼如下:
if (! exif_imagetype($_FILES['uploadedfile']['tmp_name'])) {
echo "File is not an image";
return;
}
也可以自己編寫函數來進行識別,圖片文件通常有稱作幻數的頭位元組,我們來看一下幾種圖片文件的幻數:
(注意!下面是二進制而不是文本格式的數據)
JPG
FF D8 FF E0 00 10 4A 46 49 46
GIF
47 49 46 38 39 61
(相當於文本的GIF89a)
PNG
89 50 4E 47
通過檢查頭幾位位元組,可以分辨是否是圖片文件
如果是其他類型的二進制文件,也有響應的頭位元組,如下表
反制
給上傳腳本加上相應的幻數頭位元組就可以,php引擎會將
(一般不限制圖片文件格式的時候使用GIF的頭比較方便,因為全都是文本可列印字元。)
GIF89a
do_something();
?>
如果是其他類型的二進制文件,也有響應的頭位元組,如下表
格式
文件頭
TIFF (tif)
49492A00
Windows Bitmap (bmp)
424D
CAD (dwg)
41433130
Adobe Photoshop (psd)
38425053
Rich Text Format (rtf)
7B5C727466
MS Word/Excel (xls.or.doc)
D0CF11E0
MS Access (mdb)
5374616E64617264204A
ZIP Archive (zip),
504B0304
RAR Archive (rar),
7221
Wave (wav),
57415645
AVI (avi),
41564920
Real Media (rm),
2E524D46
MPEG (mpg),
000001BA
MPEG (mpg),
000001B3
Quicktime (mov),
6D6F6F76
Adobe Acrobat (pdf),
255044462D312E
Windows Media (asf),
3026B2758E66CF11
MIDI (mid),
4D546864
5.限制Web Server對於特定類型文件的行為
導致文件上傳漏洞的根本原因在於服務把用戶上傳的本應是數據的內容當作了代碼,一般來說,用戶上傳的內容都會被存儲到特定的一個文件夾下,比如我們很多人習慣於放在 ./upload/ 下面要防止數據被當作代碼執行,我們可以限制web server對於特定文件夾的行為。
大多數服務端軟體都可以支持用戶對於特定類型文件的行為的自定義,以Apache為例:
在默認情況下,對與 .php文件Apache會當作代碼來執行,對於 html,css,js文件,則會直接由HTTP Response交給客戶端程序對於一些資源文件,比如txt,doc,rar等等,則也會以文件下載的方式傳送的客戶端。我們希望用戶上傳的東西僅僅當作資源和數據而不能當作代碼
因此可以使用伺服器程序的介面來進行限制
以Apache為例,我們可以利用 .htaccess 文件機制來對web server行為進行限制
在這里插一句,如果不是專門的文件下載目錄,請務必關掉文件夾瀏覽的許可權,以防止嗅探和可能的越權,也是使用.htaccess文件,在其中加上一句
Options All -Indexes
即可。
禁止腳本執行有多種方式可以實現,而且分別有不同的效果,我們分別來看一下
1.指定特定擴展名的文件的處理方式,原理是指定Response的Content-Type可以加上如下幾行
AddType text/plain .pl .py .php
這種情況下,以上幾種腳本文件會被當作純文本來顯示出來,你也可以換成其他的Content-Type
2.如果要完全禁止特定擴展名的文件被訪問,用下面的幾行
Options -ExecCGI
AddHandler cgi-script .php .pl .py .jsp .asp .htm .shtml .sh .cgi識別
在這種情況下,以上幾種類型的文件被訪問的時候,會返回403 Forbidden的錯誤
3.也可以強制web伺服器對於特定文件類型的處理,與第一條不同的是, 下面的方法直接強行讓apache將文件識別為你指定的類型,而第一種是讓瀏覽器
ForceType text/plain
看代碼就可以很明白的知道,符合上面正則的全部被認為是純文本,也可以繼續往裡面加入其他類型。
4.只允許訪問特定類型的文件
order deny,allow
deny from all
在一個上傳圖片的文件夾下面,就可以加上這段代碼,使得該文件夾裡面只有圖片擴展名的文件才可以被訪問,其他類型都是拒絕訪問。
這又是一個白名單的處理方案
永遠記得,白名單是最有保障的安全措施
可以通過 move_uploaded_file 函數把自己寫的.htaccess 文件上傳,覆蓋掉伺服器上的文件,來定義文件類型和執行許可權如果做到了這一點,將獲得相當大的許可權。
❸ 文件上傳漏洞有哪些挖掘思路
文件上傳漏洞作為獲取伺服器許可權最快的方式,雖然相關資料很多,但很多人對上傳校驗方式、如何針對性繞過檢測、哪種上傳和解析的場景會產生危害等還是比較模糊。本文作一些闡述,然後補充一些除了上傳webshell的其他非常規挖掘姿勢,包括XSS、重定向、Dos、CSRF等等。
1、基礎知識:
要深入了解文件上傳,必須了解上傳屬性、常見文件的結構、圖形處理函數等內容。
1) 報文特點:
觀察文件上傳報文的特點:
Header中Content-Type特徵有二:
1.multipart/form-data(form表單的enctype屬性,規定為二進制數據)
2.boundary字元串(作用為分隔符,以區分POST數據)
POST內容特徵有五:
1.Content-Disposition:form-data
2. name:input表單名
3.filename:文件名
4.Content-Type:定義文件的類型和網頁的編碼,決定瀏覽器將以什麼形式、什麼編碼讀取這個文件;
5.boundary:Content-Type的值前面加了兩個---
2) 常見校驗規則
現存常用的上傳校驗規則無非下面幾類:
1.客戶端javascript校驗(後綴名)
2.文件頭content-type欄位校驗(image/gif):附帶參數
4.後綴名黑/白名單校驗:擴展名
5.文件內容頭校驗:GIF89a
6.文件內容校驗:文件信息,二次渲染
7.自定義正則校驗
3)一個澄清
文件上傳和文件解析是兩個過程,即使我們上傳的是php文件,但解析為圖片,訪問php文件會顯示「圖片無法顯示」;或者我們上傳的是jpg文件,但裡面混有shell腳本,若被解析為php文件也會執行;又或者上傳處沒法繞過檢測,只能上傳jpg文件,但在其他功能處存在文件包含等功能,仍可執行成功。
還是回到安全的本質,上傳是「輸入」,那文件解析就是「輸出」,任何漏洞挖掘都需要結合輸入+輸出。
2、繞過技巧:
這里匯總一些實戰中較常用的繞過技巧:
1)後綴名黑名單
以下替換後綴也可以解析為shell:
php:.phtml,.phpt,.php3,.php3p
asp:.aspx,asmx,ashx,web.config
perl:.pl,.pm,.cgi,.lib
jsp:.jspx,.jsw,.jsv,.jspf
Coldfusion:.cfm,.cfml,.cfc,.dbm
另外可以配合操作系統的文件命名規則:
.php.,.php空格,.php:1.jpg,.php::$DATA等
這些後綴的文件會被windows系統自動去掉不符合規則符號後面的內容,從而只留下.php。
2)後綴名白名單
除了結合各種伺服器解析特性,較常用的是Null Byte Injection空位元組注入,插入空位元組值的原因是某些應用程序伺服器腳本語言使用c/c++庫來檢查文件名和內容。在C/C ++中,一行以/00結尾或稱為NullByte。因此,只要解釋器在字元串的末尾看到一個空位元組,就會停止讀取,認為它已經到達字元串的末尾。
如,我們將要上傳的Happy.jpg的名稱更改為Happy.phpA.jpg,然後上傳文件,在Burp中捕獲請求,切換到Hex視圖。在字元串視圖中找到文件名。查看相應的Hex表,並將41('A')替換為00(為空位元組)。結果字元串變為Happy.php(空).jpeg。由於php解釋器在內部使用C語言庫,它將停止讀取Happy.php後的文件名,文件將保存為Happy.php。
另一種繞過白名單的方法是使用雙後綴:shell.php.jpg。
❹ 常見的漏洞類型有哪些
一、SQL 注入漏洞
SQL 注入攻擊( SQL Injection ),簡稱注入攻擊、SQL 注入,被廣泛用於非法獲取網站控制權, 是發生在應用程序的資料庫層上的安全漏洞。在設計程序,忽略了對輸入字元串中夾帶的SQL 指令的檢查,被資料庫誤認為是正常的SQL 指令而運行,從而使資料庫受到攻擊,可能導致數據被竊取、更改、刪除,以及進一步導致網站被嵌入惡意代碼、被植入後門程序等危害。
通常情況下, SQL 注入的位置包括:
(1)表單提交,主要是POST 請求,也包括GET 請求;
(2)URL 參數提交,主要為GET 請求參數;
(3)Cookie 參數提交;
(4)HTTP 請求頭部的一些可修改的值,比如Referer 、User_Agent 等;
(5)一些邊緣的輸入點,比如.mp3 文件的一些文件信息等。
SQL 注入的危害不僅體現在資料庫層面上, 還有可能危及承載資料庫的操作系統;如果SQL 注入被用來掛馬,還可能用來傳播惡意軟體等,這些危害包括但不局限於:
(1)資料庫信息泄漏:資料庫中存放的用戶的隱私信息的泄露。作為數據的存儲中心,資料庫里往往保存著各類的隱私信息, SQL 注入攻擊能導致這些隱私信息透明於攻擊者。
(2)網頁篡改:通過操作資料庫對特定網頁進行篡改。
(3)網站被掛馬,傳播惡意軟體:修改資料庫一些欄位的值,嵌入網馬鏈接,進行掛馬攻擊。
(4)資料庫被惡意操作:資料庫伺服器被攻擊,資料庫的系統管理員帳戶被篡改。
(5)伺服器被遠程式控制制,被安裝後門。經由資料庫伺服器提供的操作系統支持,讓黑客得以修改或控制操作系統。
(6)破壞硬碟數據,癱瘓全系統。
解決SQL 注入問題的關鍵是對所有可能來自用戶輸入的數據進行嚴格的檢查、對資料庫配置使用最小許可權原則。通常使用的方案有:
(1 )所有的查詢語句都使用資料庫提供的參數化查詢介面,參數化的語句使用參數而不是將用戶輸入變數嵌入到SQL 語句中。當前幾乎所有的資料庫系統都提供了參數化SQL 語句執行介面,使用此介面可以非常有效的防止SQL 注入攻擊。
(2 )對進入資料庫的特殊字元( '"\<>&*; 等)進行轉義處理,或編碼轉換。
(3 )確認每種數據的類型,比如數字型的數據就必須是數字,資料庫中的存儲欄位必須對應為int 型。
(4)數據長度應該嚴格規定,能在一定程度上防止比較長的SQL 注入語句無法正確執行。
(5)網站每個數據層的編碼統一,建議全部使用UTF-8 編碼,上下層編碼不一致有可能導致一些過濾模型被繞過。
(6)嚴格限制網站用戶的資料庫的操作許可權,給此用戶提供僅僅能夠滿足其工作的許可權,從而最大限度的減少注入攻擊對資料庫的危害。
(7)避免網站顯示SQL 錯誤信息,比如類型錯誤、欄位不匹配等,防止攻擊者利用這些錯誤信息進行一些判斷。
(8)在網站發布之前建議使用一些專業的SQL 注入檢測工具進行檢測,及時修補這些SQL 注入漏洞。
二、跨站腳本漏洞
跨站腳本攻擊( Cross-site scripting ,通常簡稱為XSS)發生在客戶端,可被用於進行竊取隱私、釣魚欺騙、竊取密碼、傳播惡意代碼等攻擊。XSS 攻擊使用到的技術主要為HTML 和Javascript ,也包括VBScript和ActionScript 等。XSS 攻擊對WEB 伺服器雖無直接危害,但是它藉助網站進行傳播,使網站的使用用戶受到攻擊,導致網站用戶帳號被竊取,從而對網站也產生了較嚴重的危害。
XSS 類型包括:
(1)非持久型跨站: 即反射型跨站腳本漏洞, 是目前最普遍的跨站類型。跨站代碼一般存在於鏈接中,請求這樣的鏈接時,跨站代碼經過服務端反射回來,這類跨站的代碼不存儲到服務端(比如資料庫中)。上面章節所舉的例子就是這類情況。
(2)持久型跨站:這是危害最直接的跨站類型,跨站代碼存儲於服務端(比如資料庫中)。常見情況是某用戶在論壇發貼,如果論壇沒有過濾用戶輸入的Javascript 代碼數據,就會導致其他瀏覽此貼的用戶的瀏覽器會執行發貼人所嵌入的Javascript 代碼。
(3)DOM 跨站(DOM XSS ):是一種發生在客戶端DOM (Document Object Model 文檔對象模型)中的跨站漏洞,很大原因是因為客戶端腳本處理邏輯導致的安全問題。
XSS 的危害包括:
(1)釣魚欺騙:最典型的就是利用目標網站的反射型跨站腳本漏洞將目標網站重定向到釣魚網站,或者注入釣魚JavaScript 以監控目標網站的表單輸入,甚至發起基於DHTML 更高級的釣魚攻擊方式。
(2 )網站掛馬:跨站時利用IFrame 嵌入隱藏的惡意網站或者將被攻擊者定向到惡意網站上,或者彈出惡意網站窗口等方式都可以進行掛馬攻擊。
(3)身份盜用: Cookie 是用戶對於特定網站的身份驗證標志, XSS 可以盜取到用戶的Cookie ,從而利用該Cookie 盜取用戶對該網站的操作許可權。如果一個網站管理員用戶Cookie 被竊取,將會對網站引發巨大的危害。
(4)盜取網站用戶信息:當能夠竊取到用戶Cookie 從而獲取到用戶身份使,攻擊者可以獲取到用戶對網站的操作許可權,從而查看用戶隱私信息。
(5)垃圾信息發送:比如在SNS 社區中,利用XSS 漏洞借用被攻擊者的身份發送大量的垃圾信息給特定的目標群。
(6)劫持用戶Web 行為:一些高級的XSS 攻擊甚至可以劫持用戶的Web 行為,監視用戶的瀏覽歷史,發送與接收的數據等等。
(7)XSS 蠕蟲:XSS 蠕蟲可以用來打廣告、刷流量、掛馬、惡作劇、破壞網上數據、實施DDoS 攻擊等。
常用的防止XSS 技術包括:
(1)與SQL 注入防護的建議一樣,假定所有輸入都是可疑的,必須對所有輸入中的script 、iframe 等字樣進行嚴格的檢查。這里的輸入不僅僅是用戶可以直接交互的輸入介面,也包括HTTP 請求中的Cookie 中的變數, HTTP 請求頭部中的變數等。
(2 )不僅要驗證數據的類型,還要驗證其格式、長度、范圍和內容。
(3)不要僅僅在客戶端做數據的驗證與過濾,關鍵的過濾步驟在服務端進行。
( 4)對輸出的數據也要檢查, 資料庫里的值有可能會在一個大網站的多處都有輸出,即使在輸入做了編碼等操作,在各處的輸出點時也要進行安全檢查。
(5)在發布應用程序之前測試所有已知的威脅。
三、弱口令漏洞
弱口令(weak password) 沒有嚴格和准確的定義,通常認為容易被別人(他們有可能對你很了解)猜測到或被破解工具破解的口令均為弱口令。設置密碼通常遵循以下原則:
(1)不使用空口令或系統預設的口令,這些口令眾所周之,為典型的弱口令。
(2)口令長度不小於8 個字元。
(3)口令不應該為連續的某個字元(例如: AAAAAAAA )或重復某些字元的組合(例如: tzf.tzf. )。
(4)口令應該為以下四類字元的組合,大寫字母(A-Z) 、小寫字母(a-z) 、數字(0-9) 和特殊字元。每類字元至少包含一個。如果某類字元只包含一個,那麼該字元不應為首字元或尾字元。
(5)口令中不應包含本人、父母、子女和配偶的姓名和出生日期、紀念日期、登錄名、E-mail 地址等等與本人有關的信息,以及字典中的單詞。
(6)口令不應該為用數字或符號代替某些字母的單詞。
(7)口令應該易記且可以快速輸入,防止他人從你身後很容易看到你的輸入。
(8)至少90 天內更換一次口令,防止未被發現的入侵者繼續使用該口令。
四、HTTP 報頭追蹤漏洞
HTTP/1.1 (RFC2616 )規范定義了HTTP TRACE 方法,主要是用於客戶端通過向Web 伺服器提交TRACE 請求來進行測試或獲得診斷信息。當Web 伺服器啟用TRACE 時,提交的請求頭會在伺服器響應的內容(Body )中完整的返回,其中HTTP 頭很可能包括Session Token 、Cookies 或其它認證信息。攻擊者可以利用此漏洞來欺騙合法用戶並得到他們的私人信息。該漏洞往往與其它方式配合來進行有效攻擊,由於HTTP TRACE 請求可以通過客戶瀏覽器腳本發起(如XMLHttpRequest ),並可以通過DOM 介面來訪問,因此很容易被攻擊者利用。防禦HTTP 報頭追蹤漏洞的方法通常禁用HTTP TRACE 方法。
五、Struts2 遠程命令執行漏洞
Apache Struts 是一款建立Java web 應用程序的開放源代碼架構。Apache Struts 存在一個輸入過濾錯誤,如果遇到轉換錯誤可被利用注入和執行任意Java 代碼。網站存在遠程代碼執行漏洞的大部分原因是由於網站採用了Apache Struts Xwork 作為網站應用框架,由於該軟體存在遠程代碼執高危漏洞,導致網站面臨安全風險。CNVD 處置過諸多此類漏洞,例如:「 GPS 車載衛星定位系統」網站存在遠程命令執行漏洞(CNVD-2012-13934) ;Aspcms 留言本遠程代碼執行漏洞( CNVD-2012-11590 )等。
修復此類漏洞,只需到Apache 官網升級Apache Struts 到最新版本
六、框架釣魚漏洞(框架注入漏洞)
框架注入攻擊是針對Internet Explorer 5 、Internet Explorer 6 、與Internet Explorer 7 攻擊的一種。這種攻擊導致Internet Explorer 不檢查結果框架的目的網站,因而允許任意代碼像Javascript 或者VBScript 跨框架存取。這種攻擊也發生在代碼透過多框架注入,肇因於腳本並不確認來自多框架的輸入。這種其他形式的框架注入會影響所有的不確認不受信任輸入的各廠商瀏覽器和腳本。如果應用程序不要求不同的框架互相通信,就可以通過完全刪除框架名稱、使用匿名框架防止框架注入。但是,因為應用程序通常都要求框架之間相互通信,因此這種方法並不可行。因此,通常使用命名框架,但在每個會話中使用不同的框架,並且使用無法預測的名稱。一種可行的方法是在每個基本的框架名稱後附加用戶的會話令牌,如main_display 。
七、文件上傳漏洞
文件上傳漏洞通常由於網頁代碼中的文件上傳路徑變數過濾不嚴造成的,如果文件上傳功能實現代碼沒有嚴格限制用戶上傳的文件後綴以及文件類型,攻擊者可通過Web 訪問的目錄上傳任意文件,包括網站後門文件( webshell ),進而遠程式控制制網站伺服器。因此,在開發網站及應用程序過程中,需嚴格限制和校驗上傳的文件,禁止上傳惡意代碼的文件。同時限制相關目錄的執行許可權,防範webshell 攻擊。
八、應用程序測試腳本泄露
由於測試腳本對提交的參數數據缺少充分過濾,遠程攻擊者可以利用洞以WEB 進程許可權在系統上查看任意文件內容。防禦此類漏洞通常需嚴格過濾提交的數據,有效檢測攻擊。
九、私有IP 地址泄露漏洞
IP 地址是網路用戶的重要標示,是攻擊者進行攻擊前需要了解的。獲取的方法較多,攻擊者也會因不同的網路情況採取不同的方法,如:在區域網內使用Ping 指令, Ping 對方在網路中的名稱而獲得IP;在Internet 上使用IP 版的QQ直接顯示。最有效的辦法是截獲並分析對方的網路數據包。攻擊者可以找到並直接通過軟體解析截獲後的數據包的IP 包頭信息,再根據這些信息了解具體的IP。針對最有效的「數據包分析方法」而言,就可以安裝能夠自動去掉發送數據包包頭IP 信息的一些軟體。不過使用這些軟體有些缺點, 譬如:耗費資源嚴重,降低計算機性能;訪問一些論壇或者網站時會受影響;不適合網吧用戶使用等等。現在的個人用戶採用最普及隱藏IP 的方法應該是使用代理,由於使用代理伺服器後,「轉址服務」會對發送出去的數據包有所修改,致使「數據包分析」的方法失效。一些容易泄漏用戶IP 的網路軟體(QQ 、MSN 、IE 等)都支持使用代理方式連接Internet ,特別是QQ 使用「 ezProxy 」等代理軟體連接後, IP 版的QQ 都無法顯示該IP 地址。雖然代理可以有效地隱藏用戶IP,但攻擊者亦可以繞過代理, 查找到對方的真實IP 地址,用戶在何種情況下使用何種方法隱藏IP,也要因情況而論。
十、未加密登錄請求
由於Web 配置不安全, 登陸請求把諸如用戶名和密碼等敏感欄位未加密進行傳輸, 攻擊者可以竊聽網路以劫獲這些敏感信息。建議進行例如SSH 等的加密後再傳輸。
十一、敏感信息泄露漏洞
SQL 注入、XSS、目錄遍歷、弱口令等均可導致敏感信息泄露,攻擊者可以通過漏洞獲得敏感信息。針對不同成因,防禦方式不同。
❺ 文件上傳漏洞如何搭建
文件上傳是Web應用中比較常見的功能,用戶經常會通過文件上傳的功能分享照片、修改頭像或上傳附件等操作;文件上傳漏洞是指用戶上傳了一個可執行的腳本文件,並通過此腳本文件獲得了執行服務端命令的能力;文件上傳本身是一個網站正常的業務需求,但如果文件在上傳之後,伺服器端沒有妥善的處理,就會導致嚴重的後果。簡單寫一個php上傳代碼演示php上傳漏洞。
1.首先搭建phpstudy的安裝環境,在phpstudy網站根目錄建立php演示文件夾,放入php文件上傳代碼。
2.php文件上傳漏洞演示代碼,代碼未限制任何文件屬性的上傳。
3.
寫一個phpinfo.php文件,通過瀏覽器訪問進行上傳。
4.
提示上傳成功,保存於uploads路徑中,可以猜想保存路徑為http://10.10.10.1/php/uploads
5.
嘗試訪問phpinfo.php文件使用剛才猜想的路徑,http://10.10.10.1/php/uploads/phpinfo.php,phpinfo函數被執行。
❻ 文件上傳漏洞如何搭建
文件上傳是Web應用中比較常見的功能,用戶經常會通過文件上傳的功能分享照片、修改頭像或上傳附件等操作;文件上傳漏洞是指用戶上傳了一個可執行的腳本文件,並通過此腳本文件獲得了執行服務端命令的能力;文件上傳本身是一個網站正常的業務需求,但如果文件在上傳之後,伺服器端沒有妥善的處理,就會導致嚴重的後果。簡單寫一個php上傳代碼演示php上傳漏洞。
1.首先搭建phpstudy的安裝環境,在phpstudy網站根目錄建立php演示文件夾,放入php文件上傳代碼。
5.嘗試訪問phpinfo.php文件使用剛才猜想的路徑,http://10.10.10.1/php/uploads/phpinfo.php,phpinfo函數被執行。
❼ 網站如何防範「上傳漏洞」入侵
上傳漏洞入侵是目前對網站最廣泛的入侵方法。90%的具有上傳頁面的網站,都存在上傳漏洞。本文將介紹常見的上傳漏洞及其防範技巧。
一、能直接上傳asp文件的漏洞
如果網站有上傳頁面,就要警惕直接上傳asp文件漏洞。例如去年流行的動網5.0/6.0論壇,就有個upfile.asp上傳頁面,該頁面對上傳文件擴展名過濾不嚴,導致黑客能直接上傳asp文件,因此黑客只要打開upfile.asp頁,直接上傳,asp木馬即可拿到webshell、擁有網站的管理員控制權。
除此之外,目前已發現的上傳漏洞
,還有動感購物商城、動力上傳漏洞、喬客上傳漏洞等,只要運行明小子Domain3.5,點擊綜合上傳,即可看到這些著名的上傳漏洞。
像明小子這樣的上傳漏洞利用工具如今還有很多,例如上傳漏洞程序4in1、動易2005上傳漏洞利用工具、雷池新聞系統上傳漏洞利用工具、MSSQL上傳漏洞利用工具等等,使用此類工具,只需填寫上傳頁面網址和Cookies,即可成功入侵網站。
【防範方法】:為了防範此類漏洞,建議網站採用最新版(例如動網7.1以上版本)程序建站,因為最新版程序一般都沒有直接上傳漏洞,當然刪除有漏洞的上傳頁面,將會最安全,這樣黑客再也不可能利用上傳漏洞入侵了!
如果不能刪除上傳頁面,為了防範入侵,建議在上傳程序中添加安全代碼,禁止上傳asp\asa\js\exe\com等類文件,這需要管理者能看懂asp程序。
二、00上傳漏洞
目前網上流行的所有無組件上傳類都存在此類漏洞即黑客利用抓包嗅探、ULTRAEDIT和網路軍刀等工具偽造IP包,突破伺服器端對上傳文件名、路徑的判斷,巧妙上傳ASP、ASA、CGI、CDX、CER、ASPX類型的木馬。
例如黑客上傳了一個木馬文件(xiaomm.asp空格.jpg),由於上傳程序不能正確判斷含有十六進制00的文件名或路徑,於是就出現了漏洞,當上傳程序接收到xiaomm.asp空格.jpg文件名數據時,一旦發現xiaomm.asp後面還有空格(十六進制的00),它就不會再讀下去,於是上傳的文件在伺服器上就會被保存成xiaomm.asp,因此上傳木馬就成功了!
【防範方法】:最安全的防範辦法就是刪除上傳頁面。
三、圖片木馬上傳漏洞
有的網站(例如動網7.1SP1博客功能),其後台管理中可以恢復/備份資料庫,這會被黑客用來進行圖片木馬入侵。
圖片木馬入侵過程如下:首先將本地木馬(例如F:\labxw\xiaomm.asp)擴展名改為.gif,然後打開上傳頁面,上傳這個木馬(例如F:\labxw\xiaomm.gif);再通過注入法拿到後台管理員的賬號密碼,溜進網站後台管理中,使用備份資料庫功能將.gif木馬備份成.asp木馬(例如xiaomm.asp),即在備份資料庫路徑(相對)輸入剛才圖片上傳後得到的路徑,在目標資料庫路徑輸入:xiaomm.asp,提示恢復資料庫成功;現在打開IE,輸入剛才恢復資料庫的asp路徑,木馬就能運行了。
【防範方法】:刪除後台管理中的恢復/備份資料庫功能。
四、添加上傳類型漏洞如今大多數論壇後台中都允許添加上傳類型,這也是個不小的漏洞!只要黑客用注入法拿到後台管理員賬號密碼,然後進入後台添加上傳類型,在上傳頁面中就能直接上傳木馬!
例如bbsxp後台中允許添加asa|asP類型,通過添加操作後,就可以上傳這兩類文件了;ewebeditor後台也能添加asa類型,添加完畢即可直接上傳asa後綴的木馬;而LeadBbs3.14後台也允許在上傳類型中增加asp類型,不過添加時asp後面必須有個空格,然後在前台即可上傳ASP木馬(在木馬文件擴展名.asp後面也要加個空格)。
【防範方法】:刪除後台管理中的添加上傳類型功能。
五、通用防範上傳漏洞入侵秘笈:將伺服器端的組件改名
眾所周知,ASP木馬主要是通過三種組件FileSystemObject、WScript.Shell和Shell.Application來操作的,因此只要你在伺服器上修改注冊表,將這三種組件改名,即可禁止木馬運行、防範黑客入侵了。這一招能防範所有類型的上傳漏洞,因為即使黑客將木馬成功上傳到伺服器中,但是由於組件已經被改名,木馬程序也是無法正常運行的!
具體而言,需要將FileSystemObject組件、WScript.Shell組件、Shell.Application組件改名,然後禁用Cmd.exe,就可以預防漏洞上傳攻擊。
❽ 文件上傳漏洞
在上網的過程中,經常會將一些如圖片、壓縮包之類的文件上傳到遠端伺服器進行保存。文件上傳攻擊指的是惡意攻擊者利用一些站點沒有對文件的類型做很好的校驗,上傳了可執行的文件或者腳本,並且通過腳本獲得伺服器上相應的權利,或者是通過誘導外部用戶訪問、下載上傳的病毒或木馬文件,達到攻擊的目的。為了防範用戶上傳惡意的可執行文件和腳本,以及將文件上傳伺服器當做免費的文件存儲伺服器使用,我們需要對上傳的文件類型進行白名單(非黑名單,這點非常重要)校驗,並且限制上傳文件的大小,上傳的文件需要進行重新命名,使攻擊者無法猜測到上傳文件的訪問路徑。
對於上傳的文件來說,不能簡單地通過後綴名稱來判斷文件的類型,因為惡意攻擊可以將可執行文件的後綴名稱改成圖片或者其他後綴類型,誘導用戶執行。因此,判斷文件類型需要使用更安全的方式。很多類型的文件,起始的幾個位元組內容是固定的,因此,根據這幾個位元組的內容,就可以確定文件類型,這幾個位元組也被稱為魔數( magic number)。
❾ 文件上傳漏洞及解析漏洞總結
首先搭建phpstudy的安裝環境,在phpstudy網站根目錄建立php演示文件夾,放入php文件上傳代碼。
php文件上傳漏洞演示代碼,代碼未限制任何文件屬性的上傳。
寫一個phpinfo.php文件,通過瀏覽器訪問進行上傳。
提示上傳成功,保存於uploads路徑中,可以猜想保存路徑為http://10.10.10.1/php/uploads
嘗試訪問phpinfo.php文件使用剛才猜想的路徑,http://10.10.10.1/php/uploads/phpinfo.php,phpinfo函數被執行
❿ 文件上傳漏洞成因是什麼
原因是:
在 WEB 中進行文件上傳的原理是通過將表單設為 multipart/form-data,同時加入文件域,而後通過 HTTP 協議將文件內容發送到伺服器,伺服器端讀取這個分段 (multipart) 的數據信息,並將其中的文件內容提取出來並保存的。通常,在進行文件保存的時候,伺服器端會讀取文件的原始文件名,並從這個原始文件名中得出文件的擴展名,而後隨機為文件起一個文件名 ( 為了防止重復 ),並且加上原始文件的擴展名來保存到伺服器上。
文件解析漏洞,是指中間件(Apache、nginx、iis等)在解析文件時出現了漏洞,從而,黑客可以利用該漏洞實現非法文件的解析。
需要注意的是解析漏洞與上傳漏洞是兩碼事,文件解析漏洞是基於文件上傳之後而言的。
比如,Apache中間件,是c、c++混合寫成的,當Apache中間件出現了解析漏洞,即:c、c++編程出現了漏洞,無論我們php代碼層面如何的安全,都沒辦法抵擋黑客的攻擊,因為現在的漏洞已經與php代碼層無關了,已經是底層的安全問題了,文件解析漏洞就是因為Apache中間件c、c++編程出現了漏洞,導致黑客可以利用該漏洞解析非法文件。
所以,底層安全比任何安全都要重要,至少我們從現在起,要開始重視底層安全了。