php代碼在線格式化工具1.解析文件上傳漏洞與開發(fā)語言無關(guān)的區(qū)別!!notepad php代碼格式化
2022-09-11
概述
文件上傳漏洞是指用戶上傳可執(zhí)行腳本文件,并通過該腳本文件獲得執(zhí)行服務(wù)器端命令的能力。一個常見的場景是web服務(wù)器允許用戶上傳圖片或保存普通文本文件,用戶繞過上傳機制上傳惡意代碼并執(zhí)行控制服務(wù)器。
需要注意的是,上傳文件本身是沒有問題的。問題是文件上傳到服務(wù)器后php代碼在線格式化工具,服務(wù)器如何處理和解釋文件。
這種攻擊方式是最直接有效的。如果服務(wù)器的處理邏輯不夠安全,將會導(dǎo)致嚴重的后果。
2 文件上傳引起的常見安全問題
上傳的文件是一種網(wǎng)絡(luò)腳本語言。服務(wù)端的web容器對用戶上傳的腳本進行解釋執(zhí)行,從而導(dǎo)致代碼執(zhí)行。
上傳的文件是策略文件.xml,被黑客用來控制本域下的行為
(類似于其他以類似方式控制策略文件的情況);
上傳的文件是病毒或木馬文件,黑客用來誘騙用戶或管理員下載并執(zhí)行。
上傳的文件是釣魚圖片或包含腳本的圖片,在某些版本的瀏覽器中作為腳本執(zhí)行,用于釣魚和欺詐。
要完成本次攻擊,必須滿足以下條件:
首先,上傳的文件可以被 web 容器解釋和執(zhí)行。所以上傳文件的目錄應(yīng)該是web容器覆蓋的路徑。
其次,用戶可以從 Web 訪問文件。如果文件上傳了,但用戶無法通過網(wǎng)絡(luò)訪問,或者無法讓網(wǎng)絡(luò)容器解釋腳本,則不能稱為漏洞。
最后,如果用戶上傳的文件內(nèi)容被安全檢查、格式化、圖片壓縮等功能改變,攻擊也可能失敗。
三舉兩例
前面說了很多web安全攻防的測試范圍都是基于php服務(wù)器的,所以例子也是基于.php文件的。此漏洞與開發(fā)語言無關(guān)。
1.解析漏洞
漏洞原理:
默認支持CGI(服務(wù)器運行php文件的接口協(xié)議)形式的PHP解析。通常的做法是通過配置文件中的正則匹配來設(shè)置。訪問這個URL時網(wǎng)站優(yōu)化,$會被設(shè)置為“info.jpg/test.php”,然后構(gòu)造傳遞給PHP CGI,最后PHP會將info.jpg解析為PHP文件,為什么?
這是關(guān)于這個選項的。這是 php 配置文件中的一個關(guān)鍵選項。默認情況下啟用。如果啟用此選項,將觸發(fā) PHP 中的以下邏輯:
PHP 會認為是 info.jpg,而 test.php 是,所以 info.jpg 會被解析為 PHP 文件
PHP官方推薦將參數(shù)設(shè)置為0,對這個bug的態(tài)度是否定的。
漏洞文件如下所示:
%20\0.php
另一種方法:上傳一個名為test.jpg的文件,然后訪問test.jpg/.php,就會在這個目錄下生成一句 .php。
2.解析漏洞
漏洞原理
.x 以前的版本解析文件的規(guī)則是從右到左判斷和解析。如果后綴名是無法識別的文件解析,會向左判斷,直到遇到識別的文件類型。比如test.php.rar,其中“.rar”這兩個后綴是無法識別和解析的,.php.rar會被解析成php,然后就認為是.php類型的文件了。至于哪些文件可以識別?這些文件類型定義可在 mime. 文件中找到。
漏洞文件名是這樣的
1
這個功能
,很多工程師不知道什么時候?qū)憫?yīng)用,寫的安全檢查可能有漏洞。例如,.rar 文件是合法的上傳請求。在應(yīng)用程序中判斷文件后綴是否為.rar。用戶上傳的文件是xxxx.php.rar.rar,導(dǎo)致腳本執(zhí)行。
3. 攻擊測試步驟
這個場景非常巧妙。首先假設(shè)有一個單句木馬文件,上傳的時候可能會被破壞網(wǎng)站開發(fā),所以需要把這個木馬文件轉(zhuǎn)換成圖片木馬(比如生成cmd命令,打開二進制文本,然后添加木馬命令。等幾種方法很容易),圖片馬是圖片格式,所以很容易上傳成功。另外,被攻擊的服務(wù)器存在文件上傳漏洞,可以用中國菜刀或螞蟻劍(管理工具)進行測試。
四種常見的防御方法
1.文件上傳目錄設(shè)置為不可執(zhí)行
只要web容器無法解析該目錄下的文件,即使攻擊者上傳腳本文件,服務(wù)器本身也不會受到影響。在實際應(yīng)用中,很多大型網(wǎng)站或系統(tǒng)文件都被上傳到獨立的存儲服務(wù)器上進行靜態(tài)文件處理。一方面方便使用緩存加速,減少性能損失,另一方面也消除了腳本執(zhí)行的可能。對于一些小型應(yīng)用,文件上傳問題還是需要多加注意的。
2.確定文件類型
在判斷文件類型時php代碼在線格式化工具,可以結(jié)合使用MIME Type、后綴檢查等。用于驗證上傳文件的后綴是否合法。瀏覽加載的文件時,不點擊上傳按鈕,會彈出一個對話框。推薦使用白名單方式。文件。
注意:黑名單方法在驗證文件后綴時不是一個好的設(shè)計方法,很容易被跳過。
進一步
此外,對于圖像處理,可以使用壓縮函數(shù)或函數(shù)來破壞圖像中可能包含的 HTML 代碼。
3.用隨機數(shù)重寫文件名
文件上傳 如果要執(zhí)行代碼,用戶需要有權(quán)訪問文件。如果在應(yīng)用程序中用隨機數(shù)重寫文件名和路徑,將大大增加攻擊的成本。同時上面的xxxx.php.rar.rar等文件也會被重寫,攻擊不會成功。
4.單獨設(shè)置文件服務(wù)器的域名
由于瀏覽器的同源策略,會導(dǎo)致一系列客戶端攻擊失敗,例如上傳中包含XSS漏洞等,但是否可以單獨設(shè)置域名取決于具體的業(yè)務(wù)環(huán)境。
五個總結(jié)
文件上傳往往與代碼執(zhí)行相關(guān)聯(lián),所以業(yè)務(wù)中使用的上傳功能要經(jīng)過安全工程師的嚴格檢查。
文件上傳的問題看似簡單,但要實現(xiàn)一個安全的上傳功能,要考慮很多問題,根據(jù)業(yè)務(wù)需要不斷發(fā)現(xiàn)問題,改進,才能設(shè)計出最合理的上傳功能。
——————————————————
版權(quán)聲明:本文為CSDN博主“舉杯慶?!痹瓌?chuàng)文章,遵循CC4.0 BY-SA版權(quán)協(xié)議。轉(zhuǎn)載請附上原文出處鏈接和本聲明。
原文鏈接: