摘要: Cloudflare 於 2026 年 10 月 27 日宣布推出 PHP Capture the Flag 挑戰,透過 HackerOne 上的 Bug Bounty 計畫進行。他們把一個刻意脆弱的 PHP 環境放在自家 WAF 後面,邀請安全研究員繞過防護、取得 /flag 檔案。對做產品的人來說,這是一次少見的機會:直接看到防護規則在真實攻擊下的表現。
為什麼辦這場挑戰
背景是前一周的兩起事件:八張 eMudhra 中繼憑證外洩,以及名為 php2shell 的 PHP 重大漏洞。Cloudflare 表示他們在事件期間陸續推出用戶端更新、多項緩解措施、針對這些 PHP 漏洞的新 WAF 規則,以及一項名為 full transaction detection 的新功能,而且這些能力涵蓋所有方案,包括 Free。
Cloudflare 在公告中的理由很直接:AI 的普及讓攻擊者能用前所未有的速度找到新的攻擊面,所以蒐集真實世界的測試資料、驗證自己的假設變得必要。這與本站先前介紹過的 Cloudflare WAF 全交易偵測 是同一條思路——不是只看單一請求,而是把回應和完整交易也納入判斷。
挑戰環境長什麼樣
設定刻意保持簡單。目標是 PHP 8.5.11(標準擴充)、Apache 2 透過 mod_php 執行、空的 index.php,跑在 Cloudflare Container 裡,前面套用針對這兩個漏洞的預設 WAF 保護規則。沙盒裡有一個 /flag 檔案,每幾分鐘整個環境會重置,包括 flag 檔。
挑戰聚焦在 php2shell 背後的兩個漏洞:CVE-2026-109618 和 CVE-2026-109619。參賽者的任務是繞過 WAF、在沙盒內取得遠端程式碼執行(RCE)、讀出 /flag 的內容,然後透過挑戰介面完成驗證。可以使用自己的研究工具。
想領賞金,規則不寬鬆
這是限時挑戰,所有細節受 HackerOne 條款與 Cloudflare 的程式規則約束。幾個值得注意的要求:
- 必須先註冊 HackerOne 並同意條款才能參與。
- 要透過授權的 POST 請求證明攻擊者可控的程式碼或命令執行,並用該 RCE 取得 /flag、在介面上完成驗證,再提交包含端點、完整 payload、請求順序和原始請求回應紀錄的私人報告。
- 獎勵要求繞過方法或 payload 具有實質差異;同樣的編碼、新的 flag 或重置都不算獨立發現,只有第一份完整可重現的報告被採納。
- 僅限挑戰主機名下受 WAF 保護的 /php/* 端點(僅限 POST),禁止 DoS、大量掃描、持久化等行為。收到 429 或 503 就該退避。
Cloudflare 也明言會記錄嘗試的 metadata 和請求 payload 以便分析,所以只能用測試資料。
對產品團隊的兩個提醒
第一,Cloudflare 自己把話說得很清楚:WAF 不是修補的替代品。回應阻擋可以防止資料落到攻擊者手上,但無法撤銷已經在 origin 上執行的動作。如果你跑 PHP,仍要跟進 PHP 官方安全公告並套用更新。
第二,這種「把防護拿出來讓人打」的做法,對任何做安全產品的人都是可參考的驗證方式——真實攻擊資料比內部測試更能檢驗規則假設。如果你想參與或只是觀察進展,挑戰頁面在 php-rce.cloudflare.app;一旦從 HackerOne 下架,挑戰即正式終止,最新狀態以 Cloudflare 的 HackerOne 頁面為準。
