自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

淺談權(quán)限獲取方法之文件上傳

人工智能 機(jī)器學(xué)習(xí)
文件上傳漏洞產(chǎn)生的主要原因是:應(yīng)用中存在上傳功能,但是上傳的文件沒有經(jīng)過(guò)嚴(yán)格的合法性檢驗(yàn)或者檢驗(yàn)函數(shù)存在缺陷,導(dǎo)致可以上傳木馬文件到服務(wù)器。文件上傳漏洞危害極大因?yàn)榭梢灾苯由蟼鲪阂獯a到服務(wù)器上,可能會(huì)造成服務(wù)器的網(wǎng)頁(yè)篡改、網(wǎng)站被掛馬、服務(wù)器被遠(yuǎn)程控制、被安裝后門等嚴(yán)重的后果。

概述

文件上傳漏洞是發(fā)生在有上傳功能的應(yīng)用中,如果應(yīng)用程序?qū)τ脩舻纳蟼魑募]有控制或者存在缺陷,攻擊者可以利用應(yīng)用上傳功能存在的缺陷,上傳木馬、病毒等有危害的文件到服務(wù)器上面,控制服務(wù)器。

漏洞成因及危害

文件上傳漏洞產(chǎn)生的主要原因是:應(yīng)用中存在上傳功能,但是上傳的文件沒有經(jīng)過(guò)嚴(yán)格的合法性檢驗(yàn)或者檢驗(yàn)函數(shù)存在缺陷,導(dǎo)致可以上傳木馬文件到服務(wù)器。文件上傳漏洞危害極大因?yàn)榭梢灾苯由蟼鲪阂獯a到服務(wù)器上,可能會(huì)造成服務(wù)器的網(wǎng)頁(yè)篡改、網(wǎng)站被掛馬、服務(wù)器被遠(yuǎn)程控制、被安裝后門等嚴(yán)重的后果。

下面我們就文件上傳的幾種驗(yàn)證及繞過(guò)方法:

1.本地驗(yàn)證(前端驗(yàn)證)

前端JS過(guò)濾繞過(guò)上傳漏洞是因?yàn)閼?yīng)用程序是在前端通過(guò)JS代碼進(jìn)行的驗(yàn)證,而不是在程序后端進(jìn)行的驗(yàn)證,這樣就可以通過(guò)修改前端JS代碼的方式進(jìn)行繞過(guò)上傳過(guò)濾,上傳木馬。

那么如何判斷是否為前端驗(yàn)證呢?我個(gè)人覺得我們可以看在進(jìn)行上傳抓包的時(shí)候是否能到數(shù)據(jù)包,是否有數(shù)據(jù)流過(guò),或者可以看上傳圖片是否頁(yè)面會(huì)顯示上傳的圖片地址等。

繞過(guò):將過(guò)濾代碼刪除,修改或禁用Javascript。

2.后端驗(yàn)證及繞過(guò)

文件上傳常見驗(yàn)證:后綴名(直接驗(yàn)證),文件,文件頭(間接驗(yàn)證)。

2.1 后綴名

2.1.1 黑名單(明確不允許上傳的腳本格式后綴)

文件名過(guò)濾繞過(guò)漏洞主要是因?yàn)橥ㄟ^(guò)黑名單的方式判斷了文件上傳的類型,而且并沒有完整的過(guò)濾,導(dǎo)致攻擊者通過(guò)上傳黑名單類型之外的文件。

黑名單判斷方法:上傳文件,系統(tǒng)提示不允許上傳xxx格式文件。

繞過(guò):使用其他格式(php5,Phtml,php3)或者文件大小寫,同時(shí)也可以加一些干擾符號(hào)實(shí)現(xiàn)繞過(guò)。

2.1.2 .htaccess(偽靜態(tài)協(xié)議)-重寫解析(Apache才有并且開啟偽靜態(tài)模塊)

.htaccess文件上傳是利用.htaccess文件可以對(duì)Web服務(wù)器配置的功能,實(shí)現(xiàn)對(duì)jpg、png等后綴的文件當(dāng)做PHP文件解析的過(guò)程。

.htaccess文件(分布式配置文件)提供了一種基于每個(gè)目錄進(jìn)行配置更改的方法,包含一個(gè)或多個(gè)配置指令的文件放在特定的文檔目錄中,并且文件中的指令適用于該目錄及其所有子目錄。.htaccess是Web服務(wù)器的一個(gè)配置文件,可以通過(guò).htaccess文件實(shí)現(xiàn)Web服務(wù)器中的定義文件的解析方式、重定向等配置。

繞過(guò)方法:首先上傳1.htaccess文件。2.再上傳圖片馬。

2.1.3 空格繞過(guò)

繞過(guò)方法:數(shù)據(jù)包中文件后綴名后加一個(gè)空格實(shí)現(xiàn)繞過(guò)。

2.1.4 .繞過(guò)

繞過(guò)方法:跟空格繞過(guò)方法類似,數(shù)據(jù)包中文件后綴名后加一個(gè).實(shí)現(xiàn)繞過(guò)。

2.1.5 ::$data繞過(guò)

