1.Web應用體系結構
php
2.Web應用安全威脅java
1.Web應用的信息收集
與系統和網絡攻擊相似,針對Web應用的攻擊也須要首先進行信息情報的收集,對目標Web應用服務進行發現與剖析,標識出它的基本輪廓,具體包括服務器域名、IP地址和虛擬IP地址,Web服務器端口與其餘開放服務,Web站點類型和版本,Web應用程序類型與版本,以及Web服務器和Web應用程序中存在的安全漏洞信息等。python
2.攻擊Web服務器軟件
Web服務器軟件做爲Web應用的層載體,也成爲攻擊者對Web應用實施攻擊的首要目標之一。mysql
3.攻擊Web應用程序
在Web應用各個層次上,目前安全最薄弱的環節在於Web應用程序。在2004年發佈的《WASC Web安全威脅分類v1.0》將Web應用程序安全威脅從攻擊技術角度分爲以下6類。
(1)針對認證機制的攻擊:針對用來確認用戶、服務或應用身份機制的攻擊手段,包括暴力枚舉、利用認證機制不完善弱點、攻擊口令恢復驗證機制等;
(2)受權機制的攻擊:針對用來確認用戶、服務或應用是否具備執行請求動做必須權限限制的攻擊手段,包括信任/會話預測、利用受權機制不完善弱點、利用會話失效機制不完善弱點、會話身份竊取攻擊等;
(3)客戶端攻擊:擾亂或者滲透攻擊Web站點客戶端用戶的攻擊手段,包括內容欺騙、跨站腳本攻擊等;
(4)命令執行攻擊:在Web站點上執行遠程命令的攻擊手段,包括緩衝區溢出、格式化字符串、LDAP注入、操做系統命令注入、SQL注入、SSI注入等;
(5)信息暴露:獲取Web站點具體系統信息的攻擊手段,包括目錄枚舉、信息泄露、路徑遍歷、資源位置可預測等;
(6)邏輯攻擊:擾亂或者滲透攻擊Web應用邏輯流程的攻擊手段,包括功能濫用、拒絕服務攻擊、對抗自動程序不完善、處理驗證過程不完善等。
下圖是在2010年最新發布的《WASC Web安全威脅分類v2.0》文檔中安全威脅列舉:
linux
4.攻擊Web數據內容git
5.Web應用安全防範措施web
代碼注入根據攻擊目標的不一樣又分爲:sql
1.SQL注入攻擊原理
SQL注入是利用Web應用程序數據層存在的輸入驗證不完善型安全漏洞實施的一類代碼注入攻擊技術。這類被攻擊的漏洞被稱爲SQL注入漏洞,是因爲用於輸入沒有被正確地過濾以消除SQL語言中的字符串轉義字符,如引號(')、雙引號(")、反引號(`)、分號(;)、百分號(%)、井號(#)、雙減號(--)、雙下畫線(__)等,或者沒有進行嚴格的類型判斷,如未判斷輸入參數是否合法整數類型等,從而使得用戶能夠輸入並執行一些非預期的SQL指令代碼。
SQL注入攻擊的原理是向Web應用程序提供的用戶輸入接口輸入一段精心構造的SQL查詢命令,攻擊和利用不完善的輸入驗證機制,使得注入代碼得以執行完成非預期的攻擊操做行爲。
2.SQL注入攻擊步驟和過程
在攻擊者真正對萬維網的一些Web應用站點實施SQL注入攻擊等,每每是按照以下的攻擊步驟與過程。
(1)發現SQL注入點
(2)判斷後臺數據庫類型shell
(3)後臺數據庫中管理員用戶口令字猜解數據庫
(4)上傳ASP後門,獲得默認帳戶權限
(5)本地權限上升
(6)利用數據庫擴展存儲過程執行Shell命令
3.SQL注入攻擊工具
國外工具:
Wposion可以在動態Web文檔中找出SQL注入漏洞;wieliekoek.pl可以以並以網站鏡像工具生成的輸出爲輸入,找出含有表單頁面,容許在配置文件中對注入字符串進行修改,進行SQL注入漏洞探測;SPIKE Proxy工具容許使用則對待注入的字符串進行定製,並執行自動化的SQL注入測試;SPI Tooklit工具包中也包含一個名叫「SQL Injector」的自動化SQL注入測試工具。
國內工具:
CSC、NBSI、HDSI、阿D注入工具、WED、Domain、Pangolin等
4.SQL注入攻擊防範措施
(1)使用類型安全的參數編碼機制
(2)凡是來自外部的用戶輸入,必須進行完備檢查
(3)將動態SQL語句替換爲存儲過程、預編譯SQL或ADO命令對象
(4)增強SQL數據庫服務器的配置與鏈接
XSS攻擊的根源一樣是Web應用程序對用戶輸入內容的安全驗證與過濾不夠完善,在許多流行的Web論壇、博客、留言本及其餘容許用戶交互的Web應用程序中,用戶提交內容中能夠包含HTML、JavaScript及其餘腳本代碼,而一旦Web應用程序沒有對這些輸入的合法性進行有效檢查與過濾,就頗有可能讓這些惡意代碼邏輯包含在服務器動態產生或更新的網頁中。
而與代碼注入不一樣的是,XSS攻擊的最終目標並不是Web服務器,Web服務器上的應用程序在XSS攻擊場景中發揮的角色是「幫兇」,而非「受害者」,真正的「受害者」則是訪問這些Web服務器的其餘用戶。攻擊者能夠利用Web應用程序中的安全漏洞,在服務器端網頁中插入一些惡意的客戶端腳本代碼,在Web服務器上產生一些惡意攻擊頁面。
XSS攻擊類型:持久性XSS攻擊和非持久性XSS攻擊
XSS攻擊步驟:
(1)攻擊者構造出一個包含惡意腳本的bank.com登陸請求連接,並經過Email/HTTP等方式將該攻擊連接發送給其餘bank.com網站用戶;
(2)受害用戶點擊攻擊連接後,將會把惡意連接中包含的惡意腳本當作用戶名參數提交給bank.com的登陸處理網頁;
(3)因爲bank.com登陸處理頁面存在XSS漏洞,將會在反饋的歡迎頁面中包含惡意客戶端腳本;
(4)攻擊者的惡意客戶端腳本在受害用戶瀏覽器中執行,一般會驅動瀏覽器向攻擊者發送會話令牌,如會話ID、Cookie信息等;
(5)攻擊者得到用戶會話令牌以後,就能夠劫持用戶會話,或者僞造用戶登陸bank.com,並可實施進一步攻擊。
XSS攻擊防範措施
現代瀏覽器的基本結構與機理
Web瀏覽器軟件的安全困境三要素
(1)複雜性:現代瀏覽器軟件的複雜性意味着更多的錯誤和安全缺陷,也就致使了目前瀏覽器軟件中存在着可被滲透攻擊所利用的大量安全漏洞。
(2)可擴展性:現代Web瀏覽器可能最突出可擴展特性支持的軟件類型,目前幾乎全部的現代瀏覽器軟件都支持第三方插件擴展機制。而第三方擴展插件的開發過程缺少安全保證,出現安全漏洞的狀況更爲廣泛。
(3)連通性:現代Web瀏覽器自己就是爲用戶實現「隨時隨地瀏覽互聯網」這一目標而存在的,所以瀏覽器軟件始終工做在聯網狀態,一旦其中存在安全漏洞,就很容易被網絡上的威脅源所利用與攻擊。
Web瀏覽安全威脅位置
網頁木馬存在的技術基礎——Web瀏覽端安全漏洞
網頁木馬的特性:
(1)網頁木馬所攻擊的安全漏洞的存在位置很是多樣化。
(2)除了微軟操做系統平臺軟件自己的安全漏洞以外,網頁木馬近年來也在不斷地發掘和利用其它流行應用軟件中的安全漏洞。
(3)一些影響範圍廣的安全漏洞。
網頁木馬的機理分析
Kali下的數據庫漏洞分析工具一覽:
1.bbqsql
bbqsql是一個Python編寫的盲注工具(blind SQL injection framework),當檢測可疑的注入漏洞時會頗有用。同時它也是一個半自動工具,容許客戶自定義參數。
2.dbpwaudit
數據庫用戶名密碼枚舉工具。
DBPwAudit — DataBase Password Audit
功能:經過掛載字典對目標數據庫進行密碼暴力猜解,
目前支持的數據庫包括SQLServer、MySQL、Oracle、DB2
程序位置:/pentest/database/dbpwaudit/
驅動位置:/pentest/database/dbpwaudit/jdbc/
破解SQLServer數據庫命令實例
./dbpwaudit.sh -s IP -d master -D mssql -U username -P password
破解MySQL數據庫命令實例
./dbpwaudit.sh -s IP -d mysql -D mysql -U username -P password
3.HexorBase:
圖形化的密碼破解與鏈接工具,開源。
4.jsql
JSQL是一款輕量級安全測試工具,能夠檢測SQL注入漏洞。它跨平臺(windows,linux,mac os x,solaris),開源且免費。將存在注入漏洞的URL貼進來便可進行響應的漏洞利用。
它能夠很方便的查看數據庫內容,讀取文件,寫入文件等
5.MDBTools
包括MDB-Export,MDB-Dump,mdb-parsecsv,mdb-sql,mdb-tables等子工具。主要是針對mdb數據庫的,具體環境具體使用
6. oscanner
Oscanner是一個用java開發的oracle評估工具,它是基於插件的結構,當前由兩個插件能夠作:
7. SIDGusser
針對Oracle的SID進行暴力枚舉;SID爲Oracle鏈接字符串:實例名+用戶+密碼
8. SqIDICT(用戶名密碼枚舉工具)
經過wine運行。
1. tnscmd10g
這個工具容許咱們向oracle數據庫中注入命令
2. Sqlsus
sqlsus是一個開放源代碼的MySQL注入和接管工具,Sqlsus使用perl編寫,基於命令行界面。Sqlsus能夠獲取數據庫結構,注入本身的SQL語句,從服務器下載文件。爬行Web站點可寫目錄,上傳和控制後門,克隆數據庫等等。最好用的亮點就是注射獲取數據速度很是快,另一個最大的特色就是自動搜索可寫目錄。
3. Sqlninja
是一款perl編寫的專門針對Microsoft SQL Server的sql注入工具。和市面上其餘注入工具不一樣,sqlninja沒有將精力用在跑數據庫上,而是側重於得到一個shell。
優勢:
1. Burp Suite
用於攻擊web應用程序的集成平臺,經過默認端口8080運行,它帶有一個代理,能夠截獲並修改從客戶端到web應用程序的數據包。
使用Burp Suite截獲數據包
2. OWASP ZAP
攻擊代理,查找網頁應用程序漏洞的綜合類滲透測試工具,包含攔截代理、自動代理、被動代理、暴力破解、端口掃描及蜘蛛搜索等功能。是會話類調試工具。
3. Vega
開源的web應用程序安全測試平臺,Vega能幫助驗證SQL注入、跨站腳本(XSS)、敏感信息泄露和其餘一些安全漏洞。Vega使用java編寫,有GUI,能夠在多平臺下運行。Vega相似於Paros Proxy, Fiddler, Skipfish and ZAproxy。
4. Paros
paros,是一個對Web應用程序的漏洞進行評估的代理工具,即一個基於Java的Web代理程序,能夠評估Web應用程序的漏洞。它支持動態地編輯/查看HTTP/HTTPS,從而改變cookies和表單字段等項目。它包括一個Web通訊記錄程序,Web圈套程序(spider),hash計算器,還有一個能夠測試常見的Web應用程序攻擊(如SQL注入式攻擊和跨站腳本攻擊)的掃描器。該工具檢查漏洞形式包括:SQL注入、跨站點腳本攻擊、目錄遍歷等。
5. proxystrike
Web會話安全分析工具ProxyStrike
在Web應用中,客戶端發出一次請求,服務器響應一次。這構成一個完整的會話。經過分析請求和響應的數據,能夠發現Web應用存在的漏洞。Kali Linux提供一款專用工具ProxyStrike。該工具提供HTTP代理功能,能夠跟蹤HTTP會話信息,並進行分析統計。同時,該工具也提供攔截功能,安全人員能夠對每一個會話進行分析和修改,以獲取服務器的不一樣響應。
該工具還經過插件模式,提供安全掃描功能。該工具默認集成SQL注入和XSS兩個插件。在捕獲會話的同時,該工具會自動進行安全檢測,以發現目標服務器存在的漏洞。安全人員也可使用該工具對目標網站進行爬取,以蒐集更多的網站資源,並同時進行安全檢測。
Burp Suite 是用於攻擊web 應用程序的集成平臺。它包含了許多工具,併爲這些工具設計了許多接口,以促進加快攻擊應用程序的過程。全部的工具都共享一個能處理並顯示HTTP 消息,持久性,認證,代理,日誌,警報的一個強大的可擴展的框架。
工具箱:
(1)首先配置監聽端口,配置瀏覽器
(2)而後就能夠查看全部請求的數據包
(3)點擊數據包,能夠查看包內容
(4)右鍵單擊包,選擇「send to intruder」,便可進行攻擊
Fuzz是模糊測試的工具,是模糊測試時漏洞挖掘過程當中的重要一步。
1. Bed.pl
Bed(Bruteforce Exploit Detector)是一個純文本協議的Fuzz工具,可以檢查常見的漏洞,如緩衝區溢出,格式串漏洞,整數溢出等。
使用參數以下:
-s 針對FTP協議,FTP參數
-t 目標IP地址
-p 目標端口
-o timeout 發送一連串畸形數據包,嘗試使程序報錯,進行判斷。
2. Fuzz_ipv6
Fuzz_ipv6是THC出品的針對IPV6協議的模糊測試工具
3. Ohrwurm
ohrwurm 是一個小巧而簡單的RTP模糊器,它已經在少許的SIP**上測試過了,它們都沒有經受voip分析工具包的模糊測試
4. Powerfuzzer
Powerfuzzer做爲Fuzz請求的工具 ,BurpSuit等Web代理工具也具備相應Fuzz能力。
5. Wfuzz
針對Web應用的模糊測試工具,能夠進行Web應用暴力猜解,也支持對網站目錄、登陸信息、應用資源文件等的暴力猜解,還能夠進行get及post參數的猜解,sql注入、xss漏洞測試等。該工具全部功能依賴於字典。
SQL語言
SQL(Structured Query Language,結構化查詢語言):是一種特殊目的的編程語言,是一種數據庫查詢和程序設計語言,用於存取數據以及查詢、更新和管理關係數據庫系統;同時也是數據庫腳本文件的擴展名。
SQL注入
SQL注入:SQL注入能使攻擊者繞過認證機制,徹底控制遠程服務器上的數據庫。SQL是結構化查詢語言的簡稱,它是訪問數據庫的事實標準。目前,大多數Web應用都使用SQL數據庫來存放應用程序的數據。幾乎全部的Web應用在後臺都使用某種SQL數據庫。跟大多數語言同樣,SQL語法容許數據庫命令和用戶數據混雜在一塊兒的。若是開發人員不細心的話,用戶數據就有可能被解釋成命令,這樣的話,遠程用戶就不只能向Web應用輸入數據,並且還能夠在數據庫上執行任意命令了。
SQL注入危害
一、非法讀取、篡改、添加、刪除數據庫中的數據。
二、盜取用戶的各種敏感信息,獲取利益。
三、經過修改數據庫來修改網頁上的內容。
四、私自添加或刪除帳號。
五、注入木馬等等。
SQL注入攻擊防範措施
1.使用類型安全的參數編碼機制
2.凡是來自外部的用戶輸入,必須進行完備檢查
3.將動態SQL語句替換爲存儲過程、預編譯SQL或ADO命令對象
4.增強SQL數據庫服務器的配置與鏈接
啓動mysql:sudo mysqld_safe
啓動apache服務器:sudo service apache2 start
配置DNS:sudo vim /etc/hosts
上述的URL僅僅在鏡像內部能夠訪問,由於修改了/etc/hosts文件使http://www.sqllabmysqlphpbb.com指向本機IP127.0.0.1。若是須要在其餘機器訪問,應該修改hosts文件,使URL映射到phpBB2所在機器的IP。
配置網站文件:sudo vim /etc/apache2/conf.d/lab.conf
PHP提供了自動對抗SQL注入的機制,被稱爲magic quote,咱們須要關閉它:sudo vim /etc/php5/apache2/php.ini
系統會要求你登錄。這個登錄認證由服務器上的login.php實現,須要用戶輸入用戶名和密碼來經過認證。
在用戶名輸入ted'#,密碼空着就行,ted是一個已經存在的用戶名,用單引號結束這個字符串,用#轉義掉後面的語句。
當用戶想要在phpBB2中修改他們的資料時,能夠點擊Profile,而後填寫表單修改。用戶發送修改請求後,會執行include/usercp_register.php中的一條UPDATE SQL語句。在這條語句中一樣有一個SQL注入漏洞,能夠用它來達到如下目標:在不知道其餘人密碼的狀況下修改其資料。
XSS攻擊步驟:
(1)攻擊者構造出一個包括惡意腳本的bank.com登陸請求連接,並經過Email/HTTP等方式將攻擊連接發送給其它bank.com的網站用戶;
(2)受害用戶點擊攻擊連接後,將會把惡意連接中包含的惡意腳本當作用戶名參數提交給bank.com的登錄處理網頁;
(3)因爲bank.com登陸處理頁面存在XSS漏洞,將會在反饋的歡迎頁面中包含惡意客戶端腳本;
(4)攻擊者的惡意客戶端腳本在受害用戶瀏覽中執行,一般會驅動瀏覽器向攻擊者發送會話令牌。如會話ID、Cookie信息等;
(5)攻擊者得到用戶會話令牌以後,就能夠劫持用戶會話,或者僞造用戶登陸bank.com,並可實施進一步攻擊。
測試xss漏洞
在seed環境中的phpBB論壇上發佈含有腳本「」的帖子,打開帖子後會出現下圖所示頁面,表示該論壇程序存在XSS漏洞
顯示用戶會話Cookie