GitHub地址:Black_Hat_Python_Chapter4php
微博、社交網絡、雲計算託管服務等一系列新型的互聯網應用與Web技術緊密的交織在一塊兒,這些新的Web技術爲人們的生活帶來大量便利的同時,卻也帶來了史無前例的巨大安全風險。本章從Web技術的服務端和瀏覽器端來分析Web安全攻防技術的輪廓,以及其中最爲基礎和重要的攻擊技術與防範措施。python
一、Web應用體系結構
mysql
二、Web應用安全威脅linux
一、Web應用的信息收集git
二、攻擊Web服務器軟件github
三、攻擊Web應用程序
在2004年發佈的《WASC Web安全威脅分類 v1.0》將Web應用程序安全威脅從攻擊技術角度分爲以下6類:web
OWASP組織公佈的Top 10 Web應用程序安全威脅類型:
sql
四、攻擊Web數據內容shell
五、Web應用安全防範措施數據庫
代碼注入根據攻擊目標的不一樣又分爲:
一、SQL注入攻擊原理
SQL注入是利用Web應用程序數據層存在的輸入驗證不完善型安全漏洞實施的一類代碼注入攻擊技術。這類被攻擊的漏洞被稱爲SQL注入漏洞,是因爲用於輸入沒有被正確地過濾以消除SQL語言中的字符串轉義字符,如引號(')、雙引號(")、反引號(`)、分號(;)、百分號(%)、井號(#)、雙減號(--)、雙下畫線(__)等,或者沒有進行嚴格的類型判斷,如未判斷輸入參數是否合法整數類型等,從而使得用戶能夠輸入並執行一些非預期的SQL指令代碼。
SQL注入攻擊的原理是向Web應用程序提供的用戶輸入接口輸入一段精心構造的SQL查詢命令,攻擊和利用不完善的輸入驗證機制,使得注入代碼得以執行完成非預期的攻擊操做行爲。
二、SQL注入攻擊步驟和過程
三、SQL注入攻擊工具
四、SQL注入攻擊防範措施
XSS跨站腳本漏洞存在於Web應用程序中,使得攻擊者能夠在web頁面中插入惡意的HTML或JavaScript代碼,當用戶瀏覽該網頁時,客戶端瀏覽器就會解析和執行這些插入的代碼,從而形成獲取用戶敏感信息、客戶端滲透攻擊等危害後果。
一、XSS攻擊技術原理
XSS攻擊的根源一樣是Web應用程序對用戶輸入內容的安全驗證與過濾不夠完善,在許多流行的Web論壇、博客、留言本及其餘容許用戶交互的Web應用程序中,用戶提交內容中能夠包含HTML、JavaScript及其餘腳本代碼,而一旦Web應用程序沒有對這些輸入的合法性進行有效檢查與過濾,就頗有可能讓這些惡意代碼邏輯包含在服務器動態產生或更新的網頁中。
而與代碼注入不一樣的是,XSS攻擊的最終目標並不是Web服務器,Web服務器上的應用程序在XSS攻擊場景中發揮的角色是「幫兇」,而非「受害者」,真正的「受害者」則是訪問這些Web服務器的其餘用戶。攻擊者能夠利用Web應用程序中的安全漏洞,在服務器端網頁中插入一些惡意的客戶端腳本代碼,在Web服務器上產生一些惡意攻擊頁面。
二、XSS攻擊類型
三、XSS攻擊防範措施
一、Web瀏覽器戰爭與技術發展
二、Web瀏覽的安全問題與威脅
網頁木馬的定義特徵
經過對網頁木馬起源背景和存在技術基礎的分析,咱們能夠認知到網頁木馬從本質特徵上利用了現代Web瀏覽器軟件中所支持的客戶端腳本執行能力,針對Web瀏覽端軟件安全漏洞實施客戶端滲透攻擊,從而取得在客戶端主機的遠程代碼執行權限來植入惡意程序。
網頁掛馬機制
混淆機制
除了引入中間跳轉節點進行嵌套連接,並集成多種滲透攻擊代碼以外,網頁木馬攻擊網絡中每每採用了大量的混淆技術,來對抗反病毒軟件的檢測,並提升反病毒工程師的分析難度,從而使得網頁木馬攻擊網絡更難被檢測和摧毀,這些混淆技術也被稱爲「免殺」。
網頁木馬的檢測與分析技術
網頁木馬防範措施
攻擊環境使用SEEDUbuntu-Aug-2010。在SEED中須要用到:FireFox、Apache服務器、phpBB2(本地服務器的攻擊測試頁面,SEED中已經安裝)。
phpBB2環境本地目錄位於/var/www/SQL/SQLLabMysqlPhpbb/。
首先啓動SEED自帶的Apache服務器
進入http://www.sqllabmysqlphpbb.com訪問phpBB2。
在進入phpBB以前系統會要求你登錄。這個登錄認證由服務器上的login.php實現,須要用戶輸入用戶名和密碼來經過認證。
用戶鍵入用戶名和密碼後,login.php會將它們與mysql數據庫中的username和user_password字段進行比較,若是匹配就登錄成功。和其餘大多數web應用程序同樣,PHP程序使用SQL語言與背後的數據庫交互。咱們進入phpBB2環境目錄,查看login.php,找到關於checkpassword的源代碼:
username是一個變量,用於保存在Usernametextbox中鍵入的字符串, password是一個變量,用於保存在thePasswordtextbox中鍵入的字符串。 用戶在這兩個文本框中的輸入直接放在SQL查詢字符串中。
sql注入原理就在於此,經過字符串的直接插入,靈活運用單引號'和註釋符號#能夠作到必定程度上修改sql查詢。
咱們返回phpBB2的主頁,點擊Memberlist,查看當前的註冊用戶,咱們選擇bob進行實驗:
在用戶名處輸入bob’ #
,#是mysql中的註釋符號,他把上面源碼中AND後面檢查密碼的條件給註釋掉使其不執行,實現不用輸入密碼便可登錄此用戶,實現SQL注入操做。實現效果以下:
在不知道他/她的密碼的狀況下更改其餘用戶的我的資料。 例如,若是以bob身份登陸,則目標是使用此漏洞修改Ted的我的資料信息,包括Ted的密碼。 攻擊發生後,應該可以登陸Ted的賬戶。
a'
,會返回sqldebug信息。a' where user_id = 6#
來修改ted的密碼。但須要知道bob目前帳戶的密碼。同上
發佈包含JavaScript的惡意消息以顯示警報窗口,應在消息中提供JavaScript以及用戶註釋。 如下JavaScript將顯示一個警告窗口:<script>alert('XSS'); </ script>
。若是在留言板中發佈此JavaScript以及評論,那麼查看此評論的任何用戶都將看到警報窗口。
在包含JavaScript代碼的留言板上發佈惡意消息,這樣每當用戶查看此消息時,將打印出用戶的cookie。使用如下包含JavaScript代碼的消息。
<script>alert(document.cookie);</script>
彈出cookie信息:
一、BBQSql
BBQSQL是用Python編寫的一個盲目的SQL注入框架(盲注SQL)。在攻擊棘手的SQL注入漏洞時很是有用。BBQSQL也是一種半自動化工具,可讓那些難以觸發SQL注入發現的用戶進行至關多的定製。該工具的創建是數據庫不可知的,很是通用。它還有一個直觀的UI,使設置攻擊更容易。Python gevent也被實現,使得BBQSQL很是快。
二、DBPwAudit
DBPwAudit是一個Java數據庫密碼審計工具,是一個能夠執行在線審計密碼質量的數據庫引擎。該應用程序能夠經過複製新的JDBC驅動程序到JDBC目錄來添加額外的數據庫驅動程序。使用方法以下:
三、HexorBase
圖形化的密碼破解與鏈接工具,開源。該工具是少有的圖形界面工具,它支持MySQL、Oracle、PostgreSQL、SQLite和SQL Server五大主流數據庫。它容許安全人員指定用戶字典和密碼字典,而後實施字典攻擊。同時,它還提供對應的圖形界面客戶端,容許安全人員使用破解出的用戶名和密碼,對數據庫進行遠程管理。
四、Jsql Injection
jsql是一款輕量級安全測試工具,能夠檢測SQL注入漏洞。它跨平臺(Windows,Linux,Mac OS X,Solaris)、開源且免費。將存在注入漏洞的URL貼進來便可進行相應的漏洞利用。圖形化界面比較親民,可是使用效果有待改善。
五、MDBTools
包括MDB-Export(Export data in an MDB databse table to CSV format),以及MDB-Dump,MDB-Parsecsv,MDB-SQL,MDB-tables等子工具,具體環境具體使用。
六、Oracle Scanner
Oscanner是一個用Java開發的Oracle評估工具。
七、SIDGusser
一樣是針對Oracle的SID進行暴力枚舉的工具。SID爲Oracle實例名,Oracle鏈接字符串,經過實例名+用戶+密碼鏈接。
八、SQLDict
是一個用戶名密碼枚舉工具,本是一個Windows下程序,經過Wine在linux中模擬運行。
九、tnscmd10g
容許向Oracle數據庫中注入命令。
十、sqlsus
sqlsus是一個開放源碼的MySQL注入和接管工具,sqlsus使用perl編寫,基於命令行界面。sqlsus能夠獲取數據庫結構,注入你本身的SQL語句,從服務器下載文件,爬行web站點可寫目錄,上傳和控制後門,克隆數據庫等等。最好用的兩點就是注射獲取數據速度很是快,另一個最大的特色就是自動搜索可寫目錄。
十一、sqlninja
sqlninja是一款perl編寫的一個專門針對Microsoft SQL Server的sql注入工具。和其餘注入工具不一樣,sqlninja沒有將精力用在跑數據庫上,而是側重於得到一個shell。
十二、sqlmap
是sql注入界的神器。SQLMAP是一個開源的滲透測試工具,它主要用於自動化地偵測和實施SQL注入攻擊以及滲透數據庫服務器。SQLMAP配有強大的偵測引擎,適用於高級滲透測試用戶,不只能夠得到不一樣數據庫的指紋信息,還能夠從數據庫中提取數據,此外還可以處理潛在的文件系統以及經過帶外數據鏈接執行系統命令等。
一、BurpSuite
用於攻擊web應用程序集成平臺。
二、OwaspZAP
OWASP Zed攻擊代理(ZAP)是世界上最受歡迎的免費安全審計工具之一,由數百名國際志願者積極維護。它能夠幫助你在開發和測試應用程序時自動查找Web應用程序中的安全漏洞。OWASP-ZAP主要擁有如下重要功能:本地代理、主動掃描、被動掃描、Fuzzy、暴力破解。
三、paros proxy
是一個對Web 應用程序的web漏洞評估的代理程序,即一個基於Java 的web 代理程序,能夠評估Web 應用程序的漏洞。它支持動態地編輯/查看HTTP/HTTPS,從而改變cookies和表單字段等項目。
四、Webscarab
一款代理軟件,包括HTTP代理,網絡爬行、網絡蜘蛛,會話ID分析,自動腳本接口,模糊測試工具, WEB格式的編碼/解碼,WEB服務描述語言和SOAP解析器等功能模塊。WebScarab基於GNU協議,使用Java編寫,是WebGoat中所使用的工具之一。
五、Vega
是一個開放源代碼的web應用程序安全測試平臺,Vega可以幫助你驗證SQL注入、跨站腳本(XSS)、敏感信息泄露和其它一些安全漏洞。 Vega使用Java編寫,有GUI,能夠在Linux、OS X和windows下運行。
打開瀏覽器,點擊Preferences->Privacy->Advanced->Network->Settings,默認狀況下,設置本地服務器,設置HTTP代理127.0.0.1和端口8080。
下面在burp suite窗口中檢查本地服務運行狀況,在burp suite窗口中,點擊選項卡中的'proxy',而後點擊下一級的‘Options’。在上面的Proxy Listeners欄中看到本地的127.0.0.1和8080端口的選項,左側的running中已經選定,就能夠開始使用Burp Suite捕獲流量了。
BurpSuite具備如下模塊:
模糊測試(Fuzz testing)是一種自動化軟件測試技術,涉及提供無效,意外或隨機數據做爲計算機程序的輸入。 而後監視程序是否存在異常,例如崩潰,內置代碼斷言失敗或潛在的內存泄漏。 一般,模糊器用於測試採用結構化輸入的程序。
模糊測試的執行過程很簡單,大體以下:
一、準備好隨機或者半隨機方式生成的數據;
二、將準備好的數據導入被測試的系統;
三、用程序打開文件觀察被測試系統的狀態;
四、根據狀態判斷是否存在漏洞。
Fuzz經常使用的工具備:Bed、ohrwurm、PowerFuzzer、Wfuzz、XSSer。
一、Bed
是一個純文本協議的Fuzz工具,可以檢查常見的漏洞,如緩衝區溢出,格式串漏洞,整數溢出等。BED經過加載插件,向目標主機發送攻擊數據。若是發現目標沒法響應,說明目標可能存在溢出區漏洞。通過屢次測試驗證,就能夠判斷漏洞出現的位置。而後經過手工執行驗證,代碼審覈、反編譯等方式,就能夠找出漏洞具體觸發機制,從而加以利用。
二、ohrwurm
一個迷你的對RTP的fuzz工具,主要針對SIP通訊的fuzz。
三、PowerFuzzer
Kali Linux自帶的一款Web模糊測試工具。該工具基於各類開源模糊測試工具構建,集成了大量安全信息。該工具高度智能化,它能根據用戶輸入的網址進行自動識別XSS、SQL注入、CRLF、HTTP500等漏洞。同時,用戶能夠指定用戶和密碼等身份驗證信息,也能夠指定Cookie信息。同時,用戶能夠直接指定該工具是否使用代理。因爲該工具開發較早,對非ASCII編碼(如包含中文的網站)網站支持很差,分析中文網站容易出現異常錯誤。
四、Wfuzz
wfuzz不只僅是一個web掃描器,Wfuzz是一個爲暴力破解Web應用程序而設計的工具,它能夠用於查找未連接的資源(目錄,servlet,腳本等),暴力GET和POST參數以檢查不一樣類型的注入(SQL,XSS,LDAP等),強力表單參數(用戶/密碼),Fuzzing等。
五、XSSer
XSSer專門針對XSS漏洞,主要是對一個頁面或點進行xss測試,判斷是否有XSS的漏洞。