欧美成人精品手机在线观看_69视频国产_动漫精品第一页_日韩中文字幕网 - 日本欧美一区二区

LOGO OA教程 ERP教程 模切知識(shí)交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

【W(wǎng)eb滲透】文件上傳漏洞

admin
2023年12月4日 15:30 本文熱度 798

一、文件上傳漏洞介紹

文件上傳:文件上傳是現(xiàn)代互聯(lián)網(wǎng)常見的功能,允許用戶上傳圖片、視頻、及其他類型文件,向用戶提供的功能越多,web受攻擊的風(fēng)險(xiǎn)就越大。

1、文件上傳漏洞
上傳文件時(shí),如果未對(duì)上傳的文件進(jìn)行嚴(yán)格的驗(yàn)證和過濾,就容易造成文件上傳漏洞,上傳腳本文件(asp、aspx、php、jsp等)
注:asp,aspx對(duì)應(yīng)iis解析;php對(duì)應(yīng)apache解析;jsp對(duì)應(yīng)java(tomcat)
惡意上傳行為可能導(dǎo)致網(wǎng)站甚至整個(gè)服務(wù)器被控制。惡意的腳本文件又被稱為Webshell。Webshell具有強(qiáng)大的功能。如查看服務(wù)器目錄、服務(wù)器中文件、執(zhí)行系統(tǒng)命令等。

二、JS檢查繞過

1、檢測(cè)原理
調(diào)用JS的toLowerCase()函數(shù),先將文件名轉(zhuǎn)換為小寫,然后通過substr獲取文件名后面最后一個(gè)點(diǎn)號(hào)后面的后綴(包括點(diǎn)號(hào))進(jìn)行判斷。
substr()返回字符串

//enctype=“multipart/form-data” 專門處理文件上傳的文件流

//return selectFile() 提供點(diǎn)擊提交按鈕,完成文件上傳

(一)JS繞過

1、網(wǎng)站源碼構(gòu)造

(1)前端代碼

(2)后端代碼

2、網(wǎng)站訪問前端代碼,瀏覽器前端繞過文件上傳

注:這里網(wǎng)站的過濾僅為前端過濾,這里前端代碼只允許后綴名偽".jpg"的文件上傳。我們先去嘗試瀏覽器前端過濾。

如圖:通過F12打開開發(fā)者模塊,將onsubmit的值刪除,這里οnsubmit=""調(diào)用的函數(shù)即為我們編寫的判斷(過濾)方法。將此處值刪除后再次點(diǎn)擊上傳我們想要上傳的任意文件,觀察實(shí)驗(yàn)結(jié)果并訪問上傳后的文件

注:這里我們發(fā)現(xiàn)通過修改前端頁面的值,成功上傳并解析了文件

3、使用burpsuit抓包,這里必須先上傳jpg格式的文件

注:這里我們可以先將我們想要上傳的php文件后綴直接改為jpg。也可使用合成圖片碼的方式,抓包后將后綴再改回我們需要上傳的文件后綴,放包后觀察結(jié)果。

注:這里將33.jpg文件后綴修改回.php后放包,文件即可成功上傳。

這里我們成功上傳并解析了我們想要上傳的文件,同理,我們可以繞過上傳任何我們想要上傳的任何文件。

注:圖片碼合成方法,代碼

1、將圖片與我們想要合成的代碼放入同一文件夾下,在文件夾下打開CMD命令框,輸入下面命令

copy 1.jpg/b +1.php/a 2.jpg 這里是將1.jpg與1.php文件合并,生成新圖片2.jpg

三、文件后綴繞過

1、檢測(cè)原理
通過函數(shù)pathinfo()獲取文件后綴,將后綴轉(zhuǎn)為小寫后判斷是不是php

注:pathinfo() 返回文件路徑的信息

2、繞過方法1
有些中間件允許解析其他文件后綴的,如在httpd.conf配置文件中,配置如下代碼,則能解析php、php3、phtml文件。所以上傳一個(gè)后綴名為php3、phphtml的文件即可繞過黑名單。

注:這里添加消息的含義是要能夠解析php3,phtml 這里是將添加的這兩種后綴按照php文件解析

