0x01、Broken Auth - CAPTCHA Bypassing
Low
驗證碼繞過,本題驗證碼沒有時間限制,所以提交一次驗證碼後,可以暴力破解用戶名和密碼了
Medium&High
方法如上,依然可以暴力破解。
所以及時銷燬驗證碼的有效性是很必要的。
0x02、Broken Auth. - Forgotten Function
Low
在源碼中使用了mysqli_real_escape_string()
函數,進行了防sql注入驗證;
且驗證了輸入是否爲email格式:
只能通過暴力破解郵箱了,掛上你的字典試試看吧
郵箱正確了,會提示你的安全問題,也不會直接顯示密碼。
Medium
通過源碼得知,在中級難度時,安全問題會發送郵箱。
也就是我們平時經常遇到的: 忘記密碼需要更改時, 要通過發送修改密碼的郵件到綁定的郵箱來修改。
High
會將sha1
的隨機哈希值發送到郵箱,通過安全問題找回頁面重置安全問題
0x03、Broken Auth. - Insecure Login Forms
Low
查看網頁源代碼, 發現敏感(用戶)信息泄露:
Medium
查看網頁源代碼, 同樣發現了用戶名的泄露; 通過發現unlock按鈕的事件:
繼續在網頁源代碼中找到 unlock_secret()函數:
將關鍵解密代碼複製到瀏覽器控制檯執行, 得到密碼:
High
沒什麼解法了,只剩下 bee
/bug
了:
0x04、Broken Auth. - Logout Management
這個通過源碼可以發現,Low/Medium/High三個級別的區別:
switch($_COOKIE["security_level"])
{
case "0" :
// Do nothing
break;
case "1" :
// Destroys the session
session_destroy();
break;
case "2" :
// Unsets all of the session variables
$_SESSION = array();
// Destroys the session
session_destroy();
break;
default :
// Do nothing
break;
}
Low
退出登錄時,session
沒有銷燬,可以賬號依然有效:
Medium
退出登錄時,session
已經銷燬,需重新登錄
High
退出登錄時,session
先被清空,然後銷燬,需要重新登錄
0x05、Broken Auth. - Password Attacks
Low
用burpsuite或者hydra爆破即可
Medium
增加了一個隨機salt值來驗證, 類似與token的作用。
這裏用burpsuite演示:
1. 先選取爆破參數 password 和salt:
2. 從相應的頁面中獲取salt值:
3. 將redirection設爲always:
4. 添加密碼字典:
5. 將salt設置好, 並且給第一次訪問的salt賦值 (不然開始就被不合法驗證了, 無法開始):
6. 由於設置了sale, 是一對一的驗證, 只有獲取上一個請求返回的salt值才能,做下一次請求, 因此只能單線程, 在option中設置線程爲1:
7. start attack, 長度不同的那個即爲正確密碼:
High
加了圖片驗證碼, 也是我們現實中經常遇到的:
0x06、Broken Auth. - Weak Passwords
弱口令,沒啥說的,掛字典吧。
Low
test / test
Medium
test / test123
High
test / Test123
0x07、Session Mgmt. - Administrative Portals
Low
admin參數控制頁面, 直接修改即可:
Medium
同樣, 只不過控制的admin參數在cookie中:
High
需要修改session
中的admin
值爲1,
或者直接用管理員賬號bee
/bug
登錄也可以。
0x08、Session Mgmt. - Cookies (HTTPOnly)
Low
觀察源碼, Cookies中httponly
字段設置爲false:
-
setcookie(name,value,expire,path,domain,secure)
參數 | 描述 |
---|---|
name | 必需。規定 cookie 的名稱。 |
value | 必需。規定 cookie 的值。 |
expire | 可選。規定 cookie 的有效期。 |
path | 可選。規定 cookie 的服務器路徑。 |
domain | 可選。規定 cookie 的域名。 |
secure | 可選。規定是否通過安全的 HTTPS 連接來傳輸 cookie。 |
點擊 Click Here ,本地JS腳本可以直接訪問到top_security
這個變量值:
Medium
Cookies中httponly
字段設置爲true:
點擊Click Here,本地JS腳本無法訪問top_security
變量值了:
High
Cookies中httponly
字段設置爲ture
,同時縮短了cookies
的生存時間
與中級難度的區別在於,調整了Cookie的生存時間,僅有300秒(5分鐘):
0x09、Session Mgmt. - Session ID in URL
三個等級的難度都一樣, Session ID 暴露在URL中:
Session ID 永遠不要暴露在URL中。
0x0A、Session Mgmt. - Strong Sessions
本題主要是通過觀察top_security_nossl
和top_security_ssl
的情況,
來了解Session
的安全存儲
Low
沒有任何安全可言
Medium
可以觀察到
top_security_nossl
的值是使用了HASH
處理
High
在非SSL情況下,看不到
top_security_ssl
的值
改用HTTPS
後,可以觀察到top_security_nossl
值