第一章:前言及概論
1:在實際的滲透中,更多地靠經驗思路,工具反而是其次。由於目前的軟件開發水平還達不到智能化,因此工具只是讓咱們更方便高效。工具只能按程序員的思惟流程來進行,因此不能一味追求神器,要依靠本身的大腦。
2:原理性的知識爲內功,具體的實操,技術點爲招式。只有招式而沒有內功是沒法變成高手的,因此在學習過程當中要刨根問底,從技術層次挖掘到理論層次,站在更高的角度看問題。
3:滲透的媒介是端口,攻擊者的計算機與服務器依靠端口正常通訊,客戶端與服務器也是同樣。端口掃描,密碼爆破(FTP,數據庫)可直接獲取目標權限,但由於技術進步,系統的溢出漏洞愈來愈難挖掘,主要陣地轉移到了Web上。Question1:攻擊者經過電腦攻擊另外一臺電腦是否是也同樣?服務器的定義是什麼?和通常的計算機有什麼區別?
4:Web強大的四個要點:數據庫,編程語言,Web容器和優秀的Web程序猿。各自的做用:編程語言將程序員的個性化程序變爲真實的存在,並與數據庫鏈接。Web容器做爲終端解析用戶請求與腳本語言。
5:Web安全仍然熱門的緣由:首先開發人員沒有安全意識,其次代碼即便功能完善,也會出現漏洞。項目上線後,服務器環境的改變會讓沒有問題的代碼產生問題。
6:直接對目標下手的三種手段:C段滲透(滲透同一網段內的一臺主機進行ARP等手段滲透),社會工程學(高端攻擊者必備技能)與Services(傳統攻擊方式針對服務進行溢出,如緩衝區溢出)
7:攻擊者只須要找到程序的一個突破口,而滲透測試人員須要把系統的全部漏洞找齊。編程技術強能更好的理解漏洞產生的緣由,因此信息安全工程師須要編程功底,編程功底是安全程師的分水嶺。
8:編程語言的合適搭配:HTML,JavaScript,SQL+任意Web語言(先學好C語言,再學PHP)C/C++,偏底層,C/S架構的軟件。緩衝區溢出,底層協議,NC,LCX,DNSSniffer,Hydra,溢出程序,遠程控制。Java,跨平臺,C/S架構B/S架構都可。C#,兩種架構都可,NET framework支持,沒法跨平臺。PHP,跨平臺腳本語言,無需編譯,僅限Web,必備。Python,跨平臺腳本語言,無需編譯,安全研究者多用。HTML,前端語言,必備。JavaScript,前端語言,理解XSS跨站腳本攻擊。php
第二章:HTTP請求流程(重要+關鍵)
1:概念:HyperText Transfer Protocol,超文本傳輸協議,規定瀏覽器與萬維網服務器間的通訊規則,交換信息的基礎,容許將HTML文檔從Web服務器傳到Web瀏覽器。
2:HTTP請求不必定只能由瀏覽器發出,如curl+URL,可返回此頁面的HTML數據,加上-I可查看訪問URL後服務器返回的HTTP響應頭,故瀏覽器將界面直觀化。
3:HTTP爲無狀態協議,瀏覽器與服務器之間不須要創建持久的鏈接,服務器端不保留鏈接的有關信息。於是http請求只能由客戶端發起,而服務器不能主動向客戶端發送數據。
4:格式:請求行(請求方法)請求頭(消息報頭)請求正文。請求行的post說明該請求爲post方法的請求,/login.php說明請求的是該域名根目錄下的login.php,HTTP1.0或HTTP1.1表示版本。
5:HTTP響應中,響應行包含HTTP版本,狀態碼及消息,響應頭,響應正文(服務器向客戶端發送的HTML數據)
6:幾種請求方法:GET請求頁面指定的信息,若請求資源爲動態腳本,則返回文本爲web解析過的HTML源代碼而非源文件。使用GET請求index.php,服務器端腳本語言將選擇性接收內定好的參數,並查詢數據,向服務器端發送解析過的HTML數據,不會由於干擾而改變;HEAD,除了服務器不能在響應裏返回消息主體,其餘與GET 相同,經常使用來測試超文本連接有效性可訪問性及最近的改變。攻擊者編寫掃描工具用此方法速度最快(只需測試資源是否存在,不用返回消息主題);POST與GET類似,但post有請求內容,多用於向服務器發送大量數據,GET對內容有長度限制,且會直接顯示在瀏覽器端,不安全。Question2:HTTP協議改怎麼寫?PUT用於請求服務器把請求中的實體存儲在請求資源下,替換舊版或建立,數據位爲請求正文。爲服務器建立文件,屬於危險的方法。DELETE請求服務器刪除制定資源,屬於危險方法。另外還有TRACE,CONNECT,OPTIONS,WebDAV等等
7:狀態碼:100至101表示請求已被接收,繼續處理。200至206表示成功處理請求。300至305表示被訪問的資源已被移動,並從新發起請求。400至415表示客戶端錯誤,服務器沒法處理。500到505表示服務器內部錯誤。重要狀態碼:200請求成功,302重定向,404資源不存在(原來如此,網頁找不到時的404Not found。),400客戶端語法錯誤,401請求未經受權。403收到請求拒絕服務,500服務器內部錯誤,503目前沒法處理請求。
HTTP消息(HTTP頭),包括請求頭,響應頭,普通頭與實體頭。
請求頭容許客戶端向服務器傳遞請求的附加信息和客戶端自身信息。Host用於指定被請求的Internet主機與端口號,User-Agent容許客戶端將其操做系統,瀏覽器及其餘系統屬性告訴服務器。Referer包含當前訪問的URL的上一個URL。Cookie表示請求者的身份,是一段文本。(清理瀏覽器數據時的我的信息就是這個)。Range可請求實體的部份內容,多線程下載必用。如bytes=0~499,bytes=500~999,最後500字節bytes=500,500字節之後bytes=500-。XTF頭,即x-forward-for,表明請求的一個或多個IP,以逗號隔開。Accept,指定客戶端接收一類MIME類型的信息,如Accept:text/html。Accept-charset域用於指定客戶端接收的字符集。
響應頭,服務器根據請求向客戶端發送的http頭。Server,表示服務器所使用的web服務器名稱,查看此頭可探測名稱,故建議於服務器端修改此頭信息。Set-Cookie,向客戶端設置Cookie,可查看服務器向客戶端發送的Cookie信息。Last-modified,服務器經過此頭告訴瀏覽器,資源的最後修改時間。Location,服務器經過此頭告訴瀏覽器目標界面,配合302狀態碼使用。Rfresh定時刷新瀏覽器。
普通頭,少數報頭域用於全部的請求和響應消息,並不用於被傳輸的實體,用於被傳輸的消息。
實體頭定義了關於實體正文和請求所標識正文的元信息(內容屬性,如實體信息類型。長度,壓縮方法等),content-type用於向接收方指示實體的介質類型,content-encoding,採用相應的解碼機制可得到已經被應用到實體正文的附加內容的編碼。content-length指明實體正文的長度,字節方式存儲的十進制數字表示。Last-modified指示資源的最後修改時間。
HTTPS是HTTP協議的升級版,在HTTP(鏈接相對簡單,無狀態)下加入SSL層加密後身份認證後,網絡傳送數據的隱祕性和完整性將獲得保護。HTTP與HTTPS使用徹底不一樣的鏈接方式,一個採用80端口,一個採用443端口。後者須要CA證書,前者不須要。
黑帽SEO對大型網站入侵掛上「友情連接」,或者劫持搜索引擎利用Referer和User-agent
幾種工具:如:Burp Suite Proxy,Web應用安全測試工具的集成平臺,全部工具共享一個可處理並顯示HTTP消息,持久性,認證,代理,日誌,警報的可擴展框架。html
第三章:信息探測
滲透測試前應該蒐集目標網站的服務器配置信息及網站信息
Google Hacker,經常使用語法,site即指定域名,intext即正文中存在關鍵字的網頁,intitle即標題中存在關鍵字的網頁,info即一些基本信息,info即一些基本信息,inurl即URL中存在關鍵字的網頁,filetype即搜索指定文件類型。
網絡爬蟲,按照必定的規則,自動抓取萬維網信息的程序或腳本,分爲通用爬蟲和聚焦爬蟲,增量性網絡爬蟲和深層網絡爬蟲
Namp,一個開源的網絡鏈接端掃描軟件,肯定哪些服務運行在哪些鏈接端,並推斷計算機運行的操做系統,評估網絡系統安全。Namp Acript是Namp最好的功能之一,可快速探測服務器,安裝目錄下的Script文件夾下「.nse」結尾的文本文件即其自帶的腳本引擎,亦可本身編寫實現漏洞掃描,漏洞利用和目錄掃描等功能前端
Dirbuster:DirBuster是Owasp(開放Web軟體安全項目- Open Web Application Security Project )開發的一款專門用於探測Web服務器的目錄和隱藏文件
指紋識別:與實際中的指紋識別類似,識別網站的CMS與Web容器,最重要的就是特徵庫。
信息探測的目的是爲下一步的滲透測試做準備,不一樣的工具各具特點,安全工程師應該以準確爲主,速度爲輔。
第四章:漏洞掃描程序員