3、繞過方法2(apache解析漏洞)
結(jié)合Apache文件解析機(jī)制,從右向左開始解析文件后綴,若后綴名不可識(shí)別,則繼續(xù)判斷直到遇到可解析的后綴為止,若全部不認(rèn)識(shí),則會(huì)暴露文件內(nèi)容。
4、繞過方法3(windows特性:文件流繞過)
在程序開發(fā)部署的時(shí)候,沒有考慮到系統(tǒng)的特性會(huì)導(dǎo)致限制被繞過,利用windows特性。可以在后綴名中加"."或"::$DATA"繞過
注:這里我們給文件名直接加. windows本身特性會(huì)自動(dòng)刪除,限制如此修改文件后綴,這里就需要使用burpsuit來進(jìn)行修改

(二)文件后綴繞過(黑名單繞過)

1、源碼構(gòu)造

(1)前端代碼

(2)后端代碼

2、網(wǎng)站訪問我們的前端代碼,進(jìn)行文件上傳,觀察相關(guān)結(jié)果

注:這里我們嘗試上傳了.jpg .txt .php這里我們發(fā)現(xiàn)只有php的文件無法上傳,通過代碼我們也可以知道,此處是將php的文件加入了黑名單,不允許后綴為php的文件上傳。

3、畸形文件名上傳繞過
這里我們上傳一個(gè)后綴名為php3的文件,如下圖,我們發(fā)現(xiàn)上傳成功,但是訪問該文件時(shí),php文件未解析。

注:我們此模塊的內(nèi)容主要講文件解析及上傳,這里文件上傳已經(jīng)成功,接下來要做的就是文件解析

4、根據(jù)課件筆記提示,修改httpd.conf配置文件

(1)打開phpstudy面板,點(diǎn)擊【設(shè)置】–>【配置文件】–>【httpd.conf】–>點(diǎn)擊apache的版本 打開文件

(2)在文件處使用Ctrl+F 進(jìn)行查找,先去查找AddType 如圖:找到如下內(nèi)容,在下面加入以下3條命令

AddType application/x-http-php .php
AddType application/x-http-php .php3
AddType application/x-http-php .phtml

注:這里添加消息的含義是要能夠解析php3,phtml 這里是將添加的這兩種后綴按照php文件解析

5、修改完配置文件后,重啟apache服務(wù),重新訪問剛才上傳成功的.php3文件

這里我們?cè)俅卧L問上傳的.php3可以發(fā)現(xiàn)php文件可以正常解析。

6、apache解析漏洞

修改文件名為.php.XX 這里XX可以是數(shù)字,也可以是字母,根據(jù)apache解析漏洞來進(jìn)行上傳繞過

7、windows特性繞過
使用burpsuit抓包來對(duì)文件后綴進(jìn)行修改 可以在后綴名中加"."或"::$DATA"繞過

繞過上傳成功后在文件根目錄注意觀察我們上傳文件的后綴名。

四、文件類型繞過

1、檢測(cè)原理
判斷$_FILES["file"]["type"]是不是圖片格式(image/gif、image/jpeg、image/pjpeg),不是則不允許上傳。
$_FILES["file"]["type"]的值是從請(qǐng)求數(shù)據(jù)包中Content-type中獲取的

注:我們這里的類型檢測(cè),也是有相應(yīng)的配置文件與之對(duì)應(yīng)的,檢測(cè)文件類型的配置文件為mime.types 文件位置為: D:\phpstudy_pro\Extensions\Apache2.4.39\conf\mime.types

注:這里我們可以看到各種文件類型與對(duì)應(yīng)關(guān)系

2、繞過方法1
通過抓取數(shù)據(jù)請(qǐng)求包,上傳php文件時(shí),Content-Type值為application/octer-stream,上傳jpg的文件時(shí)Content-Type值為image/jpeg。可修改文件類型進(jìn)行繞過。
3、繞過方法2
如果代碼使用getimagesize()函數(shù)獲取圖片的寬高等信息,如果上傳的不是圖片,那么則獲取不到信息。

在圖片文件腳本文件開頭補(bǔ)充圖片對(duì)應(yīng)的頭部值,或在圖片后寫入腳本代碼(這里就是第一節(jié)課講過的圖片+代碼合成新圖片的知識(shí)模塊) (1)方法1 這里我們將文件頭部值寫入文件即可 注:下圖顯示的47 49 46……這些是16進(jìn)制數(shù),可以通過01編輯器進(jìn)行編輯,我們通過nt++編輯時(shí)可直接在代碼前面編寫GIF89a,我們可以通過編碼轉(zhuǎn)換進(jìn)行驗(yàn)證。

