警語:本文描述的測試是在網站擁有者邀請下進行的授權紅軍測試。隨意攻擊任何一個網站,很可能觸法。

目錄

你用 AI 建的網站,別人也能用 AI 拆

又到了週六資安日。

我有一個朋友的網站要上線了。他在資安這塊其實已經做了不少功課——上個月用 Claude Code 直接對源碼做白箱資安掃描,前後跑了三到四次。我又建議他用 Codex 換另一個模型重掃一輪,換一個腦袋看同一份程式碼,交叉驗證。最近他還簽了專業資安公司,準備做一次正式的付費滲透測試。

白箱掃了好幾輪、也準備花錢請專業的來,這個準備程度在我看過的專案裡算認真的了。

然後他看到我上週發的那篇文章——講 Qwen3.8-27B 開源三天之內社群就造出五個無護欄版本,842 道有害 prompt 拒答率歸零。他問了一句:「大考之前,能不能先找無護欄的 AI 做模擬考?」

為什麼一定要「無護欄」

我其實沒什麼紅軍經驗,但是對於無護欄 AI 的能力很有興趣。之前那篇文章拆過 abliteration 的技術細節和安全悖論,這裡只講跟紅軍直接相關的部分。

你去跟 Claude 說「幫我攻擊這個網站」,它會拒絕你。這不是它能力不夠,是安全護欄(guardrail)會擋住。商用模型經過 RLHF 訓練,碰到攻擊類指令就會觸發拒絕機制。就算你加上「我是授權的滲透測試人員」這類前綴,多數情況下它還是會禮貌地跟你說不行。

白箱掃描沒有這個問題——你只是叫 AI 讀程式碼、找 bug,它不需要「攻擊」任何東西。但黑箱測試的本質就是模擬攻擊者,你需要 AI 真的去戳、去試、去送惡意 payload。護欄一擋,整件事就做不下去。

社群有一個叫 huihui 的貢獻者,專門做「abliteration」——用技術手段把模型的安全訓練移除,保留原本的能力但不再拒絕指令。Qwen3.8-27B 的 huihui 版本就是這樣來的。模型本身的推理能力跟原版一樣,只是不會在你說「幫我測試 SQL injection」的時候跟你講大道理。

選 27B 這個大小是因為它跑得動本地推論,不需要送到雲端 API。紅軍測試的 log 裡面會有目標網站的完整架構和漏洞細節,這些東西你不會想讓它經過任何第三方伺服器。

黑箱規則:只給一個 URL

我跟朋友約好時間,請他給我一個公開網址。不告訴我用什麼框架、什麼語言、什麼資料庫、部署在哪裡。我只要一個 URL。純黑箱。

這是黑箱測試的核心——模擬一個完全不了解目標的外部攻擊者。白箱是拿著源碼找 bug,黑箱是站在門外往裡看。兩種方法找到的東西不一樣,互補的。

朋友丟了一個 URL 給我。我把 RTX 5090 + Qwen3.8-27B Huihui 版開工,把 URL 貼進 prompt,然後跟 AI 說:去。

AI 先畫出地圖

我不知道該期待什麼,因為這真的是我人生中第一次比較正經的紅軍測試。

結果前三分鐘的產出就讓我嚇了一跳。

AI 把整個前端架構元件都列出來了。不是隨便列幾個頁面那種,是結構化的拆解:每一個主要區塊裡面大概有多少個元件、每個元件用什麼技術實作、串了哪些第三方 SaaS 服務,名稱全部標出來。

三分鐘。只給一個 URL。沒有源碼、沒有文件、沒有任何內部資訊。

那麼容易嗎?

換成人工來做這件事,一個有經驗的 pentester 大概也要花個十幾二十分鐘翻 network tab、看 JS bundle、試各種路徑。AI 把這整段偵察壓縮到三分鐘以內,而且產出是結構化的——直接就是可以放進報告的格式。

前兩個有意義的 finding 在 30 分鐘出現

偵察完之後,AI 開始逐一測試它發現的攻擊面。

30 分鐘後,它找到兩個我覺得可以寫進正式報告的 finding。這裡說的「有意義」,指的是會偷資料、會 DoS、會 script ingestion 這個等級的問題——不是「建議你加個 CSP header」那種。

而且這兩個問題,在之前三四次白箱掃描裡都沒有被抓到。

為什麼白箱沒抓到?

這件事讓我印象最深。但我想講的不是「黑箱比白箱強」——不是這樣的。

重點是:白箱和黑箱根本在看不同的東西。

