iT邦幫忙

2023 iThome 鐵人賽

DAY 19
0

Info

Walkthrough

  • 存取網頁後使用帳號和上關獲取的密碼登入,看到存在帳號密碼輸入框,網頁描述要求使用 admin account 登入
    • Imgur
  • 點擊 View sourcecode 超連結查看後端 PHP 程式碼
    • Imgur
  • 分析程式碼邏輯後畫成流程圖如下,發現 password 欄位是擺設求心安的,當有請求時驗證 Cookie 的 PHPSESSID 是否合法 (數字),如果對應的 Session 中 admin==1 則顯示下關的登入密碼
    • Imgur
  • 可參考 Day 0x02 Natas Level 0 → Level 1 的方法,透過 Burp Suite 的 Proxy 攔截並 Send to Intruder,在 Positions 找到 PHPSESSID 選擇 Add §
    • Imgur
  • PayloadsPayload type 選擇 Numbers,下方 Payload settingsNumber range 改成 From 1 To 640
    • Imgur
  • 點擊右上方 Start attack 開始枚舉,根據 Length 排序,找到不同的獲得下題的登入密碼
    • Imgur

Note

  • 因為 password 欄位無實際作用,全仰賴 Cookie 中的 PHPSESSID 判斷身分,且從註解 "640 should be enough for everyone" 可知,開發者可能認為 640 足以包含所有使用者數量,但卻使攻擊者有機會枚舉 PHPSESSID 來獲得下題的登入密碼
  • 假如是使用 Burp Suite Community Edition,其中 Intruder 的速度會變慢屬正常現象,根據 Burp Intruder Bruteforcing too slowly 裡面其他使用者所述,最慢可能會 15 sec/1 req,如果想體驗完整版功能可以花錢訂閱 Burp Suite Professional 或者自行撰寫腳本

Summary

  • 相關弱點:
  • 弱點原因:
    • 網站根據 Cookie 中可預期的 PHPSESSID 判斷使用者身分,進而擁有權限存取敏感資料
  • 修補建議:
    • 取消 debug 參數等開發者的功能,避免洩漏可用資訊給攻擊者,且採用不可預期且不唯一的 Session ID,由 server side 驗證 Cookie 合法與完整性,並限制使用效期來緩解攻擊的利用範圍;另建議立即更換密碼,以減少資訊洩漏的風險

Reference


上一篇
Day 0x12 Natas Level 16 → Level 17
下一篇
Day 0x14 Natas Level 18 → Level 19
系列文
Natas 網頁安全:從入門到放棄35
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言