php文件上傳代碼網(wǎng)絡(luò)攻擊者上傳漏洞與的關(guān)系文件上傳的一種方式介紹php上傳圖片代碼
2022-05-01
一、文件上傳漏洞及關(guān)系
文件上傳漏洞是指網(wǎng)絡(luò)攻擊者將可執(zhí)行文件上傳到服務(wù)器并執(zhí)行。這里上傳的文件可能是木馬、病毒、惡意腳本等。這種攻擊方式是最直接有效的。部分文件上傳漏洞利用的技術(shù)門檻很低,很容易被攻擊者實施。
文件上傳漏洞本身就是一個危害很大的漏洞,利用這個漏洞被無限擴大。大多數(shù)上傳漏洞被利用后,攻擊者會留下來方便后續(xù)訪問系統(tǒng)。一旦放置或插入受影響的系統(tǒng),攻擊者就可以通過這種更簡單、更隱蔽的方式在服務(wù)中為所欲為。
這里需要注意的是,上傳漏洞的利用經(jīng)常被使用,植入的遠不止文件上傳。
1 簡介
是asp、php、jsp或cgi等網(wǎng)頁文件形式的命令執(zhí)行環(huán)境,也可以稱為網(wǎng)頁后門。攻擊者入侵網(wǎng)站后,通常會將這些asp或php后門文件與網(wǎng)站服務(wù)器的web目錄下的正常網(wǎng)頁文件混合在一起,然后使用瀏覽器訪問這些后門,得到一個命令執(zhí)行環(huán)境來控制網(wǎng)站服務(wù)器的用途(可以上傳、下載或修改文件,操作數(shù)據(jù)庫,執(zhí)行任意命令等)。
后門高度隱蔽,可以輕松通過防火墻。訪問時不留下系統(tǒng)日志seo優(yōu)化,網(wǎng)站的web日志中只留下部分?jǐn)?shù)據(jù)提交記錄。沒有經(jīng)驗的管理員很難找到入侵的痕跡。攻擊者可以隱藏在普通文件中,修改文件時間來增強隱蔽性,也可以使用一些函數(shù)對進行編碼或拼接來躲避檢測。除此之外,通過單句木馬的小馬提交更強大的馬,可以更輕松地通過應(yīng)用本身的檢測。它是最常見和最原始的小馬之一,在此基礎(chǔ)上出現(xiàn)了許多變種,例如等等。
2 文件上傳漏洞原理
大部分網(wǎng)站和應(yīng)用系統(tǒng)都有上傳功能,如用戶頭像上傳、圖片上傳、文檔上傳等。部分文件上傳功能實現(xiàn)代碼沒有嚴(yán)格限制用戶上傳的文件后綴和文件類型,使得攻擊者可以將任意 PHP 文件上傳到可通過 Web 訪問的目錄,并可以將這些文件傳遞給 PHP 解釋器。在遠程服務(wù)器上執(zhí)行任意 PHP 腳本。
當(dāng)系統(tǒng)存在文件上傳漏洞時,攻擊者可以將病毒、木馬、其他惡意腳本或包含腳本的圖片上傳到服務(wù)器,這些文件將為攻擊者后續(xù)的攻擊提供便利。根據(jù)具體漏洞,這里上傳的腳本可以是普通后綴的PHP、ASP、JSP腳本,也可以是被篡改后綴的這類腳本。
m 當(dāng)上傳的文件是病毒或木馬時,主要用于誘騙用戶或管理員下載并執(zhí)行或自動運行;
文件上傳后,攻擊者可以通過這些網(wǎng)頁的后門執(zhí)行命令并控制服務(wù)器;
m 當(dāng)上傳的文件是另一個惡意腳本時,攻擊者可以直接執(zhí)行該腳本進行攻擊;
m 當(dāng)上傳的文件為惡意圖片時,該圖片可能包含腳本,當(dāng)這些圖片被加載或點擊時,該腳本會靜默執(zhí)行;
m 當(dāng)上傳的文件是偽裝成普通后綴的惡意腳本時,攻擊者可以借助本地文件包含漏洞( File )執(zhí)行該文件。比如將bad.php文件重命名為bad.doc并上傳到服務(wù)器,然后通過PHP的 , , , 等函數(shù)執(zhí)行。
此處惡意文件上傳主要有以下三個原因:
m 文件上傳沒有仔細檢查。一些應(yīng)用在上傳文件時根本不進行文件格式檢查,使得攻擊者可以直接上傳惡意文件。有些應(yīng)用只在客戶端檢查php文件上傳代碼,在專業(yè)攻擊者眼里,幾乎所有客戶端檢查都等于沒有檢查。攻擊者可以通過上傳 NC 和斷點等工具輕松繞過客戶端檢查。雖然有些應(yīng)用會在服務(wù)器端進行黑名單檢查,但這種情況可能會被忽略。比如把.php改成.php就可以繞過檢查;一些應(yīng)用程序在服務(wù)器端執(zhí)行白名單檢查,但忽略截斷字符。 ,如果應(yīng)用原本只允許上傳jpg圖片,文件名可以構(gòu)造為xxx.php.jpg,即16進制0x00字符,.jpg欺騙應(yīng)用的上傳文件類型檢測,但是對于服務(wù)器來說,因為字符截斷,最后上傳的文件變成xxx.php。
m 文件上傳后文件名修改處理不當(dāng)。有些應(yīng)用在服務(wù)器端進行了完整的黑名單和白名單過濾,但是在修改上傳文件的文件名時,是稀疏的,允許用戶修改文件后綴。例如,如果應(yīng)用程序只能上傳.doc文件,攻擊者可以先將.php文件的后綴改為.doc,上傳成功后修改文件名時再將后綴改為.php。
m 在使用第三方插件時引入。很多應(yīng)用都引用了具有文件上傳功能的第三方插件。這些插件在實現(xiàn)文件上傳功能時可能存在漏洞,攻擊者可以利用這些漏洞進行文件上傳攻擊。例如,知名博客平臺插件豐富,每年都會在這些插件中發(fā)現(xiàn)大量文件上傳漏洞。
3 文件上傳攻擊示例
如上所述,文件上傳漏洞的原因有很多。下面以第二個為例,選擇文件上傳漏洞(-db編號為)詳細講解利用漏洞的全過程。
是一個使用PHP語言和語言開發(fā)的內(nèi)容管理系統(tǒng)。 2.2.版本2允許未經(jīng)認(rèn)證的用戶上傳文件,并且可以修改上傳文件的后綴。雖然系統(tǒng)限制用戶上傳doc和pdf格式的文件,但是在修改文件名時出現(xiàn)錯誤,讓用戶可以修改文件后綴。攻擊者可以將惡意文件的后綴改為doc或pdf,上傳成功后將后綴改為php執(zhí)行。
l 上傳文檔后綴
訪問系統(tǒng)的文件管理頁面///.php,上傳一個正常的doc文件,發(fā)現(xiàn)可以上傳成功。用PHP語言編寫后門,也可以從網(wǎng)上下載一個已有的,將文件后綴改為doc。在這里,把.php后門改成.doc。
準(zhǔn)備好后,訪問 .php 文件管理頁面,將 .doc 上傳到服務(wù)器。如圖1所示,doc后綴已經(jīng)上傳成功。此時通過瀏覽器訪問doc格式無法正常執(zhí)行。
圖1.doc上傳成功
l 把后綴改成php
在文件管理頁面右擊.doc,選擇進入修改文件名頁面,將.doc改為.php,點擊Ok按鈕提交修改結(jié)果(如圖2)。此時文件的后綴已經(jīng)被php修改成功php文件上傳代碼,由于應(yīng)用程序編碼的執(zhí)行網(wǎng)站開發(fā),文件管理頁面已經(jīng)無法讀取.php文件,但是我們可以在文件上傳中看到修改后的文件系統(tǒng)服務(wù)器目錄(如圖3所示)。顯示)。
圖2 將.doc修改為.php
圖3 服務(wù)端的后綴改為php
我執(zhí)行
此時php后綴已經(jīng)在服務(wù)器的上傳目錄中,可以正常解析服務(wù)器環(huán)境。直接通過瀏覽器訪問文件:輸入我們設(shè)置的密碼登錄這個頁面(如圖4)。從圖中我們可以看出,只有通過這個文件,攻擊者才能在服務(wù)器上進行文件管理、數(shù)據(jù)庫管理、執(zhí)行系統(tǒng)命令、執(zhí)行任意PHP代碼。這樣,攻擊者可以將額外的文件放置到更深的目錄中,或者將PHP后門代碼直接添加到系統(tǒng)中已經(jīng)很少使用的php文件中,以防止被系統(tǒng)管理員檢測到。
圖4 成功進入后門