這是windows特有的一種協(xié)議,在window的時(shí)候如果文件名+"::$DATA"會(huì)把::$DATA之后的數(shù)據(jù)當(dāng)成文件流處理,不會(huì)檢測(cè)后綴名,且保持::$DATA之前的文件名,他的目的就是不檢查后綴名。

2.1.6 循環(huán)過(guò)濾

繞過(guò):代碼將字符串里的php替換為空。

如:a.pphphp 會(huì)變成->a.

2.1.7 白名單:明確可以上傳的格式后綴(更安全)

%00截?cái)唷?x00截?cái)啵ń⒃诘刂飞系脑恚財(cái)辔募竺鏀?shù)據(jù) )00截?cái)嗬@過(guò)只能繞過(guò)前端驗(yàn)證。

截?cái)嗟漠a(chǎn)生主要原因就是存在%00這個(gè)字符,PHP<5.3.4時(shí),會(huì)把它當(dāng)做結(jié)束符,導(dǎo)致后面的數(shù)據(jù)直接忽略,造成截?cái)啵蟼鲿r(shí)如果上傳文件的路徑可控,可以通過(guò)00截?cái)?,進(jìn)行木馬上傳。

繞過(guò)方法(path%00截?cái)啵?/p>

  • 將test改為test.php%00aaa,1.php改為1.jpg這樣可以通過(guò)驗(yàn)證函數(shù)。

1655798977_62b17cc119872ff1e3002.png!small?1655798977350

  • test.php%00aaa中的%00進(jìn)行URL編碼,選中%00選擇【Convertselection】命令,選擇【URL】命令,選擇【URL-decode】命令進(jìn)行編碼。

1655799206_62b17da6844749c1c80eb.png!small?1655799206818

3.文件類型驗(yàn)證

3.1 文件頭檢測(cè):文件頭內(nèi)容信息(如gif89a)

不同的文件都有特定的文件頭格式,開發(fā)者通過(guò)檢查上傳文件的文件頭檢測(cè)文件類型,但是這種檢測(cè)方式同樣可以被繞過(guò),只要在木馬文件的頭部添加對(duì)應(yīng)的文件頭,這樣既可以繞過(guò)檢測(cè)又不影響木馬文件的正常運(yùn)行。

常見的文件頭如下:

JPEG  0xFFD8FF

PNG0   x89504E470D0A1A0A

GIF    47 49 4638 39 61(GIF89a)

繞過(guò)方法:

  • 更改頭部信息達(dá)到欺騙,如在木馬的頭文件中添加圖片文件的文件頭即可繞過(guò)檢測(cè)。

GIF89a

<?php echo`$_REQUEST[cmd]`;

?>

  • 制作圖片馬

直接在圖片中插入一句話木馬,進(jìn)行上傳?!梦募?。

使用cmd命令將一張正常圖片 1.jpg 與一個(gè)包含一句話木馬的 a.txt文件,合成一個(gè)新的test.php木馬文件。

cmd命令: copy 1.jpg/b+a.txt test.php。

3.2  Content-Type檢測(cè)

Content-Type用于定義網(wǎng)絡(luò)文件的類型和網(wǎng)頁(yè)的編碼,用來(lái)告訴文件接收方將以什么形式、什么編碼讀取這個(gè)文件。不同的文件都會(huì)對(duì)應(yīng)的不同的Content-Type,比如jpg文件的Content-Type為image/jpeg,php文件的Content-Type為application/octet-stream。Content-Type是在數(shù)據(jù)包的請(qǐng)求包頭中,開發(fā)者會(huì)通Content-Type的類型判斷文件是否允許上傳。

繞過(guò):Content-Type的類型可以通過(guò)抓包篡改,這樣就可以通過(guò)抓包修改數(shù)據(jù)包的Content-Type來(lái)繞過(guò)Content-Type判斷。

MIME:可以通過(guò)判斷類型猜測(cè)文件后綴名,利用抓包工具將Content-Type進(jìn)行篡改,如改為image/pjpeg、image/jpeg、image/gif、image/png四個(gè)中的一個(gè)即可繞過(guò)過(guò)濾。

4. 內(nèi)容及其他

4.1 邏輯安全:條件競(jìng)爭(zhēng)(相當(dāng)于系統(tǒng)占用)

定義:競(jìng)爭(zhēng)條件是指多個(gè)線程在沒有進(jìn)行鎖操作或者同步操作同時(shí)訪問(wèn)同一個(gè)共享代碼、變量、文件等,運(yùn)行的結(jié)果依賴于不同線程訪問(wèn)數(shù)據(jù)的順序。先將文件上傳到服務(wù)器,服務(wù)器按照規(guī)則對(duì)圖片選擇保存與刪除,漏洞點(diǎn)在于文件在保存到服務(wù)器之前并沒有進(jìn)行合法性的檢查,雖然保存后進(jìn)行了文件的檢查,但是通過(guò)競(jìng)爭(zhēng)條件漏洞,通過(guò)上傳有寫文件功能的木馬,在刪除木馬之前訪問(wèn)已經(jīng)上傳的木馬,就可以寫入新的木馬。

