偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

淺談權限獲取方法之文件上傳

人工智能 機器學習
文件上傳漏洞產(chǎn)生的主要原因是:應用中存在上傳功能,但是上傳的文件沒有經(jīng)過嚴格的合法性檢驗或者檢驗函數(shù)存在缺陷,導致可以上傳木馬文件到服務器。文件上傳漏洞危害極大因為可以直接上傳惡意代碼到服務器上,可能會造成服務器的網(wǎng)頁篡改、網(wǎng)站被掛馬、服務器被遠程控制、被安裝后門等嚴重的后果。

概述

文件上傳漏洞是發(fā)生在有上傳功能的應用中,如果應用程序對用戶的上傳文件沒有控制或者存在缺陷,攻擊者可以利用應用上傳功能存在的缺陷,上傳木馬、病毒等有危害的文件到服務器上面,控制服務器。

漏洞成因及危害

文件上傳漏洞產(chǎn)生的主要原因是:應用中存在上傳功能,但是上傳的文件沒有經(jīng)過嚴格的合法性檢驗或者檢驗函數(shù)存在缺陷,導致可以上傳木馬文件到服務器。文件上傳漏洞危害極大因為可以直接上傳惡意代碼到服務器上,可能會造成服務器的網(wǎng)頁篡改、網(wǎng)站被掛馬、服務器被遠程控制、被安裝后門等嚴重的后果。

下面我們就文件上傳的幾種驗證及繞過方法:

1.本地驗證(前端驗證)

前端JS過濾繞過上傳漏洞是因為應用程序是在前端通過JS代碼進行的驗證,而不是在程序后端進行的驗證,這樣就可以通過修改前端JS代碼的方式進行繞過上傳過濾,上傳木馬。

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

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

2.后端驗證及繞過

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

2.1 后綴名

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

文件名過濾繞過漏洞主要是因為通過黑名單的方式判斷了文件上傳的類型,而且并沒有完整的過濾,導致攻擊者通過上傳黑名單類型之外的文件。

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

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

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

.htaccess文件上傳是利用.htaccess文件可以對Web服務器配置的功能,實現(xiàn)對jpg、png等后綴的文件當做PHP文件解析的過程。

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

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

2.1.3 空格繞過

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

2.1.4 .繞過

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

2.1.5 ::$data繞過

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

2.1.6 循環(huán)過濾

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

如:a.pphphp 會變成->a.

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

%00截斷、0x00截斷(建立在地址上的原理,截斷文件后面數(shù)據(jù) )00截斷繞過只能繞過前端驗證。

截斷的產(chǎn)生主要原因就是存在%00這個字符,PHP<5.3.4時,會把它當做結束符,導致后面的數(shù)據(jù)直接忽略,造成截斷,上傳時如果上傳文件的路徑可控,可以通過00截斷,進行木馬上傳。

繞過方法(path%00截斷):

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

1655798977_62b17cc119872ff1e3002.png!small?1655798977350

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

1655799206_62b17da6844749c1c80eb.png!small?1655799206818

3.文件類型驗證

3.1 文件頭檢測:文件頭內容信息(如gif89a)

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

常見的文件頭如下:

JPEG  0xFFD8FF

PNG0   x89504E470D0A1A0A

GIF    47 49 4638 39 61(GIF89a)

繞過方法:

  • 更改頭部信息達到欺騙,如在木馬的頭文件中添加圖片文件的文件頭即可繞過檢測。

GIF89a

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

?>

  • 制作圖片馬

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

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

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

3.2  Content-Type檢測

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

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

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

4. 內容及其他

4.1 邏輯安全:條件競爭(相當于系統(tǒng)占用)

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

繞過:將文件上傳到服務器后,我們就不斷進行文件路徑訪問,由于條件競爭,就會達到上傳Webshell的目的,漏洞利用就是發(fā)送請求通過不斷上傳內容,這樣的訪問會生成新的木馬文件,然后再發(fā)送另一個請求不斷訪問此文件,如果競爭條件漏洞利用成功就會生成新的木馬。

4.2 目錄命名 

繞過:通過添加/.后綴讓服務器識別文件為文件夾形式,達到上傳的目的,如 -x.php/.

5.其他漏洞

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

CVE-2017-12615 

CVE-2015-5254

CVE-2019-2618

......

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

6.中間件解析漏洞

6.1 IIS 6.0+解析漏洞

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

6.1.1 以文件夾執(zhí)行

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

繞過:image.asp/aa.jpg  aa.jpg就會被當作asp解析。

6.1.2 以文件執(zhí)行

正常文件名:image.jpg。

繞過:image.asp;.jpg或xxx.asp;xxx.jpg 此文件會被當作asp執(zhí)行。

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

7.WAF繞過

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

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

常見繞過方法:

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

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

7.2 符號變異('";)

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

如x.jpg;.php 分號代表一個數(shù)據(jù)的結束。

7.3數(shù)據(jù)截斷(%00;換行)

文件后綴名后加個%00(空格)截斷,x.php%00.jpg 。

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

  • x
  • p
  • h
  • p

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

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

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

8.防御

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

2009-11-16 09:26:35

PHP上傳

2009-07-02 13:31:13

JSP組件

2009-06-04 09:41:50

struts2上傳文件

2009-07-07 13:45:04

jspsmart

2010-01-22 15:56:03

VB.NET獲取當前U

2009-06-08 16:44:00

Struts2文件上傳

2009-06-06 19:17:37

java遞歸刪除

2018-06-22 10:18:52

2009-11-16 14:38:36

PHP上傳文件代碼

2016-12-19 11:17:48

架構 MVC

2017-08-07 17:54:08

Windows 7WindowsTrustedInst

2017-12-20 15:11:48

iOS緩存文件斷點機制

2009-07-20 16:09:39

2009-10-27 18:01:46

2024-11-12 09:54:23

2009-10-30 14:03:59

ASP.NET上傳文件

2010-04-13 10:49:32

2009-06-17 15:06:39

Java 學習方法

2018-04-20 16:15:42

Koa2上傳下載

2010-04-13 10:43:05

MPLS
點贊
收藏

51CTO技術棧公眾號