(2)方法2 合成圖片這種方法前面已經(jīng)講過,這里不再講。下面再將一種方式 直接將圖片使用記事本模式打開,在亂碼后面直接加入我們需要加入的PHP代碼。 注:這里我們修改完后文件后綴名依舊是.JPG  我們雖然修改了文件內(nèi)容,但是上傳成功后.JPG文件依舊無法解析。這里我們要將添加完代碼的圖片后綴名改為.php后再次上傳,上傳后即可實(shí)現(xiàn)解析。但這里操作沒有方法1方便,操作時(shí)也可將合成圖片上傳后,在burpsuit中將后綴名改為php后放包,即可實(shí)現(xiàn)上傳繞過,也可實(shí)現(xiàn)解析。

(三)文件類型繞過(白名單繞過)

1、源碼構(gòu)造

(1)前端代碼

(2)后端代碼

2、訪問源文件,上傳各種類型文件并觀察結(jié)果

這里我們發(fā)現(xiàn),無論是上傳jpg/png…凡是圖片類型的文件均可上傳,php/txt…其他類型文件均不能上傳。通過代碼我們可以發(fā)現(xiàn),這里是通過白名單的方式,只允許圖片類型的文件上傳,只有在白名單之內(nèi)的文件才可以上傳,這里我們發(fā)現(xiàn),單純通過瀏覽器,網(wǎng)頁前端,我們無法做任何繞過與修改。我們依舊需要使用burpsuit抓包的方式去進(jìn)行繞過。

3、使用burpsuit抓包,修改文件類型進(jìn)行上傳繞過

(1)將文件類型修改為Content-Type:image/jpeg放包后觀察是否文件上傳成功

注:這里我們發(fā)現(xiàn)文件不僅上傳成功,并且成功解析

(四)文件類型繞過(getimagesize繞過)

1、文件代碼構(gòu)造

(1)網(wǎng)站前端代碼構(gòu)造

(2)網(wǎng)站后端代碼構(gòu)造

2、 在圖片文件腳本文件開頭補(bǔ)充圖片對(duì)應(yīng)的頭部值,進(jìn)行繞過

這里我們可以看到文件成功繞過并上傳,訪問文件,觀察結(jié)果

3、合成圖片碼,使用burpsuit抓包后,修改文件后綴名,放包觀察實(shí)驗(yàn)結(jié)果

如圖:圖片亂碼后面就是我們寫入的代碼,根據(jù)圖片步驟,抓包后修改后綴,放包,觀察結(jié)果

可以看到放包后成功上傳,訪問該文件,查看能否成功解析執(zhí)行

可以看到這里文件成功解析,圖片在文件中為亂碼形式,后面加入的php代碼phpinfo();成功解析

五、文件截?cái)嗬@過

1、檢測(cè)原理
由于00代表結(jié)束符,PHP會(huì)把00后面的所有字符刪除

截?cái)鄺l件:PHP版本小于5.3.4、magic_quotes_gpc為OFF狀態(tài) 注:magic_quotes_gpc參數(shù)設(shè)置在phpstudy面板中【設(shè)置】–>【配置文件】–>【php.ini】–>【php5.2.17nts】打開文件,然后查找(Ctrl+F)magic_quotes_gpc參數(shù)設(shè)置為OFF 這里必須要下載一個(gè)版本低于5.3.4的php,然后將網(wǎng)站的php版本修改為低版本。

注:魔術(shù)引號(hào):magic_quotes_gpc=On時(shí),會(huì)把引號(hào)進(jìn)行轉(zhuǎn)義。php版本升級(jí)后將magic_quotes_gpc函數(shù)丟棄,使用了新的轉(zhuǎn)義函數(shù)。

2、繞過方法

GET方法中加入%00截?cái)?/span> POST方法中傳入00并解碼 注:我們上傳的文件進(jìn)行了重命名,所以才會(huì)有我們的上傳00截?cái)?/span>

(五)00截?cái)啵℅ET)

1、網(wǎng)站源碼構(gòu)造

2、訪問網(wǎng)站,上傳相關(guān)文件,觀察總結(jié)

這里通過上傳我們發(fā)現(xiàn),只有白名單內(nèi)的文件后綴才能夠上傳,白名單外的文件(如php)均不可上傳。我們通過瀏覽器前端也無法再做什么其他可繞過的方式,我們通過抓包去嘗試?yán)@過。

如圖:上圖標(biāo)記的地方是GET方式的GET請(qǐng)求表單,在jieduan=./upload/后加上2.php后放包進(jìn)行觀察