白箱像在工廠裡檢查每一顆螺絲有沒有鎖緊。黑箱像站在馬路上看這台車開過來的時候有沒有哪裡在漏油。兩邊看的不是同一件事,找到的問題也不會重疊。

白箱看的是程式碼:邏輯錯誤、hardcoded secret、不安全的依賴版本、race condition。這些是它的主場,AI 拿著源碼逐行審查,效率非常高。

黑箱看的是部署後的行為:server 的回應 header 洩漏了框架版本、API endpoint 的錯誤處理回傳了太多資訊、某個 SaaS 的整合沒有鎖好權限、CORS 設定太寬鬆。這些東西在源碼裡可能完全正確,但部署上去之後,跟真實環境一組合,問題就出來了。你不從外面打一次,永遠不會知道。

所以結論不是「白箱不夠好要換黑箱」,而是兩個都要做,因為它們的盲區剛好互補

人開始協作:登入 / 刷卡

跑完未登入的測試之後,AI 碰到了一面牆:很多功能需要登入才能存取。

這時候我就跟朋友一起參與了。我們在網站上註冊了兩個測試帳號,讓 AI 能夠進到登入後的功能區域。然後我們一起跑了幾條 business flow——實際走過使用者會走的完整流程。甚至為了測試金流相關的功能,我還刷了 100 元。

基本上整個流程它測得很細。有些它從外面拿不到的資訊,也會請我開 DevTool 拉資訊來確認。它雖然一個文件都沒有看到,但是 10 分鐘後,我覺得 AI 把整個金流怎麼串的都搞清楚了。

這段需要人介入的原因很實際:AI 可以自己填表單、送請求,但註冊帳號和刷卡這種事情,你需要人在旁邊確認授權。而且有些 business logic 的漏洞,你不實際走一遍完整流程是發現不了的。

兩小時:結束

最後挑出 10 個問題。重大問題我請 AI 挑兩個 bug,實際執行攻擊,網站留下 script ingestion log。收工。

整體對我來說很有娛樂性。

這一步很重要。紅軍報告如果只寫「這裡可能有漏洞」,說服力有限。你需要 proof of concept——實際證明這個漏洞可以被利用,並且留下證據。AI 成功做到了:它能理解漏洞的利用方式,能組裝出完整的攻擊鏈,能判斷什麼樣的證據足以證明問題的存在。

效率對照

階段 時間 產出
偵察(架構分析) 3 分鐘 完整前端架構圖、元件清單、SaaS 服務識別
未登入測試 30 分鐘 2 個可寫進報告的 finding
登入後測試 約 90 分鐘 business flow 測試、金流測試
PoC 驗證 測試末段 2 個 bug 的實際利用 + 留痕
合計 約 2 小時 10 個問題、2 個 PoC 留痕

這是一個人加一個 AI 兩小時的產出。對比請資安公司做同樣的事情,時程通常是以「天」為單位的。

當然,專業 pentester 的深度和廣度一定比我們這次強很多。但作為「大考前的模擬考」,這個效率已經超出我的預期。

體感:指哪打哪

整體來說,AI 很聽話。你說測 API 權限控制,它就去測。你說看表單有沒有 XSS,它就去試各種 payload。基本上在「做事」這個層面,它的能力沒有任何問題。

但有時候它明明發現問題了,卻停住不動。

不是 crash,不是 timeout,就是頓在那裡等。我必須推一把,給明確指示它才繼續。

我感覺 abliterated 的模型,似乎不是完全沒有猶豫。道德鋼印似乎還在。不是護欄擋住,比較像是模型對「要不要真的執行這一步」有殘留的不確定性。需要人在關鍵時刻做決定。

這反而讓我覺得比較安心——至少它不是完全失控的工具。

細思極恐

我不是資安專家。我只是一個會寫程式、對資安有基本概念的人。

我的對手也是用 AI 白箱掃過四五次的人。但我拿著無護欄 AI,只給一個 URL,兩小時抓到 10 個問題,留痕兩個。

反過來想:如果一個有一點資工底子的人都能做到這件事,那一個真正的攻擊者呢?

Qwen3.8-27B 的出現,極大降低了 Opus 等級模型的部署成本。隨著無護欄模型的能力越來越強,VibeCoding 產出的網站大概是最容易被攻擊的目標。VibeCoding 的核心是快速產出可用的東西,資安應該不在 99% VibeCoding 網站的考量範圍裡。

之前寫過一篇關於 Mythos 用社交工程攻擊真人的文章,那是 AI 自主決定去攻擊。這次不一樣——這次是人指揮 AI 去做授權的安全測試。但底層的能力是同一套。AI 能用來建,也能用來拆。現在看起來,拆的門檻比建的門檻低很多。

給 VibeCoding 做產品的人

白箱掃描是基本功,但不夠。 至少跑一次黑箱。不用先請專業的(雖然最後還是該請),先用無護欄 AI 自己掃一輪。花兩小時,可能就救你一個嚴重漏洞。

無護欄模型跑本地。 不要把紅軍測試的 prompt 和結果送到任何雲端 API。你的測試 log 裡面有目標的完整架構和漏洞列表,這些東西洩漏出去就是一份攻擊手冊。27B 大小的模型在一般 GPU 上就跑得動。

找一個有資工底子的朋友幫你看。 不需要資安專家。就像我這次的經驗——第一次做、提示詞也不算高效,但兩小時還是找到了東西。AI 做大部分的苦工,人做判斷和方向引導。

白箱和黑箱一起做,盲區剛好互補。 白箱找邏輯層的問題,黑箱找部署層和配置層的暴露。兩種方法的盲點不一樣,合起來才是完整的。


潘朵拉的盒子已經打開了——開源、免費、一張消費級顯卡就能跑。你的 VibeCoding 網站準備好了嗎?


常見問題 Q&A

Q: 為什麼做黑箱紅軍測試(Black-box Red Team Testing)一定要用無護欄模型?

商用模型經過 RLHF(Reinforcement Learning from Human Feedback,人類回饋強化學習)訓練,碰到攻擊類指令就會觸發安全護欄(Guardrail)拒絕你。你跟 Claude 說「幫我攻擊這個網站」,它會拒絕——不是能力不夠,是被設計成不能做。就算加上「我是授權的滲透測試人員」這類前綴,多數情況還是會被擋。黑箱測試的本質就是模擬攻擊者,你需要 AI 真的去戳、去送惡意 payload,護欄一擋整件事就做不下去。所以要用 abliteration(消融技術)處理過的版本,保留模型原本的推理能力但移除拒絕機制。

Q: 白箱掃描(White-box Scanning)已經跑了好幾次,為什麼還是會漏掉問題?

白箱和黑箱根本在看不同的東西,盲區剛好互補(Complementary Blind Spots)。白箱像在工廠裡檢查每一顆螺絲有沒有鎖緊,看的是程式碼層面:邏輯錯誤、hardcoded secret、不安全的依賴版本。黑箱像站在馬路上看車開過來有沒有漏油,看的是部署後的行為:server 回應 header 洩漏框架版本、API 錯誤處理回傳太多資訊、CORS 設定太寬鬆。文章裡的案例就是白箱掃了三四次都沒抓到的問題,黑箱 30 分鐘就找到兩個可以寫進正式報告的 finding。結論不是換掉白箱,是兩個都要做。

Q: 兩小時的 AI 紅軍測試具體產出了什麼?

時間軸是這樣的:前 3 分鐘 AI 就畫完整個前端架構圖(Architecture Mapping),列出每個區塊的元件數量、技術實作、串接的第三方 SaaS 服務。30 分鐘後出現前兩個有意義的 finding——「有意義」指的是會偷資料、會 DoS、會 script ingestion 這個等級,不是「建議你加個 CSP header」那種。後面 90 分鐘加入登入後測試和金流測試。最後合計 10 個問題,其中 2 個做了 PoC 驗證(Proof of Concept,概念驗證)並在網站上留痕。對比專業資安公司做同樣的事,時程通常以「天」為單位。

Q: 為什麼紅軍測試要用本地推論(Local Inference),不能送雲端 API?

你的紅軍測試 log 裡面有目標網站的完整架構和漏洞列表,這些東西洩漏出去就是一份攻擊手冊。選 27B 這個大小就是因為它在一般消費級 GPU 上跑得動,不需要送到任何第三方伺服器。用 RTX 5090 加 Qwen3.8-27B huihui 版,所有 prompt 和結果都留在本機,不經過任何雲端。這是資安測試的基本紀律——測試本身不能製造新的洩漏風險。

Q: Abliteration(消融)處理過的模型真的完全沒有安全限制嗎?

不完全是。文章裡有一個很有意思的觀察:abliterated 的模型有時候明明發現問題了,卻停住不動,不是 crash 也不是 timeout,就是頓在那裡等。作者的判斷是道德鋼印(Moral Imprint)似乎還有殘留,不是護欄擋住,比較像模型對「要不要真的執行這一步」有殘留的不確定性,需要人在關鍵時刻推一把做決定。這反而是好事——至少它不是完全失控的工具,人還是在做最後的判斷和方向引導。