本週主要學習了《網絡攻防---技術與實踐》第十一、12章的內容,主要學習了 Web應用程序安全攻防 和 Web瀏覽器安全攻防php
Web應用程序體系結構
Web應用體系結構主要分爲客戶端與服務器端,客戶端由瀏覽器構成,服務器端由Web服務器軟件、Web應用程序及後端數據庫構成(這三部分依次按照表示層、業務邏輯層和數據層來組織和構建),兩者之間經過因特網或內聯網上HTTP/HTTPS應用層協議的請求與應答進行通訊。
瀏覽器(Browser) 就是咱們常用的Web客戶端,如 IE、Firefox、Chrome等。
Web服務器(Web Server) 一般被簡單的描述爲HTTP守護程序,用來接收Web客戶端請求,而後在這些請求上執行一些基本的處理以肯定資源的存在,而後將它傳送給Web應用程序來執行,待Web應用程序執行完邏輯並返回相應時,Web服務器再將這個響應返回給Web客戶端,進而在瀏覽器上進行本地執行、渲染和展現。
Web應用程序(Web Application) 現代Web應用的核心是處於服務器端的業務邏輯,即Web應用程序,它是一個動態引擎,與用戶進行實時的交互。Web應用程序由表示層、業務邏輯層和數據層三層結構組成。表示層是接受Web客戶端輸入並顯示結果,一般由HTML的顯示、輸入表單等標籤所構成;業務邏輯層從表示層接收輸入並在其上完成某些工做,並可能須要數據層的協做,而後將結果送回表示層,業務邏輯層是Web應用程序的核心,其實現方式包括早期的CGI腳本程序,或目前流行的ASP、ASP.NET、PHP等動態腳本語言程序;數據層以數據庫或本地文件形式,提供非易失性的信息存儲,這些信息能夠被邏輯層請求或更新。
數據庫(Database) 有時也被稱爲後臺,是Web應用存儲數據的地方。
傳輸協議HTTP/HTTPS 是瀏覽器和由Web服務器、Web應用程序和數據庫所構成的Web站點之間的通訊傳輸協議。HTTP是超文本傳輸協議(HyperText Transfer Protocol),默認使用TCP80端口,是相對簡單、無狀態的、基於ASCII碼的協議。爲了提高HTTP協議的安全性,使用SSL/TLS隧道技術來實現加密傳輸的HTTPS協議。html
Web應用安全威脅
1.針對瀏覽器和終端用戶的Web瀏覽安全威脅;
2.針對傳輸網絡的網絡協議安全威脅;
3.系統層安全威脅;
4.Web服務器軟件安全威脅;
5.Web應用程序安全威脅;
6.Web數據安全威脅。linux
Web應用信息收集
1.手工審查Web應用程序結構與源代碼。包括:靜態與動態生成的頁面、目錄結構、輔助性文件、輸入表單、查詢參數字符串。
2.自動下載與鏡像Web站點頁面。此種方法是相比於第一種方法,採用現成的工具高效地完成以前的信息收集。
3.使用Google Hacking技術審查與探測Web應用程序。
4.Web應用程序安全評估與漏洞探測。經常須要一些Web應用程序分析、安全評估和漏洞探測工具來提供輔助。這些輔助分析工具主要包括:瀏覽器插件、免費工具集和商業Web應用安全評估系統和漏洞掃描器。web
Web服務器平臺中的安全漏洞
1.數據驅動的遠程代碼執行安全漏洞;
2.服務器功能擴展功能模塊漏洞;
3.樣本文件安全漏洞 ;
4.源代碼泄露 ;
5.資源解析攻擊 。sql
攻擊Web應用程序和Web數據內容
Web應用的各個層次上,目前安全最薄弱的環節在於Web應用程序。其安全威脅從攻擊角度來看分爲:針對認證機制的攻擊、受權機制的攻擊、客戶端攻擊、命令執行攻擊、信息暴露、邏輯攻擊。
Web數據內容的攻擊具體包括安全敏感數據泄露、網站內容遭受篡改及不良信息內容上傳。shell
Web應用安全防範
主要針對Web站點網絡傳輸安全、Web站點操做系統及服務安全、Web應用程序安全及Web站點數據安全設防。數據庫
SQL注入與XSS跨站腳本攻擊
1.SQL注入
是利用Web應用程序數據層存在的輸入驗證不完善型安全漏洞實施的一類代碼注入攻擊技術,它的原理是向Web應用程序提供的用戶輸入接口輸入一段精心構造的SQL查詢命令,攻擊和利用不完善的輸入驗證機制,使得注入代碼得以執行完成非預期的攻擊操做行爲。
攻擊步驟:發現SQL注入點、判斷後臺數據庫類型、後臺數據庫中管理員用戶口令字猜解、上傳ASP後門和獲得默認帳戶權限、本地權限提高、利用數據庫擴展存儲過程執行Shell命令。
攻擊工具:Wposion、wieliekoek.pl、SPIKE Proxy、SPI Toolkit。
防範措施:使用類型安全的參數編碼機制、凡是來自外部的用戶輸入必須進行完備檢查、將動態SQL語句替換爲存儲過程、預編譯SQL或ADO命令對象、增強SQL數據庫服務器的配置與鏈接。
2.XSS跨站腳本攻擊
根源一樣是Web應用程序對用戶輸入內容的安全驗證與過濾不夠完善。與代碼注入不一樣,XSS攻擊的最終目標並不是Web服務器,Web服務器上的應用程序在XSS攻擊場景中發揮的角色是「幫兇」,而真正的受害者是訪問這些Web服務器的其餘用戶。利用Web應用程序中的安全漏洞,在服務器端網頁中插入一些惡意的客戶端腳本代碼,在Web服務器上產生出一些惡意攻擊頁面,由此當其餘用戶訪問這些頁面時就會發生攻擊行爲。
XSS攻擊主要分爲持久性漏洞和非持久性漏洞,前者最爲嚴重,後者最爲廣泛。
防範措施:服務器端能夠經過輸入驗證、輸出淨化和消除危險的輸入點來完成防範,客戶端也可經過諸如關閉cookie功能等手段完成防範。後端
Web瀏覽器的安全問題與威脅
因爲Web瀏覽器須要支持許多種協議與規範,因此它具備很強的複雜性,進而意味着擁有更多的錯誤和安全缺陷。其次,因爲瀏覽器支持多種多樣的可擴展性插件,於是其擴展性方面也涌現出許多安全問題。最後,因爲瀏覽器軟件始終工做在聯網狀態,於是其一旦存在安全漏洞,就很容易被網絡上的威脅源所利用與攻擊。
對於Web瀏覽器,按照其不一樣的組件,面臨着針對傳輸網絡的網絡協議安全威脅、針對Web瀏覽端系統平臺的安全威脅、針對Web瀏覽器軟件及插件程序的滲透攻擊威脅、針對互聯網用戶的社會工程學攻擊威脅。
網頁木馬 是Web瀏覽器的滲透攻擊威脅,它是從惡意網頁腳本所孕育和發展出來的。其發展和流行的驅動力是黑客地下經濟鏈,其存在的基礎是Web瀏覽器安全漏洞。從本質上來講,網頁木馬是利用了現代Web瀏覽器軟件中所支持的客戶端腳本執行能力,針對Web瀏覽端軟件安全漏洞實施客戶端滲透攻擊,從而取得在客戶端主機的遠程代碼執行權限來植入惡意程序。
網頁掛馬機制主要有:內嵌HTML標籤、惡意Script腳本、內嵌對象連接、ARP欺騙掛馬。
網頁木馬爲了對抗反病毒軟件的監測還引入了混淆機制。
檢測與分析網頁木馬技術主要有:基於特徵碼匹配的傳統監測方法、基於統計與機器學習的靜態分析方法、基於動態行爲結果斷定的監測分析方法、基於模擬瀏覽器環境的動態分析監測方法。
其防範措施在於提高操做系統與瀏覽器平臺軟件的安全性。
網絡釣魚 是社會工程學在互聯網中普遍實施的一種典型攻擊方式,經過大量發送聲稱來自於銀行或其餘知名機構的欺騙性垃圾郵件,意圖引誘收信人給出我的敏感信息。
其防範措施在於提升警戒性、充分利用瀏覽器軟件及網絡安全廠商所提供的反釣魚網站功能特性、提高我的安全意識來辨別新的釣魚網站、要重視訪問網站的真實性、經過學習和修煉提高本身抵抗社會工程學攻擊的能力。瀏覽器
在dvwa界面右側選擇 SQL(Reflected)
,即非持久性XSS漏洞(反射XSS漏洞),安全等級選擇 low
:安全
在輸入框輸入 zhb
,返回:
查看當前網頁源碼以下:
能夠看到,在輸入字符串後,它並無作任何過濾判斷措施就直接返回了,注意到下面這句:
<pre>Hello zhb</pre>
根據它的結構能夠發現,咱們在輸入框中的輸入的字符串 xxx
只是簡單構形成爲 <pre>Hello xxx</pre>
,於是能夠輸入:
</pre><script>alert('XSS')</script><pre>
返回結果以下:
這就測試了簡單的XSS漏洞,或是輸入如下語句獲取cookie:
</pre><script>alert(document.cookie)</script><pre>
對於持久性XSS漏洞,則是一樣的原理可是會將輸入持久的保存在服務器端,這樣他人在登陸時就會觸發這個漏洞,致使信息泄露。此處作一個簡單測試:
經過觀察網頁源碼:
能夠在 Message
中輸入如下語句:
<script>alert('XSS')</script>
提交以後,在Ubuntu當中打開dvwa,進入XSS持久性漏洞頁面,就會彈出以下窗口:
說明XSS持久性漏洞確實影響到了其餘用戶,若是將攻擊語句改爲獲取用戶名密碼之類的敏感信息,而後打包發送出去,那麼就會形成用戶信息泄露。
這周主要學習了KaliSecurity16-20,主要學習了數據庫評估工具、Web應用代理(重點BurpSuite)和Fuzz工具。
DVWA (Dam Vulnerable Web Application)DVWA是用PHP+Mysql編寫的一套用於常規WEB漏洞教學和檢測的WEB脆弱性測試程序。包含了SQL注入、XSS、盲注等常見的一些安全漏洞。我選擇在Ubuntu系統(IP 192.168.37.150
)當中安裝該平臺,如下爲具體測試過程。
首先下載XAMPP(一個功能強大的建 XAMPP 軟件站集成軟件包)和DVWA,我下載的版本是 xampp-linux-5.6.15-1-installer.run 和 DVWA-master。
而後先執行如下命令,爲文件添加執行權限:
sudo chmod a+x xampp-linux-5.6.15-1-installer.run
而後安裝:
sudo ./xampp-linux-5.6.15-1-installer.run
安裝完畢後,解壓DVWA壓縮包:
unzip DVWA-master.zip
而後移動解壓後的文件夾到 /opt/lampp/htdocs/
下:
sudo cp -rvf DVWA-master /opt/lampp/htdocs/
重命名該文件夾,用來之後訪問時使用:
cd /opt/lampp/htdocs mv DVWA-master ./dvwa
啓動xampp:
sudo /opt/lampp/xampp start
打開瀏覽器訪問 http://127.0.0.1
,便可打開xampp界面:
在界面右上角 phpMyAdmin
當中添加用戶,用戶名爲 admin
,密碼爲 dvwa
:
下面除了 require ssl
外所有勾選,完畢後點擊 go
,便可完成用戶建立:
經過編輯器對DVWA的配置文件進行修改,其中的信息與以前創建的用戶信息對應:
瀏覽器中訪問 http://127.0.0.1/dvwa
,便可打開DVWA界面:
而後在界面最下方建立新的數據庫:
建立完成後,就會自動跳轉到DVWA的登陸界面,這裏使用DVWA的默認帳戶 admin
,默認密碼 password
便可進入。至此,DVWA滲透測試平臺搭建完畢。
打開Kali,在瀏覽器中訪問 192.168.37.150/dvwa
,便可進入DVWA測試平臺:
至此,就可使用kali當中的工具對其數據庫進行檢測了。
首先在dvwa平臺當中將安全設置設定爲 low
:
而後能夠選擇 SQL注入漏洞 進行檢測,在 User ID
當中分別輸入 1
和 1'
,可觀察到輸入 1
時正常返回,輸入 1'
時返回錯誤:
說明這裏可能存在SQL注入漏洞,接着使用 sqlmap
工具對該目標進行探測,使用以下命令:
sqlmap -u "http://192.168.37.150/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit" --cookie='PHPSESSID=54f6ob13o3c5i6997atd23j3d3;security=low' //cookie中的值可經過瀏覽器獲得
最終獲得以下結果:
說明確實存在SQL注入漏洞。再進一步,經過命令:
sqlmap -u "http://192.168.37.150/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit" --cookie='PHPSESSID=54f6ob13o3c5i6997atd23j3d3;security=low' --current-db
可具體查看目標數據庫名稱爲 admin
,經過命令:
sqlmap -u "http://192.168.37.150/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit" --cookie='PHPSESSID=54f6ob13o3c5i6997atd23j3d3;security=low' --current-user
查看到目標數據庫的用戶爲 admin
,經過命令:
sqlmap -u "http://192.168.37.150/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit" --cookie='PHPSESSID=54f6ob13o3c5i6997atd23j3d3;security=low' --dbs
查看到目標存在的咱們能夠有權查看的數據庫列表,經過命令:
sqlmap -u "http://192.168.37.150/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit" --cookie='PHPSESSID=54f6ob13o3c5i6997atd23j3d3;security=low' --users
可查看到數據庫的全部用戶,經過命令:
sqlmap -u "http://192.168.37.150/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit" --cookie='PHPSESSID=54f6ob13o3c5i6997atd23j3d3;security=low' --users --pass
可查看用戶的密碼,這其中使用了暴力枚舉的功能,可看到將用戶 admin
的密碼Hash值獲得了,其餘幾個用戶沒有設置密碼。經過命令:
sqlmap -u "http://192.168.37.150/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit" --cookie='PHPSESSID=54f6ob13o3c5i6997atd23j3d3;security=low' --privilege
可查看當前的權限狀況,經過命令:
sqlmap -u "http://192.168.37.150/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit" --cookie='PHPSESSID=54f6ob13o3c5i6997atd23j3d3;security=low' --tables -D admin
可查看 admin
數據庫下的表有 guestbook
和 users
,經過命令:
sqlmap -u "http://192.168.37.150/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit" --cookie='PHPSESSID=54f6ob13o3c5i6997atd23j3d3;security=low' --columns -T users -D admin
可查看 users
表中關於字段的信息,經過命令:
sqlmap -u "http://192.168.37.150/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit" --cookie='PHPSESSID=54f6ob13o3c5i6997atd23j3d3;security=low' --dump -C user,password -T users -D admin
可查看 user
和 password
字段中的信息。經過命令:
sqlmap -u "http://192.168.37.150/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit" --cookie='PHPSESSID=54f6ob13o3c5i6997atd23j3d3;security=low' --sql-shell
可獲得一個可以使用sql語句的shell,上圖中使用 select load_file('/etc/passwd');
獲得了一些關於密碼的文件內容。
打開jsql工具,將存在SQL注入漏洞的地址輸入進去,而後執行便可獲得數據庫中的內容,能夠圖形化查看,以下:
該工具是一個Web應用程序集成攻擊平臺,它包含了一系列burp工具,用於漏洞分析。
打開它,而後訪問 http://192.168.37.150/dvwa
便可爬到許多信息,以下:
依然訪問 http://192.168.37.150/dvwa
,進入它的登陸界面,故意輸錯,好比用戶名密碼都輸入 1
,而後在BurpSuite工具的爬蟲界面中找到網頁提交的信息,轉到Intruder模塊,以下:
這裏須要使用到字典,爲方便測試,我本身創建了一個簡單的字典:
經測試,並不能成功,我以爲是由於在網頁表單提交時多了一個用戶令牌 user_token
,這是一個徹底隨機的數,故單純匹配密碼沒有用。
在BurpSuite當中進入proxy標籤頁,它能夠逐條攔截上網信息,能夠查看設定的Web代理服務器爲 127.0.0.1:8080
:
接着在瀏覽器中設定代理服務器:
因爲該工具默認狀況下沒法抓取 HTTPS
協議的數據包,因此百度之類的網站沒法抓取,進而選擇了一個 HTTP
協議的網站http://www.21cto.com/進行測試:
假定咱們在網站當中的搜索框搜索"kali",抓取到的數據爲:
能夠手動將數據包裏的搜索內容"kali",修改成"linux":
修改後,網站下一步將會轉向實際搜索"linux"的界面:
若是再網頁加載過程當中,將數據包drop掉,則會獲得如下網頁:
完成網絡攻防課程的學習,完成各類攻防實踐操做。
學習了《網絡攻防---技術與實踐》第十一、12章的內容,學習了KaliSecurity的16 - 20視頻,着重學習了SQL注入與XSS跨站腳本攻擊的原理、sqlmap、BurpSuite。
周次 | 教材學習 | 視頻學習(新增/累計) | 博客(新增/累計) |
---|---|---|---|
第1周 | (實驗樓學習) | (實驗樓學習) | 1/1 |
第2周 | 第一、2章 | 5/5 | 1/2 |
第3周 | 第3章 | 5/10 | 2/4 |
第4周 | 第4章 | 5/15 | 1/5 |
第5周 | 第十一、12章 | 5/20 | 1/6 |