⑴ 我上傳文件,傳到一半的時候。不小心又重復了一次文件上傳了,會不會提示重復上傳,叫你選擇跳過或者復制
一般不會,這個好像他會直接一樣的扔那。
⑵ 如何繞過web伺服器直接上傳文件到ftp伺服器
需要學會滲透和劫持數據違法行為不便於透露
如果需要上傳ftp伺服器!需要知道伺服器ip地址、用戶名、密碼
可以使用軟體或者直接在我的電腦地址欄輸入:ftp://」相應的ip地址「即可訪問
⑶ 這樣的文件上傳限制還能繞過去嗎
偶對文件上傳的格式做了如下限制,討論一下還能繞過去嗎?(回答)
本人絞盡腦子想不出有什麼辦法可一饒過的!!
不過人家知道你的限制的話,把後綴名刪掉或改成你允許的呢??
不也樣可以嗎?/?
⑷ 文件上傳後台對上傳文件進行了重命名成jpg文件怎麼繞過
後台取得控制許可權,不必從上傳照片開始,所有系統都是有。掃描埠檢測
⑸ 為什麼360殺毒有上傳此文件「跳過」的按鈕
避免浪費系統資源
避免隱私被暴露
避免佔用上傳網速
⑹ 如何通過web頁面繞過web伺服器直接上傳文件到FTP伺服器
可以用ASPX頁面表單請求到你WEB伺服器上的接收介面,選擇文件後點擊上傳,直接提交到你FTP伺服器上。
FTP伺服器上接收時候做個來源的判斷,如果是非法調用的話直接阻止。
上傳文件完成後,回調你網站Web伺服器,返回上傳文件的路徑和文件名。
⑺ 目錄路徑檢測解析繞過上傳漏洞 什麼意思
上傳正常圖片和WEBShell
准備一張普通的圖片,使用*.jpg在電腦上進行搜索,可以看到很多圖片,復制一張圖片放到桌面上,改名為tupian.jpg。
打開上傳地址,選取上傳圖片。
小i提示:
上傳地址就是可以上傳文件的地方
本次實驗用的測試網址http://www.test.com作為目標網站
上傳成功後,觀察返回的頁面信息
小i提示:
觀察紅字部分(上傳是否成功,成功為 Upload Successful ,失敗這一行會顯示失敗信息)
觀察藍字部分(上傳成功後文件的路徑),它的名字是時間戳(通常是一個數字序列,唯一地標識某一刻的時間)加自己的尾綴
准備的是ASP環境,需要使用ASP的一句話,接著來製作一句話,新建一個空文本文檔,將ASP的一句話寫入到文本中,修改文件名為yijuhua.ASP並保存到桌面。
小i提示:
一句話是一種常見的網站後門,短小精悍,而且功能強大,隱蔽性非常好,在滲透測試過程中始終扮演著強大的作用。
不同的環境需要選取與環境匹配的一句話,一句話中<%eval request[『這里是密碼』]%>,本例中我們以
1 為密碼。
上傳ASP文件,發現提示錯誤信息:White List Match Failed--asp ,可能伺服器端禁止了尾綴asp的文件上傳。
2
利用IIS6解析缺陷繞過上傳檢測
首先打開BurpLoader,選擇 Proxy->Options ,設置BurpLoader代理地址,默認為127.0.0.1、埠:8080。
接著修改Firefox的代理設置,修改代理地址以及埠(設置與在BurpLoader中設置的代理地址相同:127.0.0.1、埠:8080)。
小i提示:
不同瀏覽器設置代理的方法不相同, 但是設置位置基本類似,此處我們以火狐瀏覽器為例,首先點擊右上角的工具->選項->網路->設置->手動配置代理,填入BurpLoader中設置的代理地址。
設置好瀏覽器代理後,我們再打開BurpLoader抓包,暫時截獲瀏覽器給伺服器發送的數據包,Proxy->Intercept 點擊
intercept off 改為intercept on,截獲的數據包將在關閉抓包的時候發送給服務端。
查看數據包:其中Content-Disposition:form-data;name=」path」下面的一行為服務保存文件的相對路徑,我們把原本的
uploading/ 改為 uploadimg/1.asp;。
小i知識點:
本例用了IIS6.0目錄路徑檢測解析,文件的名字為「*.asp/xxx.jpg」,也同樣會被 IIS 當作 ASP文件來解析並執行
首先我們請求 /aaa.asp/xxxx.jpg
從頭部查找查找 "."號,獲得 .asp/xxxx.jpg
查找"/",如果有則內存截斷,所以/aaa.asp/xxxx.jpg會當做/aaa.asp進行解析
修改完成後,關閉抓包(點擊intercept on ->intercept off),上傳數據,查看瀏覽器發現上傳成功,復制File Name後面的信息(例如:1.asp;14127900008.asp );在前面添加上uploadimg/粘貼復制到網站地址後面,從而構造訪問地址(例如:http://www.test.com/uploadimg/1.asp;14127900008.asp
),並復制訪問地址。
3
獲取WEBShell許可權
打開中國菜刀軟體並填入復制的訪問地址,填入你設定的密碼,之前我們在「一句話」中設置的密碼是1,選擇腳本類型為ASP,單擊添加按鈕,就會看到菜刀上出現一行信息,最後我們雙擊這條信息後,就可以看到目標網站的目錄,這樣我們就成功獲取到目標網站的WEBShell許可權。
小i 知識點:
中國菜刀,是一款專業的網站管理軟體,用途廣泛,使用方便,小巧實用。只要支持動態腳本的網站,都可以用中國菜刀與一句話協作來進行管理
這里可以看見我們剛剛上傳的文件,其中有一個空文件夾1.asp;以及其它我們上傳的文件。
4
防禦方案
1.客戶端檢測,使用JS對上傳圖片檢測,包括文件大小、文件擴展名、文件類型等
2.服務端檢測,對文件大小、文件路徑、文件擴展名、文件類型、文件內容檢測,對文件重命名
3.其他限制,伺服器端上傳目錄設置不可執行許可權
⑻ 文件上傳漏洞攻擊方法有什麼
文件上傳漏洞是什麼?怎樣防禦文件上傳漏洞攻擊?文件上傳漏洞是web安全中經常利用到的一種漏洞形式。這種類型的攻擊從大的類型上來說,是攻擊 數據與代碼分離原則 的一種攻擊。
一些web應用程序中允許上傳圖片,文本或者其他資源到指定的位置,文件上傳漏洞就是利用這些可以上傳的地方將惡意代碼植入到伺服器中,再通過url去訪問以執行代碼
造成文件上傳漏洞的原因是
對於上傳文件的後綴名(擴展名)沒有做較為嚴格的限制
對於上傳文件的MIMETYPE 沒有做檢查
許可權上沒有對於上傳的文件的文件許可權,(尤其是對於shebang類型的文件)
對於web server對於上傳文件或者指定目錄的行為沒有做限制
下面就閑話一些文件上傳漏洞的防禦方式和攻擊者的繞過方式
1.前端限制
function check(){
var filename=document.getElementById("file");
var str=filename.value.split(".");
var ext=str[str.length-1];
if(ext=='jpg'||ext=='png'||ext=='jpeg'||ext=='gif'){
return true;
}else{
alert("這不是圖片!")
return false;
}
return false;
}
在表單中使用onsumbit=check()調用js函數來檢查上傳文件的擴展名。這種限制實際上沒有任何用處,任何攻擊者都可以輕而易舉的破解。只能用於對於用戶完全信任的情況下,很難稱之為一種安全措施只能稱之是一種防止用戶誤操作上傳的措施,
反制:
隨便的編輯一下頁面/用burpsuite/寫個小腳本就可以突破之,無須多言
2.檢查擴展名
顧名思義,就是在文件被上傳到服務端的時候,對於文件名的擴展名進行檢查,如果不合法,則拒絕這次上傳
在這里,還有一點是值得一提的,在檢查擴展名是否合法的時候,有兩種策略
黑名單策略,文件擴展名在黑名單中的為不合法,示例代碼
$postfix = end(explode('.','$_POST['filename']);
if($postfix=='php'||$postfix=='asp'||$postfix=='sh'){
echo "invalid file type";
return;
}
白名單策略,文件擴展名不在白名單中的均為不合法
$postfix = end(explode('.','$_POST['filename']);
if($postfix=='jpg'||$postfix=='png'||$postfix=='gif'){
//save the file and do something next
} else {
echo "invalid file type";
return;
}
白名單策略是更加安全的,通過限制上傳類型為只有我們接受的類型,可以較好的保證安全,因為黑名單我們可以使用各種方法來進行注入和突破
反制
在一些 webserver 中,存在解析漏洞
1.老版本的IIS中的目錄解析漏洞,如果網站目錄中有一個 /.asp/目錄,那麼此目錄下面的一切內容都會被當作asp腳本來解析
2.老闆本的IIS中的分號漏洞:IIS在解析文件名的時候可能將分號後面的內容丟棄,那麼我們可以在上傳的時候給後面加入分號內容來避免黑名單過濾,如 a.asp;jpg
3.舊版Windows Server中存在空格和dot漏洞類似於 a.php. 和 a.php[空格] 這樣的文件名存儲後會被windows去掉點和空格,從而使得加上這兩個東西可以突破過濾,成功上傳,並且被當作php代碼來執行
4.nginx空位元組漏洞 xxx.jpg%00.php 這樣的文件名會被解析為php代碼運行
5.apache的解析漏洞,上傳如a.php.rar a.php.gif 類型的文件名,可以避免對於php文件的過濾機制,但是由於apache在解析文件名的時候是從右向左讀,如果遇到不能識別的擴展名則跳過,rar等擴展名是apache不能識別的,因此就會直接將類型識別為php,從而達到了注入php代碼的目的
3.檢查HTTP Header中的Content-Type
HTTP協議規定了上傳資源的時候在Header中加上一項文件的MIMETYPE,來識別文件類型,這個動作是由瀏覽器完成的,服務端可以檢查此類型不過這仍然是不安全的,因為HTTP header可以被發出者或者中間人任意的修改,不過加上一層防護也是可以有一定效果的
反制
使用各種各樣的工具(如burpsuite)強行篡改Header就可以,太容易將header中的
Content-Type: application/php
或者其他類型
改為
Content-Type: image/jpg
Content-Type: image/png
Content-Type: text/plain
等這些web程序允許的淚洗改附上常用的MIMETYPE表
text/plain(純文本)
text/html(HTML文檔)
text/javascript(js代碼)
application/xhtml+xml(XHTML文檔)
image/gif(GIF圖像)
image/jpeg(JPEG圖像)
image/png(PNG圖像)
video/mpeg(MPEG動畫)
application/octet-stream(二進制數據)
application/pdf(PDF文檔)
application/(編程語言) 該種語言的代碼
application/msword(Microsoft Word文件)
message/rfc822(RFC 822形式)
multipart/alternative(HTML郵件的HTML形式和純文本形式,相同內容使用不同形式表示)
application/x-www-form-urlencoded(POST方法提交的表單)
multipart/form-data(POST提交時伴隨文件上傳的表單)
4.分析文件頭內容來檢查文件類型
與方法2不同,還有一種檢查類型的方式是使用對於文件內容的驗證機制,這種方法利用的是每一個特定類型的文件都會有不太一樣的開頭或者標志位。可以通過比如php的exif_imagetype()函數,一個通過這種方法來過濾的示例代碼如下:
if (! exif_imagetype($_FILES['uploadedfile']['tmp_name'])) {
echo "File is not an image";
return;
}
也可以自己編寫函數來進行識別,圖片文件通常有稱作幻數的頭位元組,我們來看一下幾種圖片文件的幻數:
(注意!下面是二進制而不是文本格式的數據)
JPG
FF D8 FF E0 00 10 4A 46 49 46
GIF
47 49 46 38 39 61
(相當於文本的GIF89a)
PNG
89 50 4E 47
通過檢查頭幾位位元組,可以分辨是否是圖片文件
如果是其他類型的二進制文件,也有響應的頭位元組,如下表
反制
給上傳腳本加上相應的幻數頭位元組就可以,php引擎會將
(一般不限制圖片文件格式的時候使用GIF的頭比較方便,因為全都是文本可列印字元。)
GIF89a
do_something();
?>
如果是其他類型的二進制文件,也有響應的頭位元組,如下表
格式
文件頭
TIFF (tif)
49492A00
Windows Bitmap (bmp)
424D
CAD (dwg)
41433130
Adobe Photoshop (psd)
38425053
Rich Text Format (rtf)
7B5C727466
MS Word/Excel (xls.or.doc)
D0CF11E0
MS Access (mdb)
5374616E64617264204A
ZIP Archive (zip),
504B0304
RAR Archive (rar),
7221
Wave (wav),
57415645
AVI (avi),
41564920
Real Media (rm),
2E524D46
MPEG (mpg),
000001BA
MPEG (mpg),
000001B3
Quicktime (mov),
6D6F6F76
Adobe Acrobat (pdf),
255044462D312E
Windows Media (asf),
3026B2758E66CF11
MIDI (mid),
4D546864
5.限制Web Server對於特定類型文件的行為
導致文件上傳漏洞的根本原因在於服務把用戶上傳的本應是數據的內容當作了代碼,一般來說,用戶上傳的內容都會被存儲到特定的一個文件夾下,比如我們很多人習慣於放在 ./upload/ 下面要防止數據被當作代碼執行,我們可以限制web server對於特定文件夾的行為。
大多數服務端軟體都可以支持用戶對於特定類型文件的行為的自定義,以Apache為例:
在默認情況下,對與 .php文件Apache會當作代碼來執行,對於 html,css,js文件,則會直接由HTTP Response交給客戶端程序對於一些資源文件,比如txt,doc,rar等等,則也會以文件下載的方式傳送的客戶端。我們希望用戶上傳的東西僅僅當作資源和數據而不能當作代碼
因此可以使用伺服器程序的介面來進行限制
以Apache為例,我們可以利用 .htaccess 文件機制來對web server行為進行限制
在這里插一句,如果不是專門的文件下載目錄,請務必關掉文件夾瀏覽的許可權,以防止嗅探和可能的越權,也是使用.htaccess文件,在其中加上一句
Options All -Indexes
即可。
禁止腳本執行有多種方式可以實現,而且分別有不同的效果,我們分別來看一下
1.指定特定擴展名的文件的處理方式,原理是指定Response的Content-Type可以加上如下幾行
AddType text/plain .pl .py .php
這種情況下,以上幾種腳本文件會被當作純文本來顯示出來,你也可以換成其他的Content-Type
2.如果要完全禁止特定擴展名的文件被訪問,用下面的幾行
Options -ExecCGI
AddHandler cgi-script .php .pl .py .jsp .asp .htm .shtml .sh .cgi識別
在這種情況下,以上幾種類型的文件被訪問的時候,會返回403 Forbidden的錯誤
3.也可以強制web伺服器對於特定文件類型的處理,與第一條不同的是, 下面的方法直接強行讓apache將文件識別為你指定的類型,而第一種是讓瀏覽器
ForceType text/plain
看代碼就可以很明白的知道,符合上面正則的全部被認為是純文本,也可以繼續往裡面加入其他類型。
4.只允許訪問特定類型的文件
order deny,allow
deny from all
在一個上傳圖片的文件夾下面,就可以加上這段代碼,使得該文件夾裡面只有圖片擴展名的文件才可以被訪問,其他類型都是拒絕訪問。
這又是一個白名單的處理方案
永遠記得,白名單是最有保障的安全措施
可以通過 move_uploaded_file 函數把自己寫的.htaccess 文件上傳,覆蓋掉伺服器上的文件,來定義文件類型和執行許可權如果做到了這一點,將獲得相當大的許可權。
⑼ 文件上傳漏洞有哪些挖掘思路
文件上傳漏洞作為獲取伺服器許可權最快的方式,雖然相關資料很多,但很多人對上傳校驗方式、如何針對性繞過檢測、哪種上傳和解析的場景會產生危害等還是比較模糊。本文作一些闡述,然後補充一些除了上傳webshell的其他非常規挖掘姿勢,包括XSS、重定向、Dos、CSRF等等。
1、基礎知識:
要深入了解文件上傳,必須了解上傳屬性、常見文件的結構、圖形處理函數等內容。
1) 報文特點:
觀察文件上傳報文的特點:
Header中Content-Type特徵有二:
1.multipart/form-data(form表單的enctype屬性,規定為二進制數據)
2.boundary字元串(作用為分隔符,以區分POST數據)
POST內容特徵有五:
1.Content-Disposition:form-data
2. name:input表單名
3.filename:文件名
4.Content-Type:定義文件的類型和網頁的編碼,決定瀏覽器將以什麼形式、什麼編碼讀取這個文件;
5.boundary:Content-Type的值前面加了兩個---
2) 常見校驗規則
現存常用的上傳校驗規則無非下面幾類:
1.客戶端javascript校驗(後綴名)
2.文件頭content-type欄位校驗(image/gif):附帶參數
4.後綴名黑/白名單校驗:擴展名
5.文件內容頭校驗:GIF89a
6.文件內容校驗:文件信息,二次渲染
7.自定義正則校驗
3)一個澄清
文件上傳和文件解析是兩個過程,即使我們上傳的是php文件,但解析為圖片,訪問php文件會顯示「圖片無法顯示」;或者我們上傳的是jpg文件,但裡面混有shell腳本,若被解析為php文件也會執行;又或者上傳處沒法繞過檢測,只能上傳jpg文件,但在其他功能處存在文件包含等功能,仍可執行成功。
還是回到安全的本質,上傳是「輸入」,那文件解析就是「輸出」,任何漏洞挖掘都需要結合輸入+輸出。
2、繞過技巧:
這里匯總一些實戰中較常用的繞過技巧:
1)後綴名黑名單
以下替換後綴也可以解析為shell:
php:.phtml,.phpt,.php3,.php3p
asp:.aspx,asmx,ashx,web.config
perl:.pl,.pm,.cgi,.lib
jsp:.jspx,.jsw,.jsv,.jspf
Coldfusion:.cfm,.cfml,.cfc,.dbm
另外可以配合操作系統的文件命名規則:
.php.,.php空格,.php:1.jpg,.php::$DATA等
這些後綴的文件會被windows系統自動去掉不符合規則符號後面的內容,從而只留下.php。
2)後綴名白名單
除了結合各種伺服器解析特性,較常用的是Null Byte Injection空位元組注入,插入空位元組值的原因是某些應用程序伺服器腳本語言使用c/c++庫來檢查文件名和內容。在C/C ++中,一行以/00結尾或稱為NullByte。因此,只要解釋器在字元串的末尾看到一個空位元組,就會停止讀取,認為它已經到達字元串的末尾。
如,我們將要上傳的Happy.jpg的名稱更改為Happy.phpA.jpg,然後上傳文件,在Burp中捕獲請求,切換到Hex視圖。在字元串視圖中找到文件名。查看相應的Hex表,並將41('A')替換為00(為空位元組)。結果字元串變為Happy.php(空).jpeg。由於php解釋器在內部使用C語言庫,它將停止讀取Happy.php後的文件名,文件將保存為Happy.php。
另一種繞過白名單的方法是使用雙後綴:shell.php.jpg。
⑽ 上傳文件到FTP的時候,最後一般都會提示XX個文件跳過
有相同的文件了