繞過(guò):將文件上傳到服務(wù)器后,我們就不斷進(jìn)行文件路徑訪問(wèn),由于條件競(jìng)爭(zhēng),就會(huì)達(dá)到上傳Webshell的目的,漏洞利用就是發(fā)送請(qǐng)求通過(guò)不斷上傳內(nèi)容,這樣的訪問(wèn)會(huì)生成新的木馬文件,然后再發(fā)送另一個(gè)請(qǐng)求不斷訪問(wèn)此文件,如果競(jìng)爭(zhēng)條件漏洞利用成功就會(huì)生成新的木馬。

4.2 目錄命名 

繞過(guò):通過(guò)添加/.后綴讓服務(wù)器識(shí)別文件為文件夾形式,達(dá)到上傳的目的,如 -x.php/.

5.其他漏洞

腳本函數(shù)漏洞-cve

CVE-2017-12615 

CVE-2015-5254

CVE-2019-2618

......

這些漏洞網(wǎng)上都有利用教程,感興趣的師傅可以去查閱一下資料。

6.中間件解析漏洞

6.1 IIS 6.0+解析漏洞

解析漏洞快速判斷,/.php看是否有亂碼,有則存在,無(wú)則不存在。

6.1.1 以文件夾執(zhí)行

正常文件名:image/aa.jpg。

繞過(guò):image.asp/aa.jpg  aa.jpg就會(huì)被當(dāng)作asp解析。

6.1.2 以文件執(zhí)行

正常文件名:image.jpg。

繞過(guò):image.asp;.jpg或xxx.asp;xxx.jpg 此文件會(huì)被當(dāng)作asp執(zhí)行。

asp可以換做php 如果換了php,那么就可以當(dāng)作php執(zhí)行。

7.WAF繞過(guò)

要想繞過(guò)WAF,我們需要了解哪些參數(shù)可以修改,如:

  • Content-Disposition:一般可修改。
  • name:表單參數(shù)值,不能修改。
  • filename:文件名,可以修改。
  • Content-Type(文件自帶類型):文件MIME,視情況更改。
  • waf繞過(guò)的核心就是在可以修改的參數(shù)名后不斷修改測(cè)試,嘗試?yán)@過(guò)。

常見繞過(guò)方法:

7.1 數(shù)據(jù)溢出(垃圾數(shù)據(jù)填充)

利用WAF檢測(cè)上限,添加大量垃圾數(shù)據(jù),讓其匹配不到,類似于溢出漏洞,一般可在上傳參數(shù)后面添加干擾數(shù)據(jù),垃圾數(shù)據(jù)和參數(shù)之間要記得添加;,否則數(shù)據(jù)包會(huì)報(bào)錯(cuò)。

7.2 符號(hào)變異('";)

利用程序開發(fā)漏洞,對(duì)數(shù)據(jù)包中上傳參數(shù)中的符號(hào)進(jìn)行替換,添加、刪除,達(dá)到上傳目的。如

如x.jpg;.php 分號(hào)代表一個(gè)數(shù)據(jù)的結(jié)束。

7.3數(shù)據(jù)截?cái)啵?00;換行)

文件后綴名后加個(gè)%00(空格)截?cái)?x.php%00.jpg 。

換行(類似于程序中\(zhòng)n)和數(shù)據(jù)分塊傳輸差不多,如:

  • x
  • p
  • h
  • p

數(shù)據(jù)包其實(shí)識(shí)別的是x.\np\nh\np。

7.4 重復(fù)數(shù)據(jù)

相當(dāng)于函數(shù)中的遞歸 循環(huán),將參數(shù)在數(shù)據(jù)包中寫多次原理跟垃圾數(shù)據(jù)也十分類似。

8.防御

  • 部署寶塔,waf等安全產(chǎn)品。
  • 對(duì)上傳的內(nèi)容進(jìn)行嚴(yán)格多次校驗(yàn)。
  • 對(duì)文件內(nèi)容進(jìn)行完整性檢測(cè)。
責(zé)任編輯:武曉燕 來(lái)源: FreeBuf.COM
相關(guān)推薦

2009-11-16 09:26:35

PHP上傳

2009-07-02 13:31:13

JSP組件

2009-07-07 13:45:04

jspsmart

2009-06-04 09:41:50

struts2上傳文件

2010-01-22 15:56:03

VB.NET獲取當(dāng)前U

2009-06-08 16:44:00

Struts2文件上傳

2018-06-22 10:18:52

2009-06-06 19:17:37

java遞歸刪除

2009-11-16 14:38:36

PHP上傳文件代碼

2017-08-07 17:54:08

Windows 7WindowsTrustedInst

2024-11-12 09:54:23

2017-12-20 15:11:48

iOS緩存文件斷點(diǎn)機(jī)制

2009-07-20 16:09:39

2009-10-30 14:03:59

ASP.NET上傳文件

2016-12-19 11:17:48

架構(gòu) MVC

2009-10-27 18:01:46

2018-04-20 16:15:42

Koa2上傳下載

2009-11-16 13:57:21

PHP上傳文件

2009-07-03 17:15:31

jsp上傳文件

2009-11-16 14:15:51

PHP上傳多個(gè)文件
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)