首先介紹一個新手 CTF 玩家可以參考的網站:CTF Wiki。
CTF Wiki 中有對於 CTF 的基本介紹,也有各種類型需要先學習的基本知識。今天我想先從 Web 這個類型開始。
OWASP 每幾年就會更新一份報告,裡面會列出 Web 領域中 10 個最關鍵的風險類型。其實也有其他領域的報告,比如去年底開始很熱門的 LLM (大型語言模型),他們也有出報告來提醒大家相關的風險,不過不是我們這次討論的重點,有興趣的可以去看看:
OWASP Top 10 for Large Language Model Applications
指攻擊者可以利用 Web 中讀取檔案的功能,來達到任意存取伺服器上的機敏檔案,如 /etc/passwd
。可以檢查傳入的參數是否有使用 ../
或者對應的 encode %2e%2e%2f
。
加密部分的弱點,比如使用明文傳輸 (HTTP, FTP, etc. ),或是使用了 MD5 這類已被證實不安全的 Hash 函數。
在 2017 年的報告中,這個項目是第一名,常見於 SQL Injection、Command Injection。通常是使用者送的資料進到 Interpreter 前沒有經過過濾,而可以達到系統預期之外的操作。
顧名思義就是不安全的設計XD,說明中特別強調與不安全的實作是有所區別的:安全的設計仍有可能因實作不安全而產生漏洞;而不安全的設計則不能通過完美的實作來修復。
不安全的 Config 設置可能是開啟或安裝了非必要的功能 (port, service, account, etc.),或是使用了預設的密碼,也可能是權限設定不當,範圍可以說相當廣泛。
使用了已不支援,或是已知有漏洞的軟體來組建系統。
弱密碼、可被暴力破解、撞庫等等。
可能是安裝的 Package 來自不受信任的來源,或是 CI/CD 不安全而導致未授權的存取。分別可以透過確保來源是可信任的,以及確保 CI/CD 的隔離和 access control 有妥善設定來降低風險。另外現在流行的自動更新功能也可能成為受攻擊的弱點。
Log 紀錄的範圍不足,或是紀錄了敏感資訊都屬於此項,也可能是設定的警報閾值無效。
服務中未驗證使用者提供的 URL 便送出 Request,就有可能被攻擊者利用來偽造請求,近年的服務都提供越來越方便的服務,因此這個項目的發生機率也跟著變高了。
上面對於每個項目進行了簡單的敘述,如果有需要更詳細的說明,可以點進去連結看官方提供的說明以及預防方式!如果有點進去看就會發現每個都有提到一個叫做 CWE 的東西,這個是由開源社群維護的一個列表,是針對軟體中脆弱容易受攻擊的地方來做分類的系統,他們也有提供一些方案來讓這些弱點被修復,有興趣的人可以去查看看~
另外找資料的時候有看到第 11 屆鐵人賽的「到處挖坑,現在該來還(填)願(坑)ㄌ !!!」,這個系列文有 OWASP 的詳細介紹,雖然是 2017 年的版本,仍然值得花時間去看一下!