iT邦幫忙

2023 iThome 鐵人賽

DAY 20
0

Info

Walkthrough

  • 存取網頁後使用帳號和上關獲取的密碼登入,同 Day 0x13 Natas Level 17 → Level 18 有帳號密碼輸入框,多了描述表示大部分的程式沒有變,但 "session IDs are no longer sequentials"
    • Imgur
  • 沒有 View sourcecode 超連結可以查看後端 PHP 程式碼,用 Ctrl + Shift + iF12 開啟 DevTools,選擇 Storage (Chrome 的在 Application) 查看 Cookies,資料剛開始為空,提交表單後會獲得 PHPSESSID
    • Imgur
    • Imgur
  • 再於 DevToolsNetwork 中找到請求,並點擊右鍵選擇 Resend 重送封包,發現 PHPSESSID 似乎會隨機變化
    • Imgur
    • Imgur
  • 可參考 Day 0x02 Natas Level 0 → Level 1 的方法,透過 Burp Suite 的 Proxy 攔截封包並 Send to Repeater 進一步分析,不斷重送後注意到後綴 2d61646d696e 保持不變,嘗試將 username 改為 admi,發現後綴改為 2d61646d69 保持不變,若 username 清空則每次都隨機變化
    • Imgur
    • Imgur
    • Imgur
  • 透過 CyberChef 發現有自動分析出編碼方式,可知此題只是多加後綴並做 Hex 編碼
    • Imgur
    • Imgur
  • 將封包 Send to Intruder,在 Positions 找到 PHPSESSID 選擇 Add §
    • Imgur
  • PayloadsPayload type 選擇 Numbers,下方 Payload settingsNumber range 改成 From 0 To 999 (因為前面重送過程中有 17 和 586 才猜測此範圍),再於 Payload processing 添加後綴 -admin 和 Hex 編碼選項 (注意順序,是先加後綴再整個編碼)
    • Imgur
  • 點擊右上方 Start attack 開始枚舉,根據 Length 排序,找到不同的獲得下題的登入密碼
    • Imgur

Note

  • 本質上和 Day 0x13 Natas Level 17 → Level 18 相同,但在沒有後端程式碼的情況下,只能透過不斷嘗試和經驗推敲出 Session ID 是否具有規則性
  • 同樣也可以自行撰寫腳本枚舉
    • Imgur

Summary

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

Reference


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

尚未有邦友留言

立即登入留言