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