漏洞挖掘入門(mén):從靶場(chǎng)到越權(quán)實(shí)戰(zhàn)的完整學(xué)習(xí)路徑)
很多人以為挖漏洞是一件特別“黑客”的事黑底綠字、噼里啪啦敲鍵盤(pán)、幾秒鐘就拿到服務(wù)器權(quán)限。實(shí)際干這行久了你會(huì)發(fā)現(xiàn)大部分時(shí)間都在重復(fù)看請(qǐng)求包、翻文檔、改參數(shù)、驗(yàn)證猜想跟你平時(shí)調(diào)試代碼沒(méi)什么兩樣只是目標(biāo)從“讓功能跑起來(lái)”變成了“讓功能以預(yù)期之外的方式跑起來(lái)”。這篇東西是寫(xiě)給完全零基礎(chǔ)的小白的從漏洞挖掘到底是什么、需要學(xué)哪些基礎(chǔ)到用靶場(chǎng)練手、找到你人生第一個(gè)漏洞的完整路徑一次說(shuō)透。不搞虛的全是能直接落地執(zhí)行的東西。1. 先潑盆冷水漏洞挖掘的真實(shí)面貌和入場(chǎng)底線(xiàn)1.1 它不像電影里那樣更像“找茬游戲”漏洞挖掘的本質(zhì)是找出系統(tǒng)在設(shè)計(jì)、實(shí)現(xiàn)或配置上的缺陷并想辦法讓這個(gè)缺陷產(chǎn)生實(shí)際影響。聽(tīng)起來(lái)很高大上落到具體操作上其實(shí)就幾類(lèi)事——改參數(shù)看反應(yīng)、篡改請(qǐng)求看響應(yīng)、輸入特殊字符看報(bào)錯(cuò)、兩個(gè)賬號(hào)交叉訪(fǎng)問(wèn)看數(shù)據(jù)。整個(gè)過(guò)程有很強(qiáng)的重復(fù)性和枯燥感經(jīng)常一個(gè)點(diǎn)測(cè)半天什么都沒(méi)發(fā)現(xiàn)這是常態(tài)。我見(jiàn)過(guò)太多新人報(bào)著“學(xué)黑客”的心態(tài)沖進(jìn)來(lái)結(jié)果學(xué)了三天覺(jué)得無(wú)聊就放棄了。真正能留下來(lái)的人靠的不是對(duì)“酷”的追求而是對(duì)破解邏輯的執(zhí)念。如果你喜歡那種“別人沒(méi)想到的路徑你想到了”的成就感那這行適合你如果你只想要電影里那種炫酷效果建議趁早換個(gè)方向。1.2 入場(chǎng)先立規(guī)矩授權(quán)是生命線(xiàn)這是整個(gè)行業(yè)最嚴(yán)肅的一條底線(xiàn)必須放在最前面。挖漏洞這件事沒(méi)有授權(quán)的測(cè)試是違法行為不管你的動(dòng)機(jī)是好奇、學(xué)習(xí)還是想證明自己都一樣。合法的路子有三條在你自己搭建的靶場(chǎng)環(huán)境里練習(xí)本地虛擬機(jī)在專(zhuān)門(mén)提供合法練手靶場(chǎng)的在線(xiàn)平臺(tái)上練習(xí)這類(lèi)平臺(tái)規(guī)則明確寫(xiě)著“歡迎測(cè)試”參加企業(yè)或平臺(tái)發(fā)起的漏洞眾測(cè)項(xiàng)目其規(guī)則明確定義了測(cè)試范圍和授權(quán)邊界尤其針對(duì)最后一條眾測(cè)項(xiàng)目和應(yīng)急響應(yīng)平臺(tái)在選擇目標(biāo)時(shí)要先確認(rèn)測(cè)試范圍聲明超出范圍的系統(tǒng)碰都不能碰哪怕是和你目標(biāo)的同一個(gè)IP段都不行。這不是小題大做新手最容易在這里出事。1.3 挖漏洞需要的心態(tài)建設(shè)另一個(gè)容易勸退新人的點(diǎn)是“概率感”。你以為挖漏洞是“一挖一個(gè)準(zhǔn)”實(shí)際是“挖一百個(gè)點(diǎn)碰到一個(gè)”。很多在眾測(cè)平臺(tái)混了多年的老手也不是每天都有產(chǎn)出。所以給自己定一個(gè)合理預(yù)期很重要前三個(gè)月以“弄懂原理、跑通靶場(chǎng)”為目標(biāo)而不是“必須挖到真實(shí)系統(tǒng)的漏洞”。我的經(jīng)驗(yàn)是——把第一個(gè)真實(shí)漏洞的時(shí)間線(xiàn)放在系統(tǒng)學(xué)習(xí)后的第4到8個(gè)月是大多數(shù)人的正常節(jié)奏。2. 打地基這三樣?xùn)|西比工具重要十倍新手最大的誤區(qū)是一上來(lái)就裝一堆工具。工具只是放大你能力的杠桿不是能力本身。真正的地基是下面三個(gè)東西。2.1 HTTP與Web基礎(chǔ)不懂協(xié)議就沒(méi)法談漏洞90%以上的漏洞出現(xiàn)在Web應(yīng)用層而Web應(yīng)用的基礎(chǔ)就是HTTP協(xié)議。你需要搞明白下面這些概念而不是停留在“聽(tīng)過(guò)”的程度請(qǐng)求方法GET和POST的區(qū)別以及PUT、DELETE、OPTIONS這些方法在什么場(chǎng)景下會(huì)被服務(wù)器接受。比如一個(gè)只該用POST提交的表單你用GET也能提交成功這可能本身就是一個(gè)配置缺陷。狀態(tài)碼200、301、302、403、404、500每個(gè)狀態(tài)碼背后代表什么邏輯。特別是302重定向很多越權(quán)和邏輯漏洞就藏在重定向跳轉(zhuǎn)里。請(qǐng)求頭與響應(yīng)頭Cookie、Referer、X-Forwarded-For、Content-Type、Set-Cookie這些頭部字段每一項(xiàng)都可能成為漏洞入口。比如X-Forwarded-For這個(gè)頭很多新手不知道它表示“客戶(hù)端真實(shí)IP”導(dǎo)致它被濫用繞過(guò)IP限制。會(huì)話(huà)機(jī)制Cookie和Session的關(guān)系登錄狀態(tài)是怎么維持的Token是怎么校驗(yàn)的。邏輯漏洞重災(zāi)區(qū)。你要做到的程度是隨便抓一個(gè)網(wǎng)站的請(qǐng)求包能說(shuō)清楚每一行Header的含義、參數(shù)的作用、服務(wù)器的響應(yīng)過(guò)程。達(dá)不到這個(gè)程度之前先別碰工具。2.2 編程功底不要求精通但必須看得懂經(jīng)常有人問(wèn)“不懂編程能不能挖漏洞”答案是能但天花板極低。中級(jí)以上難度的漏洞幾乎都涉及代碼審計(jì)看不懂代碼就像蒙著眼走路。推薦按這個(gè)順序?qū)WHTML JavaScript看懂前端邏輯 → Python寫(xiě)腳本、理解爬蟲(chóng)和自動(dòng)化 → PHP/Java/Go挑一門(mén)主流后端語(yǔ)言看懂基礎(chǔ)語(yǔ)法。不要求能獨(dú)立開(kāi)發(fā)項(xiàng)目但至少要能看懂一段代碼里的SQL拼接過(guò)程判斷是否存在注入看懂變量從用戶(hù)輸入到敏感函數(shù)的完整流向用Python寫(xiě)一個(gè)自動(dòng)發(fā)請(qǐng)求、改參數(shù)的小腳本舉個(gè)例子看到下面這段代碼$id $_GET[id]; $sql SELECT * FROM users WHERE id . $id;你應(yīng)該能瞬間反應(yīng)出$id來(lái)自用戶(hù)輸入沒(méi)有經(jīng)過(guò)任何過(guò)濾直接拼接進(jìn)了SQL語(yǔ)句——這十有八九是個(gè)SQL注入點(diǎn)。這個(gè)反應(yīng)能力無(wú)法靠刷視頻獲得只能靠對(duì)語(yǔ)言的熟悉度積累。2.3 網(wǎng)絡(luò)基礎(chǔ)知道數(shù)據(jù)是怎么跑的就夠用網(wǎng)絡(luò)知識(shí)不需要達(dá)到網(wǎng)工水平但至少要理解IP和域名的關(guān)系、DNS解析過(guò)程、端口是干什么的、TCP和UDP有什么區(qū)別。因?yàn)槁┒赐诰虻那爸貌襟E“信息收集”必然涉及端口掃描和指紋識(shí)別如果你不知道開(kāi)放了3306端口意味著什么就錯(cuò)過(guò)了大量機(jī)會(huì)。我見(jiàn)過(guò)一個(gè)小白問(wèn)“為什么Nmap掃出來(lái)3389端口感覺(jué)很興奮”因?yàn)樗恢?389是遠(yuǎn)程桌面的默認(rèn)端口。這類(lèi)基礎(chǔ)知識(shí)不補(bǔ)上玩工具就是瞎玩。推薦花兩周時(shí)間過(guò)一遍計(jì)算機(jī)網(wǎng)絡(luò)教材的前四章重點(diǎn)放在傳輸層和應(yīng)用層。3. 從哪練手本地靶場(chǎng)是進(jìn)度最快的學(xué)習(xí)路徑地基打得差不多了下一步就是上手操作。強(qiáng)烈建議從本地靶場(chǎng)開(kāi)始而不是直接對(duì)著真實(shí)網(wǎng)站折騰。真實(shí)網(wǎng)站連授權(quán)都沒(méi)有等著你的不是漏洞而是法律責(zé)任。3.1 靶場(chǎng)怎么選給新手的對(duì)比清單我用一個(gè)表格整理目前主流的學(xué)習(xí)靶場(chǎng)各有側(cè)重點(diǎn)建議按順序練靶場(chǎng)名稱(chēng)難度等級(jí)核心內(nèi)容適合階段DVWA本地部署入門(mén)綜合漏洞練習(xí)含SQL注入、XSS、文件上傳等常見(jiàn)類(lèi)型新手第一個(gè)靶場(chǎng)Pikachu本地部署入門(mén)到進(jìn)階偏向Web漏洞原理練習(xí)自帶詳細(xì)漏洞說(shuō)明夯實(shí)原理階段sqli-labs本地部署入門(mén)到高級(jí)專(zhuān)攻SQL注入從基礎(chǔ)到繞過(guò)WAF全覆蓋專(zhuān)項(xiàng)提升注入能力WebGoat本地部署入門(mén)到進(jìn)階OWASP官方出品覆蓋Web安全全圖譜系統(tǒng)化學(xué)習(xí)在線(xiàn)靶場(chǎng)平臺(tái)動(dòng)態(tài)難度貼近真實(shí)系統(tǒng)環(huán)境有積分體系驗(yàn)證學(xué)習(xí)成果DVWA最好的一點(diǎn)是自帶安全等級(jí)切換低等級(jí)完全不過(guò)濾中等級(jí)開(kāi)始有基礎(chǔ)過(guò)濾高等級(jí)則是較嚴(yán)謹(jǐn)?shù)姆雷o(hù)。同一個(gè)漏洞你能直觀感受“過(guò)濾前后”的差異這對(duì)建立漏洞原理的感知極其有幫助。3.2 部署環(huán)境的兩個(gè)方案本地部署推薦用虛擬機(jī)不太建議在主力機(jī)上直接裝靶場(chǎng)環(huán)境。原因很簡(jiǎn)單——靶場(chǎng)本身包含大量漏洞代碼萬(wàn)一防護(hù)不到位被人掃描利用你的個(gè)人電腦就成了肉雞或跳板。用虛擬機(jī)做隔離出問(wèn)題了直接刪除重來(lái)。如果你對(duì)虛擬機(jī)不熟推薦另外一個(gè)思路用Docker一鍵起靶場(chǎng)。比如執(zhí)行下面這幾行命令一個(gè)SQli-Labs環(huán)境就起來(lái)了docker pull acgpiano/sqli-labs docker run -d --name sqli-labs -p 80:80 acgpiano/sqli-labs訪(fǎng)問(wèn)http://localhost就能開(kāi)始練習(xí)。Docker的好處是可重復(fù)構(gòu)建、環(huán)境干凈、不污染宿主機(jī)系統(tǒng)壞了刪掉容器重新跑一條命令就行。3.3 從靶場(chǎng)到實(shí)戰(zhàn)的認(rèn)知轉(zhuǎn)換靶場(chǎng)和真實(shí)系統(tǒng)的最大差異在于靶場(chǎng)明確告訴你“這里有問(wèn)題來(lái)挖”真實(shí)系統(tǒng)則一片模糊需要你自己判斷哪里有入口。所以練靶場(chǎng)的時(shí)候不要滿(mǎn)足于“把漏洞打出來(lái)”而是要做到每次打通一個(gè)漏洞用Word或筆記軟件記錄完整的請(qǐng)求包和響應(yīng)包標(biāo)注為什么這里存在漏洞嘗試不同繞過(guò)手法而不是只會(huì)用工具一鍵跑從第3個(gè)靶場(chǎng)開(kāi)始刻意練習(xí)“不打開(kāi)漏洞提示先自己判斷”的能力當(dāng)你發(fā)現(xiàn)某個(gè)靶場(chǎng)你已經(jīng)能不看提示挖出大部分漏洞并且能說(shuō)清每個(gè)漏洞的成因和修復(fù)方案時(shí)就可以進(jìn)入下一個(gè)階段了。4. 找到第一個(gè)漏洞的完整實(shí)操以越權(quán)漏洞為例我說(shuō)一個(gè)最適合零基礎(chǔ)找到“第一個(gè)漏洞”的漏洞類(lèi)型水平越權(quán)IDOR。它不需要復(fù)雜的注入語(yǔ)法不需要繞過(guò)過(guò)濾只需要理解“改了參數(shù)會(huì)怎樣”這一件事。在很多眾測(cè)項(xiàng)目中水平越權(quán)的發(fā)現(xiàn)率極高——因?yàn)楹芏嚅_(kāi)發(fā)者根本忘記做權(quán)限校驗(yàn)。4.1 第一步理解越權(quán)漏洞的本質(zhì)越權(quán)漏洞的核心是服務(wù)器在收到請(qǐng)求后沒(méi)有驗(yàn)證“當(dāng)前登錄的用戶(hù)是否有權(quán)限操作這個(gè)數(shù)據(jù)”。舉個(gè)例子你在某個(gè)系統(tǒng)里點(diǎn)開(kāi)自己的個(gè)人信息頁(yè)瀏覽器發(fā)出的請(qǐng)求是這樣的GET /user/profile?id1001服務(wù)器返回ID為1001的用戶(hù)資料這是正常的。但如果你把id1001改成id1002再發(fā)送一次服務(wù)器依然返回了對(duì)應(yīng)的資料——問(wèn)題出現(xiàn)了。你沒(méi)有通過(guò)任何管理員授權(quán)卻能查看其他用戶(hù)的個(gè)人數(shù)據(jù)這就叫水平越權(quán)。如果改成id1甚至能查到管理員的數(shù)據(jù)這就是更嚴(yán)重的垂直越權(quán)。4.2 第二步搭建一個(gè)測(cè)試環(huán)境新手沒(méi)必要去真實(shí)系統(tǒng)上驗(yàn)證這個(gè)邏輯也不該去自己在本地寫(xiě)一個(gè)極簡(jiǎn)的后端接口就能練習(xí)。假設(shè)你裝了PHP環(huán)境建一個(gè)user.php文件?php $id $_GET[id]; $conn new mysqli(localhost, root, password, testdb); $result $conn-query(SELECT username, phone, email FROM users WHERE id . $id); $row $result-fetch_assoc(); echo json_encode($row); ?這個(gè)接口故意沒(méi)有做“當(dāng)前登錄用戶(hù)與目標(biāo)用戶(hù)一致性”校驗(yàn)。你在瀏覽器訪(fǎng)問(wèn)user.php?id1看到自己再把參數(shù)改成id2如果能讀到別人的手機(jī)號(hào)和郵箱意味著你在真實(shí)場(chǎng)景中就觸發(fā)了水平越權(quán)。4.3 第三步用Burp Suite改包練習(xí)瀏覽器直接改URL參數(shù)雖然能驗(yàn)證但不夠“專(zhuān)業(yè)”而且真實(shí)場(chǎng)景中的越權(quán)參數(shù)往往藏在POST表單或JSON數(shù)據(jù)里。這時(shí)候就需要學(xué)會(huì)用抓包工具修改請(qǐng)求。Burp Suite是目前行業(yè)最主流的Web安全測(cè)試工具你只需要用到它的核心功能啟動(dòng)Burp Suite配置瀏覽器代理指向127.0.0.1:8080打開(kāi)Proxy的Intercept開(kāi)關(guān)此時(shí)所有瀏覽器請(qǐng)求會(huì)被截停在攔截到的請(qǐng)求里手動(dòng)修改id參數(shù)后再放行Forward觀察響應(yīng)包的變化我這里強(qiáng)調(diào)一下Burp Suite的用法是必須掌握的因?yàn)楹罄m(xù)幾乎所有Web漏洞挖掘都繞不開(kāi)它。哪怕是最簡(jiǎn)單的越權(quán)也需要通過(guò)它證明“我在不改其他任何東西、只改這一個(gè)參數(shù)的條件下讀取到了別人的數(shù)據(jù)”。這個(gè)“只改一個(gè)變量”的嚴(yán)謹(jǐn)性在提交漏洞報(bào)告時(shí)是關(guān)鍵的信任基礎(chǔ)。4.4 第四步嘗試SQL注入變體當(dāng)你把越權(quán)流程走順后可以再疊加一個(gè)概念SQL注入。同樣是上面的user.php如果你在參數(shù)里輸入1 AND 11頁(yè)面報(bào)錯(cuò)——說(shuō)明數(shù)據(jù)庫(kù)執(zhí)行了你傳入的SQL片段。再輸入1 UNION SELECT username, password, email FROM users-- -如果回顯出來(lái)一堆賬號(hào)密碼恭喜你同時(shí)拿下了一個(gè)聯(lián)合查詢(xún)注入。但是——SQL注入對(duì)新手來(lái)說(shuō)有比較陡的坡度涉及閉合方式、注釋符、列數(shù)判斷、聯(lián)合查詢(xún)匹配等多層概念。我建議把它放在第三個(gè)漏洞去學(xué)第一個(gè)漏洞還是老老實(shí)實(shí)用越權(quán)它的低門(mén)檻能幫你建立信心。4.5 第五步寫(xiě)出合格的漏洞報(bào)告找到漏洞不算完能把它表達(dá)清楚才算真正掌握。一個(gè)合格的漏洞報(bào)告應(yīng)該包含漏洞標(biāo)題簡(jiǎn)潔說(shuō)清楚位置和問(wèn)題比如“用戶(hù)中心接口存在水平越權(quán)可遍歷查看任意用戶(hù)手機(jī)號(hào)”危害等級(jí)根據(jù)數(shù)據(jù)敏感程度自評(píng)高/中/低漏洞地址完整的請(qǐng)求URL和方法復(fù)現(xiàn)步驟從打開(kāi)瀏覽器開(kāi)始一步一步寫(xiě)清楚操作過(guò)程包括關(guān)鍵請(qǐng)求包和響應(yīng)包截圖影響范圍多少個(gè)接口受影響、能拿到什么數(shù)據(jù)修復(fù)建議在服務(wù)端增加用戶(hù)與數(shù)據(jù)歸屬校驗(yàn)不能依賴(lài)前端參數(shù)寫(xiě)報(bào)告的習(xí)慣從第一天開(kāi)始練因?yàn)楸姕y(cè)平臺(tái)審核漏洞的標(biāo)準(zhǔn)就是看報(bào)告。漏洞真實(shí)但報(bào)告寫(xiě)得看不懂很可能被忽略你這個(gè)漏洞等于白挖。5. 新手最容易踩的坑這幾件事幫你提前避雷5.1 迷信“神器”和自動(dòng)化掃描器好多新人最喜歡問(wèn)的問(wèn)題是“有什么工具能一鍵掃出漏洞”?,F(xiàn)實(shí)是自動(dòng)化掃描器只能幫你找出最淺層的、已知模式的隱患比如基礎(chǔ)的數(shù)據(jù)庫(kù)報(bào)錯(cuò)注入。真實(shí)系統(tǒng)的高價(jià)值漏洞——邏輯越權(quán)、業(yè)務(wù)條件競(jìng)爭(zhēng)、權(quán)限繞過(guò)——幾乎沒(méi)有哪個(gè)掃描器默認(rèn)能發(fā)現(xiàn)因?yàn)樗鼈冃枰斫狻皹I(yè)務(wù)邏輯”。我在實(shí)際項(xiàng)目中見(jiàn)到太多掃描器報(bào)告里全是誤報(bào)真正需要人工分析的點(diǎn)一個(gè)都沒(méi)標(biāo)出來(lái)。掃描器可以作為信息收集的輔助但不要指望它替代你的思考。手動(dòng)測(cè)試時(shí)帶著一個(gè)思路去測(cè)比盲目跑1000個(gè)自動(dòng)化腳本有用得多。5.2 在不理解原理的情況下“背誦工具參數(shù)”有人學(xué)nmap就背“-sS;-sT;-sV;-O”學(xué)sqlmap就背“--batch--dbs--dump”問(wèn)起為什么用這些參數(shù)完全答不上來(lái)。這類(lèi)人做滲透測(cè)試遇到稍微變形的環(huán)境就全懵了。工具是幫助你驗(yàn)證猜想的不是幫你產(chǎn)生猜想的。正確的學(xué)習(xí)姿勢(shì)是知道你測(cè)的目標(biāo)是什么端口服務(wù)版本是否存在注入點(diǎn)再倒推用什么參數(shù)能滿(mǎn)足這個(gè)目的。5.3 練習(xí)時(shí)直接測(cè)試線(xiàn)上服務(wù)我在博客和社群里反復(fù)強(qiáng)調(diào)過(guò)好幾次仍然擋不住有人頭鐵。測(cè)試線(xiàn)上服務(wù)需要謹(jǐn)慎無(wú)授權(quán)就測(cè)試線(xiàn)上的行為既違反法律法規(guī)又違背行業(yè)道德。任何時(shí)刻你先確認(rèn)目標(biāo)是否有明確的授權(quán)測(cè)試許可。沒(méi)有許可再簡(jiǎn)單的測(cè)試也別去碰。拿靶場(chǎng)練出來(lái)的能力同樣可以在眾測(cè)平臺(tái)的正規(guī)項(xiàng)目里精進(jìn)。5.4 資料學(xué)了一堆動(dòng)手極少反映在學(xué)習(xí)路徑上的典型坑是硬盤(pán)里存了100G教程B站收藏了200個(gè)視頻GitHub上star了500個(gè)倉(cāng)庫(kù)打開(kāi)終端卻敲不出一條命令。安全是攻防對(duì)抗的學(xué)科必須“先手熟再理論”。先花一周把DVWA的SQL注入和XSS打通比看一個(gè)月視頻都有用。任何教程看到實(shí)操環(huán)節(jié)立刻暫停自己動(dòng)手敲一遍哪怕報(bào)錯(cuò)也是收獲。6. 從小白到能接眾測(cè)任務(wù)的進(jìn)階路線(xiàn)當(dāng)你完成了靶場(chǎng)、理解了常見(jiàn)漏洞原理后可以把目光投向眾測(cè)。這里我給一條相對(duì)平滑的路徑。6.1 從眾測(cè)平臺(tái)的小型企業(yè)項(xiàng)目開(kāi)始眾測(cè)平臺(tái)有很多小型企業(yè)的項(xiàng)目規(guī)則清晰都在標(biāo)定的授權(quán)范圍內(nèi)。這類(lèi)項(xiàng)目有一個(gè)好處安全建設(shè)相對(duì)薄弱漏洞點(diǎn)相對(duì)好找比較適合第一次試水的實(shí)戰(zhàn)者。而大廠(chǎng)自研系統(tǒng)的代碼質(zhì)量通常更高防御也更完善建議放后面再碰。挑選目標(biāo)時(shí)學(xué)會(huì)看規(guī)則哪些域名在你測(cè)試的授權(quán)范圍內(nèi)哪些測(cè)試手法不允許比如拒絕大規(guī)模掃描、禁止DoS測(cè)試提交報(bào)告要求是什么。規(guī)則不明確的項(xiàng)目寧可不動(dòng)手。6.2 大量閱讀公開(kāi)漏洞報(bào)告Writeup讀好的漏洞報(bào)告和安全圈高手帶你的效果差不多。可以從眾測(cè)平臺(tái)已公開(kāi)的水位報(bào)告、各類(lèi)CTF賽題解析、技術(shù)社區(qū)里帶有完整復(fù)現(xiàn)步驟的案例分析入手重點(diǎn)拆解三件事作者是如何想到這個(gè)測(cè)試點(diǎn)的、他的測(cè)試思路在哪個(gè)環(huán)節(jié)發(fā)生了重要轉(zhuǎn)向、他如何將簡(jiǎn)單的信息組合成一條完整的利用鏈??赐曛蟛挥眉敝詹貏?dòng)手復(fù)現(xiàn)一遍。復(fù)現(xiàn)成功才算真正吸收了。6.3 建立你自己的漏洞知識(shí)庫(kù)從第一天開(kāi)始我建議用筆記工具維護(hù)一份自己的漏洞筆記格式很簡(jiǎn)單漏洞類(lèi)型、觸發(fā)點(diǎn)、請(qǐng)求示例、響應(yīng)特征、修復(fù)方案、實(shí)戰(zhàn)案例。堅(jiān)持半年后這份筆記會(huì)成為你最寶貴的資產(chǎn)——因?yàn)樗皇浅瓉?lái)的知識(shí)而是你過(guò)濾之后留下的判斷模型。到后來(lái)你看一個(gè)新的功能模塊腦子會(huì)自動(dòng)匹配“這類(lèi)型的功能歷史上出現(xiàn)過(guò)哪些問(wèn)題”這就是直覺(jué)的來(lái)源。6.4 一個(gè)可參考的半年學(xué)習(xí)路線(xiàn)最后給一份我綜合自身經(jīng)驗(yàn)整理的路線(xiàn)以周為單位粗略劃分適合在校學(xué)生或業(yè)余時(shí)間充裕的上班族第1~2周補(bǔ)齊HTTP、前端基礎(chǔ)、Linux常用命令上手Burp Suite抓包工具第3~6周本地部署DVWA逐一通關(guān)SQL注入、XSS、文件上傳、命令執(zhí)行理解每個(gè)漏洞的前因后果第7~10周轉(zhuǎn)練Pikachu和sqli-labs嘗試不用提示獨(dú)立完成并開(kāi)始記錄自己的漏洞筆記第11~14周學(xué)習(xí)Python寫(xiě)請(qǐng)求腳本復(fù)現(xiàn)至少5篇公開(kāi)漏洞報(bào)告第15~20周挑選眾測(cè)平臺(tái)內(nèi)的低難度項(xiàng)目嘗試提交第一個(gè)有效漏洞第21~24周根據(jù)實(shí)戰(zhàn)反饋查漏補(bǔ)缺針對(duì)薄弱點(diǎn)定向鉆研調(diào)整節(jié)奏完全沒(méi)問(wèn)題關(guān)鍵是大方向別亂??傊痪湓?huà)收尾別急著當(dāng)“黑客”先學(xué)會(huì)當(dāng)“工程師”。底層功底扎實(shí)了漏洞會(huì)在你意想不到的地方自己冒出來(lái)。