WEB安全第二篇--用檔案搞定伺服器:任意檔案上傳、檔案包含與任意目錄檔案遍歷
最近做專心web安全有一段時間了,但是目測後面的活會有些複雜,涉及到更多的中介軟體、底層安全、漏洞研究與安全建設等越來越複雜的東東,所以在這裡想寫一個系列關於web安全基礎以及一些討巧的payload技巧以便於備忘。不是大神、部落格內容非常基礎,如果真的有人看而且是大牛們,請不要噴我,歡迎指正我的錯誤(水平有限)。
一、檔案上傳:
1、這本身是一個功能,但是如果沒做好,就成為一個大漏洞。本質:
對上傳檔案沒有進行型別檢查,沒有做進一步處理,上傳檔案儲存路徑洩露,且可訪問可執行。
2、檔案payload部分:
檔案:
(1)一句話小馬
(2)大馬
(3)其他配置檔案.htaccess / crossdomain.xml等
3、上傳檔案的方式:
(1)直接上傳
(2)繞過前端副檔名限制上傳(firebug)
(3)繞過後端副檔名限制上傳:
#Apache的:1.php.rax.rax.rax。
#lighttpd的:xx.jpg/xx.php。
#IIS的:1.asp;abc.jpg,1.jpg%00.asp。
#Nginx:1.jpg 訪問的時候http://localhost/1.jpg/x.php 當版本低時,存在xx.jpg%00.php解析漏洞。
#低版本IIS 會將/asp/目錄下的所有檔案都按照asp解析,或者webdav目錄下上傳.txt move 成.asp#
其他手段:
#截斷 1.php%00.jpg。
#轉換大小寫:1.PHP。
#修改檔案型別對抗檢查content-type。
#終極大招:使用copy a.gif /b + b.php /a c.php 構造包含惡意程式碼的正常型別檔案。
4、防禦:
(1)接受檔案使用臨時路徑,然後轉存、檔名更換為隨機字串。
(2)不洩露檔案最終儲存目錄。
(3)使用沒有解析漏洞的高版本伺服器。
(4)嚴格限制上傳副檔名--白名單機制。
(5)做檔案型別mime-type檢查,對影象檔案做二次渲染。
二、檔案包含:
1、本質:
當上傳的檔案不能直接被執行時,可以藉助檔案包含來搞定。什麼是檔案包含,其實就是程式設計中的檔案或者包引入
2、分類:
(1)本地檔案包含
(2)遠端檔案包含
3、PHP檔案包含:
1 //All of these function: 2 /* 3 include() 4 include_once() 5 require() 6 require_once() 7 */ 8 <?php 9 include($_GET["file"]); 10 ?> 11 //http://localhost/include.php?file=phpinfo.php 12 /* 13 Remote -> allow_url_include = 1 & allow_url_fopen = 1 14 //http://localhost/include.php?file=//http://localhost/phpphpinfo.php 15 */ 16 //pgpinfo.txt: 17 <?php 18 phpinfo(); 19 ?>
4、JSP檔案包含
1 //分為靜態和動態: 2 //靜態 3 <%@include file="page.txt"%> 4 //動態: 5 <%String pages = request.getParameter("file") %> 6 <jsp:include page="<%=pages>"></jsp:include> 7 //http://localhost/include.jsp?file=xxx.jsp
5、檔案包含的利用:
(1)讀取敏感資訊:
#/etc/passwd
#/etc/shadow
#my.cnf\php.ini\httpd.conf\access_log等等
(2)遠端包含shell小馬(一句話)。
(3)配合訪問上傳的檔案。
(4)使用封裝協議,也就是說file引數後面可以是各種協議偽協議表示的檔案。
(5)繞過waf和防火牆。
6、防禦:
(1)包含檔案白名單。
(2)使用者輸入過濾掉. / \ 和偽協議關鍵詞。
(3)包含的檔案不允許外部可控。
三、任意目錄檔案遍歷:
1、原因:
web伺服器配置不當,導致可以訪問到web根目錄(www目錄)以外的檔案,應該是絕對禁止的。且web程式設計沒有對訪問的目錄做檢查和限制。
2、比較容易發生的位置:
(1)下載類
(2)圖片等檔案顯示類
3、檢測:
(1)file = /etc/passwd 或者 C:/Users/
(2)file = ../../../../../../../../../../../../etc/passwd
(3)http://www.test.com/index/index.php/../../../../../../../../../etc/passwd
4、防禦:
1、配置不能訪問WEB根目錄之外的專案。
2、對可以訪問的檔案放在一個資原始檔夾下。
3、對使用者輸入的特殊字元例如.和/以及\進行過濾
博主簡介:博主國內安全行業目前最強大的網路安全公司做技術研究員,常年做技術工作。 獲得過以下全國競賽大獎: 《中國電子作品大賽一等獎》 《雲端計算技術大賽一等獎》 《AIIA人工智慧大賽優勝獎》《網路安全知識競賽一等獎》 《高新技術個人突出貢獻獎》,並參與《虛擬化技術-**保密**》一書編寫,現已出版。還擁有多項專利,多項軟體著作權! 且學習狀態上進,立志做技術牛逼的人。座右銘:在路上,永遠年輕,永遠熱淚盈眶。可郵件聯絡博主共同進步,個人郵箱:[email protected]