注:我們這里上傳了一個(gè)圖片碼 放包后我們可以看到文件上傳成功,但是我們上傳的文件名這里重疊了一個(gè)2.php(802020…)我們正常訪問這個(gè)文件依舊可以解析,解析后是一個(gè)圖片。我們接下來嘗試去00截?cái)?/span>

3、上傳圖片碼(內(nèi)含代碼),通過burPOSTpsuit抓包使用00截?cái)噙M(jìn)行繞過

如圖:在GET請(qǐng)求后加入2.php%00 后放包,觀察我們的頁面

如圖,根據(jù)回顯文件地址,去訪問該文件

這里我們發(fā)現(xiàn)回顯的文件404錯(cuò)誤,找不到文件

4、去掉php后面的一長串字符串,僅訪問php文件

這里我們發(fā)現(xiàn),我們成功上傳并解析了剛才上傳的圖片碼,這里就是00截?cái)嗟囊环N繞過方式(GET方式)

(五)00截?cái)啵≒OST)

1、網(wǎng)站源碼構(gòu)造

2、點(diǎn)擊訪問文件,上傳相應(yīng)文件,并觀察總結(jié)

這里我們依舊發(fā)現(xiàn)只有白名單內(nèi)的文件允許上傳,其他文件均不允許上傳

3、使用burpsuit抓取數(shù)據(jù)包,并觀察與GET方式的不同

注:這里我們發(fā)現(xiàn)POST請(qǐng)求與GET請(qǐng)求的不同之處。首先是URL處不帶請(qǐng)求,但是文本內(nèi)容重點(diǎn)出現(xiàn)了./upload 這里便是我們的POST請(qǐng)求,POST請(qǐng)求需要

4、在Raw視圖下將"./upload" 修改為"./upload/2.php00"并在Hex視圖下修改0處編碼

如圖,找到上步修改文件名的位置,修改00處的編碼為00(30–>00)前面我們給php后面加的00是為了更快更準(zhǔn)確的找到文件后綴名所在的位置。16進(jìn)制修改為00后再去觀察Raw視圖

如圖:修改完成后我們輸入的00會(huì)轉(zhuǎn)換為兩個(gè)框型圖案

5、釋放修改后的數(shù)據(jù)包,驗(yàn)證是否上傳并解析成功。

如圖,我們看到文件上傳成功,同上面操作過程,檢驗(yàn)文件是否能夠正常解析

這里我們看到文件成功上傳并成功解析,00截?cái)喑晒?/span>

六、文件內(nèi)容繞過

1、檢查原理
一些網(wǎng)站文件檢測(cè)邏輯是先允許上傳任意文件,然后檢查文件內(nèi)容是否包含可執(zhí)行腳本,如果包含則刪除。這里使用sleep()函數(shù)來模擬判斷是否含有腳本所需要的時(shí)間。
2、繞過方法
利用成功上傳到刪除的時(shí)間差,上傳一個(gè).php文件,在未刪除之前立即訪問,則會(huì)自動(dòng)生成一個(gè)新php文件,新文件不會(huì)被刪除。

(六)文件內(nèi)容繞過

1、源碼構(gòu)造

(1)前端代碼

(2)后端代碼

2、點(diǎn)擊訪問文件,上傳相應(yīng)文件,并觀察總結(jié)

這里我們發(fā)現(xiàn)任意文件均可上傳,這里上傳時(shí)我們需要等待10s才可上傳成功,這里我們模擬文件上傳,上傳后再經(jīng)過檢查將文件刪除的過程。

3、上傳下面代碼,點(diǎn)擊訪問該文件,即可成功生成shell.php
這里可以在10s等待,文件還未上傳成功時(shí),點(diǎn)擊訪問,即可生成新文件shell.php

注:這里是模擬競爭上傳環(huán)境,我們一邊上傳,系統(tǒng)會(huì)自動(dòng)刪除我們上傳的文件,這里就需要快速訪問上傳文件,只要訪問到剛才上傳的文件,即可實(shí)現(xiàn)我們想要寫入的文件生成。

點(diǎn)擊訪問上傳后文件,看是否會(huì)生成新的文件

如圖,這里的shell.php是我們?cè)L問上一步上傳文件后生成的新文件,這里文件內(nèi)容可以自行控制,可以寫入我們想要的任何文件。


該文章在 2023/12/5 11:08:09 編輯過
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對(duì)中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對(duì)港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場(chǎng)、車隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場(chǎng)作業(yè)而開發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉儲(chǔ)管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購管理,倉儲(chǔ)管理,倉庫管理,保質(zhì)期管理,貨位管理,庫位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號(hào)管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved