戰(zhàn):從零到一掌握白帽子漏洞挖掘與變現(xiàn))
1. 項目概述SRC挖洞一個可以“變現(xiàn)”的安全技能如果你對網(wǎng)絡(luò)安全感興趣或者想找一份能帶來實(shí)際收益的副業(yè)那么SRCSecurity Response Center安全應(yīng)急響應(yīng)中心挖洞絕對是一個值得投入的方向。這聽起來可能有點(diǎn)神秘但說白了就是利用你的技術(shù)知識在各大互聯(lián)網(wǎng)公司設(shè)立的官方漏洞收集平臺上合法地尋找并提交它們產(chǎn)品中的安全漏洞。一旦漏洞被確認(rèn)你不僅能獲得一筆可觀的賞金名字還可能登上平臺的“白帽子”榜單這對于個人技術(shù)成長和職業(yè)履歷都是極佳的背書。我剛開始接觸時也覺得門檻很高但實(shí)際走下來發(fā)現(xiàn)這是一條有清晰路徑可循的路。這篇內(nèi)容我就把自己從零開始到成功提交第一個有效漏洞、拿到第一筆賞金的全過程以及其中踩過的坑和總結(jié)的經(jīng)驗毫無保留地分享給你。無論你是安全專業(yè)的學(xué)生還是對網(wǎng)絡(luò)安全充滿好奇的開發(fā)者甚至是完全零基礎(chǔ)的小白只要你有耐心和學(xué)習(xí)的熱情都能通過這篇指南邁出SRC挖洞的第一步。2. 核心思路與前期準(zhǔn)備別急著動手先想清楚很多人一聽到“挖漏洞”第一反應(yīng)就是打開掃描器一頓狂掃或者直接去網(wǎng)上找“漏洞利用代碼”碰運(yùn)氣。這是最典型的誤區(qū)也是新手最容易“顆粒無收”的原因。SRC挖洞尤其是想穩(wěn)定拿到賞金本質(zhì)上是一場信息差和技術(shù)理解的較量。你的對手不是系統(tǒng)而是其他同樣在尋找漏洞的研究者。因此前期的策略規(guī)劃比技術(shù)本身更重要。2.1 目標(biāo)選擇如何找到你的“新手村”面對幾十上百個SRC平臺新手最容易犯的錯就是盲目選擇大型、熱門的平臺比如那些頭部互聯(lián)網(wǎng)巨頭的SRC。這些平臺雖然獎金豐厚但競爭也異常激烈漏洞被報告得差不多了剩下的都是“硬骨頭”對技術(shù)要求極高。我的建議是將目標(biāo)鎖定在“垂直領(lǐng)域”和“新興業(yè)務(wù)”的SRC上。垂直領(lǐng)域SRC例如教育SRC.edu.cn域名相關(guān)、金融科技SRC、汽車SRC、IoT設(shè)備SRC等。這些領(lǐng)域的業(yè)務(wù)邏輯相對獨(dú)特通用的掃描器往往覆蓋不全存在更多“盲區(qū)”。比如教育SRC中在線考試系統(tǒng)、論文查重、校園一卡通等業(yè)務(wù)就可能存在邏輯漏洞。新興業(yè)務(wù)SRC關(guān)注那些剛剛推出新功能、新應(yīng)用或新子域名的公司。新代碼上線初期往往是安全測試的“黃金窗口期”開發(fā)人員可能還沒來得及進(jìn)行全面的安全審計。技巧你可以訂閱一些SRC平臺的公告或關(guān)注其社交媒體看看他們最近在推廣什么新活動、新業(yè)務(wù)線或者哪些業(yè)務(wù)板塊剛剛完成了重大更新。2.2 信息收集你的“作戰(zhàn)地圖”質(zhì)量決定成敗確定了目標(biāo)SRC后千萬不要直接對主域名進(jìn)行測試。第一步也是最重要的一步是進(jìn)行細(xì)致入微的信息收集。這就像打仗前偵察地形地圖越詳細(xì)勝算越大。子域名枚舉使用工具如subfinder,amass,OneForAll等盡可能多地收集目標(biāo)的所有子域名。一個不起眼的dev.example.com或test-api.example.com往往比www.example.com更容易存在安全問題。端口與服務(wù)探測對發(fā)現(xiàn)的子域名和IP進(jìn)行端口掃描nmap,masscan識別上面運(yùn)行的服務(wù)Web服務(wù)器、數(shù)據(jù)庫、緩存服務(wù)、API接口等。一個開放的6379端口Redis或9200端口Elasticsearch可能就是突破口。目錄與文件發(fā)現(xiàn)使用dirsearch,gobuster,ffuf等工具進(jìn)行目錄爆破尋找后臺登錄入口、配置文件如.git,.env,phpinfo.php、備份文件等。技術(shù)棧指紋識別識別網(wǎng)站使用的技術(shù)如前端框架React, Vue、后端語言PHP, Java, Python、中間件Nginx, Apache, Tomcat、數(shù)據(jù)庫MySQL, PostgreSQL以及具體的版本號。知道版本號后可以去搜索該版本是否存在公開的已知漏洞CVE。JS文件分析現(xiàn)代Web應(yīng)用大量邏輯藏在JavaScript文件中。使用像LinkFinder這樣的工具從JS文件中提取隱藏的API端點(diǎn)、接口路徑、甚至是硬編碼的密鑰、令牌。這是發(fā)現(xiàn)“影子API”的寶藏之地。資產(chǎn)關(guān)聯(lián)與歸屬確認(rèn)使用whois查詢、SSL證書透明度日志Censys, Crtsh等發(fā)現(xiàn)與目標(biāo)公司相關(guān)的其他域名或IP資產(chǎn)這些可能屬于同一個安全測試范圍。注意信息收集一定要在目標(biāo)SRC公開的測試范圍內(nèi)進(jìn)行。通常SRC會有明確的“測試范圍”Scope聲明只允許測試列出的域名和業(yè)務(wù)。測試范圍外的資產(chǎn)屬于違規(guī)測試可能導(dǎo)致賬號被封禁甚至法律風(fēng)險。務(wù)必仔細(xì)閱讀每一家SRC的規(guī)則。2.3 工具與環(huán)境搭建工欲善其事必先利其器你不需要成為所有工具的大師但需要一套順手的基礎(chǔ)裝備。以下是我推薦的新手必備工具棧大部分是開源或免費(fèi)的。操作系統(tǒng)推薦使用Kali Linux或Parrot OS。它們是專為安全測試設(shè)計的發(fā)行版預(yù)裝了海量工具。你也可以在虛擬機(jī)或Windows的WSL2中安裝。代理工具Burp Suite Community Edition社區(qū)版是核心中的核心。它攔截、查看和修改瀏覽器與服務(wù)器之間的所有HTTP/HTTPS流量是你分析請求、測試漏洞的“手術(shù)刀”。學(xué)會使用它的Proxy、Repeater、Intruder、Scanner模塊是基礎(chǔ)。瀏覽器與插件瀏覽器Chrome 或 Firefox。插件FoxyProxy方便切換代理、Wappalyzer技術(shù)棧識別、Hack-Tools、EditThisCookieCookie編輯。綜合掃描器謹(jǐn)慎使用像AWVS、Nessus這樣的商業(yè)掃描器功能強(qiáng)大但不推薦新手依賴。一方面它們噪音大容易被WAF攔截另一方面它們找到的往往是中低危的通用漏洞如信息泄露、舊的CMS漏洞很難在SRC獲得高額賞金。你應(yīng)該把掃描器當(dāng)作輔助信息收集和初步篩選的工具而不是主力。自定義腳本與工具隨著經(jīng)驗增長你會發(fā)現(xiàn)自己經(jīng)常需要重復(fù)某些操作比如批量測試某個參數(shù)。這時學(xué)習(xí)用Python配合requests庫寫一些簡單的自動化腳本效率會大大提升。3. 漏洞挖掘?qū)崙?zhàn)從低垂的果實(shí)到邏輯的深水區(qū)有了清晰的目標(biāo)和充足的信息我們就可以開始實(shí)戰(zhàn)了。建議新手按照以下優(yōu)先級和路徑來嘗試先易后難建立信心。3.1 第一站信息泄露與配置錯誤這類漏洞技術(shù)門檻最低但卻是SRC中非常常見且容易被忽略的入口。它們本身可能賞金不高但泄露的信息往往能為后續(xù)更深入的攻擊提供關(guān)鍵線索。敏感文件泄露手動或通過目錄爆破工具尋找.git目錄、.DS_Store、phpinfo.php、WEB-INF/web.xml、備份文件.bak,.zip,.tar.gz、配置文件.env,config.php等。如果發(fā)現(xiàn).git目錄可訪問可以使用GitHacker這類工具嘗試還原整個源代碼這是“寶藏級”發(fā)現(xiàn)。錯誤信息泄露故意觸發(fā)程序錯誤如輸入超長字符串、非法參數(shù)觀察返回的錯誤信息是否暴露了數(shù)據(jù)庫結(jié)構(gòu)、服務(wù)器路徑、SQL語句片段、API密鑰等。CORS配置錯誤如果目標(biāo)API的Access-Control-Allow-Origin響應(yīng)頭被設(shè)置為*或包含了你可控的域名就可能存在CORS漏洞導(dǎo)致用戶數(shù)據(jù)被惡意網(wǎng)站竊取。測試方法是在Burp中修改Origin請求頭觀察響應(yīng)頭。源碼注釋泄露查看網(wǎng)頁源代碼開發(fā)者留下的注釋里有時會包含后臺地址、默認(rèn)密碼、接口說明等。云存儲桶配置錯誤對于使用AWS S3、阿里云OSS、騰訊云COS等服務(wù)的應(yīng)用如果存儲桶權(quán)限配置為“公開可讀”可能導(dǎo)致大量用戶數(shù)據(jù)、源碼、日志泄露。工具如s3scanner,cloud_enum可以幫助發(fā)現(xiàn)這類問題。3.2 核心突破點(diǎn)業(yè)務(wù)邏輯漏洞這是SRC賞金的“富礦”也是最能體現(xiàn)研究者思維深度的地方。它不依賴特定的技術(shù)棧而是源于對業(yè)務(wù)流程理解的偏差。你需要像一個“惡意用戶”一樣去思考。越權(quán)漏洞水平越權(quán)在擁有A用戶權(quán)限的情況下能否操作B用戶的資源例如修改請求中的用戶ID參數(shù)訪問他人訂單、個人信息、聊天記錄等。垂直越權(quán)在擁有普通用戶權(quán)限的情況下能否執(zhí)行管理員功能例如普通用戶能否訪問后臺管理接口、能否調(diào)用需要特定權(quán)限的API。測試方法注冊兩個測試賬號A和B。用A賬號登錄進(jìn)行某項操作如查看訂單詳情用Burp抓包。然后在Burp Repeater中用B賬號的會話令牌Cookie/Token替換A的重放請求看是否能成功訪問A的數(shù)據(jù)或執(zhí)行操作。流程繞過漏洞支付漏洞修改支付金額為負(fù)數(shù)或極小數(shù)在支付成功回調(diào)時嘗試重復(fù)請求以重復(fù)充值跳過支付環(huán)節(jié)直接訪問“支付成功”后的頁面或接口。驗證碼繞過驗證碼是否在客戶端生成或校驗是否可重復(fù)使用是否在第一次驗證后后續(xù)請求就不再校驗嘗試將驗證碼參數(shù)置空、刪除或修改為固定值。步驟跳過多步驟業(yè)務(wù)流程如填寫信息-上傳資料-提交審核能否直接通過修改URL或參數(shù)跳到最后一步提交競爭條件漏洞在并發(fā)場景下由于代碼邏輯處理不當(dāng)導(dǎo)致狀態(tài)異常。經(jīng)典案例是“抽獎”或“搶購”同時發(fā)起多個請求可能繞過庫存檢查導(dǎo)致一人多次中獎或超賣。測試工具使用Burp Suite的Turbo Intruder擴(kuò)展或者自己編寫Python多線程/異步腳本在極短時間內(nèi)向目標(biāo)接口發(fā)送大量相同或序列化的請求。3.3 技術(shù)型漏洞需要扎實(shí)的基礎(chǔ)知識當(dāng)信息泄露和邏輯漏洞的“低垂果實(shí)”被摘得差不多時你需要向更技術(shù)性的領(lǐng)域深入。這需要你系統(tǒng)學(xué)習(xí)一些基礎(chǔ)知識。SQL注入雖然老生常談但在參數(shù)過濾不嚴(yán)的查詢中依然存在。不要只依賴掃描器。手動測試時關(guān)注所有用戶可控的輸入點(diǎn)GET/POST參數(shù)、Cookie、HTTP頭。使用、、\等字符嘗試觸發(fā)錯誤再用AND 11、AND 12或SLEEP(5)等Payload判斷是否存在注入以及注入類型。工具sqlmap是神器但要學(xué)會它的高級參數(shù)如--level,--risk,--tamper繞過WAF。跨站腳本反射型XSS在SRC中價值通常不高但存儲型XSS和基于DOM的XSS仍值得關(guān)注。測試時不要只彈alert(1)要思考利用場景能否竊取Cookie能否模擬用戶操作如轉(zhuǎn)賬、發(fā)帖在富文本編輯器、文件上傳文件名、文件內(nèi)容、個人信息欄等處重點(diǎn)測試。SSRF當(dāng)應(yīng)用提供了從網(wǎng)絡(luò)獲取外部資源的功能時如圖片上傳URL、網(wǎng)頁抓取、PDF生成就可能存在SSRF。嘗試讓服務(wù)器訪問內(nèi)網(wǎng)服務(wù)http://127.0.0.1:8080或云元數(shù)據(jù)接口如AWS的http://169.254.169.254。文件上傳漏洞繞過前端和后端的文件類型檢查。嘗試修改文件擴(kuò)展名shell.jpg.php、文件內(nèi)容添加圖片頭GIF89a、Content-Type請求頭或者利用解析漏洞如IIS的shell.jpg;.php。4. 報告撰寫與提交臨門一腳決定成敗找到漏洞只是成功了一半一份清晰、專業(yè)、可復(fù)現(xiàn)的漏洞報告是你能拿到賞金的關(guān)鍵。糟糕的報告可能導(dǎo)致漏洞被降級、忽略甚至拒絕。4.1 報告的核心要素一份優(yōu)秀的SRC漏洞報告通常包含以下部分你可以把它當(dāng)作一個模板漏洞標(biāo)題簡明扼要如“【目標(biāo)域名】某處水平越權(quán)漏洞可查看任意用戶訂單詳情”。漏洞等級根據(jù)SRC自身的定級標(biāo)準(zhǔn)初步評估為“高危”、“中危”或“低危”。如果不確定可先標(biāo)中危。漏洞類型如“業(yè)務(wù)邏輯漏洞-水平越權(quán)”。影響范圍明確指出受影響的URL、功能模塊或用戶群體。漏洞詳情這是報告的主體。步驟一以測試賬號A登錄進(jìn)入個人中心-訂單列表。步驟二點(diǎn)擊任意訂單查看詳情Burp抓包發(fā)現(xiàn)請求中包含參數(shù)order_id12345。步驟三將數(shù)據(jù)包中的Cookie替換為測試賬號B的Cookie或?qū)rder_id參數(shù)修改為屬于B用戶的訂單ID67890。步驟四重放請求服務(wù)器成功返回了訂單ID為67890的詳細(xì)信息本應(yīng)無權(quán)限訪問。關(guān)鍵證據(jù)必須提供截圖或視頻。截圖應(yīng)包含Burp的請求/響應(yīng)全貌、瀏覽器地址欄URL。視頻能更直觀地展示整個復(fù)現(xiàn)過程。請求與響應(yīng)數(shù)據(jù)粘貼關(guān)鍵的HTTP請求原始數(shù)據(jù)和服務(wù)器響應(yīng)數(shù)據(jù)可適當(dāng)脫敏敏感信息。漏洞修復(fù)建議給出建設(shè)性意見。例如“建議在服務(wù)器端對每一次數(shù)據(jù)訪問請求都進(jìn)行嚴(yán)格的會話用戶身份與目標(biāo)資源所屬權(quán)的校驗。”時間線記錄你發(fā)現(xiàn)漏洞的時間。4.2 提交前后的注意事項遵守規(guī)則再次確認(rèn)你的測試行為在對方許可的范圍內(nèi)沒有進(jìn)行DDoS、暴力破解、掃描非授權(quán)資產(chǎn)、破壞數(shù)據(jù)等違規(guī)操作。一洞一報一個報告只提交一個漏洞。如果同一個功能點(diǎn)存在多個問題如同時存在越權(quán)和XSS可以放在一個報告里說明但需清晰分點(diǎn)。溝通技巧提交后耐心等待。如果審核人員對漏洞有疑問通常會通過平臺留言。回復(fù)時要禮貌、清晰提供對方要求補(bǔ)充的信息。切忌催促或使用不禮貌的語言。避免重復(fù)報告提交前可以簡單在互聯(lián)網(wǎng)上搜索一下目標(biāo)系統(tǒng)的公開漏洞信息但主要依賴SRC平臺自身的查重機(jī)制。5. 進(jìn)階之路與持續(xù)學(xué)習(xí)成功提交并收獲第一個漏洞后你才算真正入門。接下來要做的是構(gòu)建體系化的知識結(jié)構(gòu)和培養(yǎng)敏銳的“漏洞嗅覺”。5.1 構(gòu)建知識體系Web安全基礎(chǔ)必須系統(tǒng)學(xué)習(xí)OWASP Top 10理解每一種漏洞的原理、利用方式和防御手段。推薦閱讀《白帽子講Web安全》。網(wǎng)絡(luò)協(xié)議深入理解HTTP/HTTPS、TCP/IP、DNS等協(xié)議。Burp里看到的每一個字段都要明白其含義。編程語言至少精通一門腳本語言Python用于編寫自動化測試工具。了解前端JavaScript、后端Java/PHP/Python/Go的基礎(chǔ)能幫助你更快地理解源碼和邏輯。操作系統(tǒng)與數(shù)據(jù)庫熟悉Linux常用命令和Windows基礎(chǔ)了解SQL語法。5.2 培養(yǎng)漏洞嗅覺代碼審計嘗試閱讀開源項目的代碼學(xué)習(xí)從源代碼層面發(fā)現(xiàn)安全問題。可以從一些有已知漏洞的靶場項目如DVWA, WebGoat源碼看起。案例復(fù)盤多看看各大SRC公開的漏洞報告如補(bǔ)天、漏洞盒子等平臺的公開案例、安全社區(qū)如先知、Seebug的技術(shù)文章。思考“如果是我我會怎么發(fā)現(xiàn)這個漏洞”參與眾測與靶場在授權(quán)的眾測項目中實(shí)戰(zhàn)是提升最快的方式。平時也可以在PentesterLab,HackTheBox,TryHackMe等在線靶場練習(xí)。關(guān)注動態(tài)關(guān)注新的攻擊技術(shù)、新型漏洞如原型鏈污染、GraphQL注入、JWT安全等和新的工具。6. 常見問題與避坑指南這條路我走過下面這些坑希望你都能繞過去。問題1測試時賬號被封了怎么辦原因可能觸發(fā)了WAF或風(fēng)控策略的頻繁請求限制或者進(jìn)行了暴力破解等攻擊性測試。對策測試時控制請求頻率在Burp中設(shè)置限速Throttle。對于登錄、驗證碼等接口避免高頻測試。準(zhǔn)備多個測試賬號。如果只是IP被封更換IP或使用代理即可如果是賬號被封且確認(rèn)測試行為合規(guī)可以嘗試聯(lián)系SRC客服說明情況。問題2漏洞被判定為“重復(fù)”、“已知”或“不予收錄”怎么辦原因別人比你早提交漏洞在內(nèi)部已知但未修復(fù)漏洞危害極低或不符合收錄標(biāo)準(zhǔn)如Self-XSS、無實(shí)際危害的CORS配置。對策心態(tài)放平這非常正常。將其視為一次學(xué)習(xí)機(jī)會去思考如何更快地發(fā)現(xiàn)漏洞或者尋找更隱蔽、危害更大的利用方式。專注于那些需要深度交互和邏輯推理的漏洞這類漏洞的重復(fù)率相對較低。問題3挖了很久一個漏洞都沒找到很沮喪。原因目標(biāo)太難、方法不對、或耐心不足。對策回歸基礎(chǔ)換一個更容易的目標(biāo)如新興SRC。從信息收集開始一步步來確保每一步都做到位。加入一些安全交流社群和同行討論思路有時別人的一句話就能點(diǎn)醒你。記住挖洞很大程度上是“運(yùn)氣經(jīng)驗”的結(jié)合持續(xù)投入時間經(jīng)驗增長了“運(yùn)氣”自然會來。問題4工具掃描出一堆“漏洞”提交后全是“誤報”。原因過度依賴自動化工具沒有進(jìn)行人工驗證。對策掃描器的結(jié)果永遠(yuǎn)是“線索”而不是“結(jié)論”。對每一個掃描器報出的點(diǎn)都必須手動驗證其真實(shí)性和可利用性。思考這個漏洞是否真的存在能否實(shí)際觸發(fā)能造成什么具體影響一個關(guān)鍵的實(shí)操心得養(yǎng)成“數(shù)據(jù)包管理”的好習(xí)慣。在Burp中為每一個目標(biāo)單獨(dú)建立一個Project使用Scope功能限定目標(biāo)范圍。對每一個測試的請求如果發(fā)現(xiàn)可疑點(diǎn)立即在Burp的Target - Site map中右鍵添加注釋Notes描述你的測試想法和結(jié)果。這樣一周后回頭看你的工作記錄依然清晰避免重復(fù)勞動和思路中斷。這個習(xí)慣能極大提升你的測試效率和深度。