:用Pikachu靶場通關(guān)暴力破解與文件上傳)
直接實操過Pikachu靶場的人應(yīng)該都有這種體會它不像DVWA那么“溫和”也不像DVWS那種純漏洞環(huán)境那么單調(diào)而是把常見Web漏洞按場景拆開每個模塊都帶交互和數(shù)據(jù)流非常適合拿來練Burp Suite的抓包、改包、重放、爆破這一套基本功。這篇文章不打算講泛泛的“什么是Burp”而是用通關(guān)Pikachu的真實路徑把從暴力破解到文件上傳這一路會踩的坑、容易被忽略的細節(jié)、以及排查思路完整捋一遍給正準備上手的新手一個可以直接照著走的實操路線。這篇內(nèi)容適合三類人剛裝好Burp Suite但不知道從哪個靶場下手的初學者已經(jīng)刷過一部分靶場但總在攔截、編碼、繞WAF這些環(huán)節(jié)卡住的人以及想帶新人入門需要一份帶避坑點的實戰(zhàn)參考的帶隊者。整個通關(guān)過程全部在本地靶場環(huán)境完成不涉及任何真實目標所有操作只圍繞漏洞原理、請求/響應(yīng)分析、繞過技巧和修復(fù)建議展開。1. 內(nèi)容整體設(shè)計與思路拆解1.1 為什么要選Pikachu作為Burp Suite的練習靶場很多新手一上來就對著DVWA的“Command Injection”或者“SQL Injection”猛練結(jié)果發(fā)現(xiàn)要么是環(huán)境太老、PHP報錯一堆要么是關(guān)卡難度跳躍太大Burp的Proxy還沒來得及熟悉就陷入了“不知道哪里出錯”的僵局。Pikachu的設(shè)計思路不太一樣它把漏洞場景拆成了“暴力破解”“XSS”“CSRF”“SQL注入”“越權(quán)”“文件上傳”等獨立模塊每個模塊內(nèi)部又有清晰的關(guān)卡遞進比如“基于表單的暴力破解”和“帶驗證碼的暴力破解”拆開練。這種顆粒度非常適合配合Burp Suite的各個功能去逐個擊破。另外一點Pikachu的環(huán)境依賴非常簡單。它就是一個PHP項目只需要Apache/Nginx加MySQL就能跑起來。比起那些要Docker Compose拉好幾個容器的靶場Pikachu本地部署的故障點少很多對新手來說很不友好——我這里說的“不友好”是褒義因為在一個足夠簡單、可控的環(huán)境里你才能把注意力全部放在Burp的請求流程和漏洞原理上而不是浪費在折騰環(huán)境本身。注意Pikachu自帶的部分漏洞場景在真實環(huán)境中已經(jīng)很難直接利用但作為理解原理和練習Burp操作方式的載體它的價值依然很高。尤其適合練習“如何分析一個請求”“如何判斷漏洞觸發(fā)點”“如何構(gòu)造有效載荷”。1.2 用Burp Suite通關(guān)的整體思路先抓包、再分析、后構(gòu)造Burp Suite在Pikachu靶場上的核心作用可以歸納成一句話把瀏覽器和服務(wù)器之間的HTTP交互透明化然后讓你能在中間做任何修改。整個通關(guān)路徑如果畫成一條線大概是這樣的啟動Burp配置瀏覽器代理確認能抓到Pikachu的HTTP請求。針對每個漏洞模塊先正常操作一遍抓取基線流量搞清楚請求里哪些參數(shù)是可變的、哪些是關(guān)鍵字段。用Repeater對關(guān)鍵請求做手動修改測試不同參數(shù)值、不同編碼方式、不同請求方法。使用Intruder做自動化測試比如暴力破解的用戶名字典、密碼字典或者文件上傳時對文件名/Content-Type做fuzz。綜合分析響應(yīng)狀態(tài)碼、響應(yīng)體長度、報錯信息判斷漏洞是否真的能觸發(fā)。最后回到漏洞成因和修復(fù)建議上理解這個漏洞是怎么被引入的。這套思路看起來簡單但實操中有一個關(guān)鍵細節(jié)經(jīng)常被新手忽略不是所有需要改的請求都能在Proxy里直接看到有些場景需要你先在Burp里手動轉(zhuǎn)發(fā)或者修改Host頭、Content-Length、Cookie等信息才能真正到達漏洞觸發(fā)點。比如Pikachu的越權(quán)模塊普通操作只能看到自己的數(shù)據(jù)但你在Burp里改一下參數(shù)值就能看到其他人的數(shù)據(jù)這就是“越權(quán)”的本質(zhì)。1.3 為什么推薦用社區(qū)版Burp Suite就夠了不少新手第一反應(yīng)是去找Pro版覺得功能多才安心。實際上通關(guān)Pikachu社區(qū)版完全夠用核心功能一個不缺Proxy、Repeater、Decoder、Comparer以及Intruder的基礎(chǔ)模式。Pro版多的主動掃描、Burp Scanner這些功能在這個階段反而容易讓你形成“掃描器依賴”弱化手動分析請求的能力。Pikachu這種靶場最大的價值就是讓你理解“為什么會漏洞”“漏洞長什么樣”而不是讓你學會“按一下掃描按鈕然后看報告”。我用社區(qū)版把Pikachu的暴力破解、XSS、SQL注入、越權(quán)、文件上傳全部通關(guān)過沒有一次因為功能缺失而卡住。需要用的“字典”完全可以從本地生成或從開源項目獲取沒必要一開始就依賴商業(yè)功能。2. 環(huán)境準備與開局配置2.1 Pikachu靶場的本地部署Pikachu的部署方式根據(jù)你的系統(tǒng)環(huán)境略有差異。最簡單的方案是直接裝一個集成的PHP環(huán)境比如Windows下的小皮面板、macOS下的MAMP或者Linux下直接用apt裝Apache、MySQL、PHP。項目本身不需要networking配置也不需要額外的域名綁定放在網(wǎng)站根目錄下訪問http://localhost/pikachu即可。數(shù)據(jù)庫初始化是新手最容易卡住的一步。Pikachu需要在MySQL里創(chuàng)建一個數(shù)據(jù)庫然后導(dǎo)入項目根目錄下提供的SQL文件。這里有一個非常容易踩的坑PHP版本太新會導(dǎo)致MySQL連接失敗。我遇到過最典型的情況是PHP 8.x下面老版本mysqli函數(shù)行為變化導(dǎo)致初始化頁面白屏解決辦法是換用PHP 7.4版本或者修改數(shù)據(jù)庫連接配置里不支持的方法。啟動頁面會顯示“初始化”入口點了之后它會自動建表、插入初始數(shù)據(jù)。初始化完成后頁面會顯示所有漏洞模塊的入口這時候就可以開始配置Burp了。如果你看到數(shù)據(jù)庫連接報錯優(yōu)先檢查MySQL服務(wù)是否啟動、數(shù)據(jù)庫賬號密碼是否和配置項一致這兩點占90%的故障原因。2.2 Burp Suite與瀏覽器的代理配置Burp Suite默認監(jiān)聽127.0.0.1:8080。瀏覽器側(cè)我建議直接用Firefox單獨配一個帶代理的Profile不要動全局系統(tǒng)代理這樣日常上網(wǎng)和靶場操作互不干擾。Firefox設(shè)置里找到“網(wǎng)絡(luò)設(shè)置”手動配置代理HTTP代理填127.0.0.1端口填8080勾選“同時代理HTTPS”然后訪問http://burp下載CA證書安裝到“證書機構(gòu)”里這樣HTTPS流量才能被正常解密。這里有個細節(jié)容易被忽略安裝CA證書時一定要確認它被授予了“信任此證書以標識網(wǎng)站”的用途。如果安裝之后Burp的Proxy面板里還是只能看到CONNECT請求看不到真正的GET/POST內(nèi)容基本就是證書信任沒生效。還有一個常見問題是瀏覽器插件沖突比如某些廣告攔截插件會直接阻斷對burp域名的訪問導(dǎo)致證書根本下載不下來。2.3 驗證代理鏈路是否正常配置完成后先不要急著去點靶場功能先在Burp的Proxy-HTTP history里確認目標流量。具體操作是瀏覽器里訪問Pikachu首頁然后回到Burp看到一條GET /pikachu/index.php的請求記錄展開看Raw標簽里的請求頭、響應(yīng)頭確認Host、User-Agent、Cookie這些字段都在就說明代理鏈路已經(jīng)完全打通。如果你在這里發(fā)現(xiàn)請求只有TCP連接記錄沒有HTTP應(yīng)用層數(shù)據(jù)通常就是證書問題或代理端口被占用。檢查方法很簡單換一個端口比如8081重新配代理再訪問一次八成能解決如果還不行看看是不是系統(tǒng)里裝了別的代理工具占用了8080端口。在Linux/macOS下可以用lsof -i:8080查端口占用Windows下用netstat -ano | findstr 8080。3. 暴力破解模塊通關(guān)全記錄3.1 基于表單的暴力破解Burp抓包與Repeater分析Pikachu的暴力破解模塊第一關(guān)是“基于表單的暴力破解”提交方式是POST表單字段通常是username和password點擊登錄后Burp會抓到一條POST請求。把這個請求發(fā)送到Repeater點發(fā)送響應(yīng)里會直接顯示“登錄失敗”或者“用戶名或密碼錯誤”之類的提示。這個關(guān)卡的目的不是讓你真的爆破而是讓你理解“功能本身沒有做任何防爆破機制”。你可以先手動改一下密碼觀察響應(yīng)是否出現(xiàn)差異然后把它發(fā)送到Intruder把username和password兩個參數(shù)設(shè)為payload位置。這里要說明一點不需要兩個變量都爆破Pikachu內(nèi)置的用戶名列表是有限的而且極大概率就是admin、test這種你可以固定usernameadmin只對password做字典爆破效率更高。實操心得真正動手時建議先把響應(yīng)碼和響應(yīng)長度加到Intruder的Settings選項里勾選“Grep-Match”并把“登錄成功”這個關(guān)鍵詞放進去這樣每次爆破的結(jié)果都會直接標注是否有匹配項不需要肉眼看幾千條響應(yīng)。3.2 帶驗證碼的暴力破解有沒有繞過思路第二關(guān)是“帶驗證碼的暴力破解”很多新手在這一關(guān)會把驗證碼當作不可逾越的障礙其實Pikachu的這個關(guān)卡有一個典型的邏輯漏洞驗證碼的校驗和登錄表單的校驗是分開的而且驗證碼不強制刷新。什么意思就是你可以先正常獲取一次驗證碼然后在抓包里把這個驗證碼的參數(shù)固定住反復(fù)提交登錄請求只要服務(wù)器在同一個會話里沒有強制更新驗證碼你就可以帶著同一個驗證碼做無限次爆破。用Burp實現(xiàn)這個操作非常直接。先正常登錄一次把一個帶驗證碼的POST請求抓到發(fā)送到Intruderpayload位置設(shè)置在密碼字段驗證碼字段的值保留你剛才看到的那四個字符不要設(shè)為變量也不需要重新獲取。這樣爆破過程中服務(wù)器校驗驗證碼是通過了爆破點只集中在密碼上。這里要特別提醒一下這個繞過技巧只適用于這個關(guān)卡設(shè)計的“驗證碼不刷新”漏洞真實系統(tǒng)中大部分驗證碼都會隨會話或提交次數(shù)刷新千萬別把這個經(jīng)驗直接搬到真實系統(tǒng)上去。學習這個關(guān)卡的重點是理解一個安全機制驗證碼如果設(shè)計得不完整會如何被攻擊者繞過以及該怎么設(shè)計才有效驗證碼應(yīng)隨會話綁定、一次性使用、失敗后強制刷新。3.3 token防爆破Base64解碼的隱藏細節(jié)Pikachu的第三個暴力破解關(guān)卡引入了token機制。每次請求都會帶一個token參數(shù)正常邏輯下這個token是一次性的每次刷新頁面或請求都會生成新token攻擊者如果每次爆破都要重新獲取token爆破效率會大幅下降。但這個關(guān)卡有一個典型設(shè)計缺陷token是放在表單里一起提交的而且生成方式?jīng)]有與會話狀態(tài)強綁定。在實際操作時我建議用Burp的“Extract from response”正則提取功能來處理這種場景。具體做法是先用Burp訪問一次登錄頁面響應(yīng)里能找到一個token字段的值在Intruder的Payload設(shè)置里選擇“Recursive Grep”類型從每次登錄請求的響應(yīng)中自動提取新的token作為下一次請求的參數(shù)值。這個操作是學習Burp高級用法的好機會。它涉及到一個關(guān)鍵點Intruder的Payload Processing里可以設(shè)置“提取正則”而請求參數(shù)中token的位置必須和提取出的值一一對應(yīng)。如果提取的token總是差幾位需要看一下HTML源碼里token字段是不是有HTML實體轉(zhuǎn)義比如amp;之類需要先解碼再使用。3.4 暴力破解的字典準備與命中率優(yōu)化爆破能不能成功字典質(zhì)量占了很大比重。Pikachu作為靶場它的賬號密碼都藏在初始數(shù)據(jù)里不是純隨機字符串所以字典里包含常見弱口令比如admin、123456、password、qwerty、admin888這類的命中率極高。不建議拿那種幾十GB的全量字典去跑一是慢二是沒有必要。小字典跑完只需要幾分鐘足夠讓你明白Intruder的工作方式。還有一個優(yōu)化點如果你知道目標站點用的PHP那么在爆破時可以把候選密碼同時做一次MD5加密變形再提交。因為部分站點的登錄邏輯是先對密碼做MD5再比對數(shù)據(jù)庫。Pikachu的關(guān)卡里未必用得上但如果你后面轉(zhuǎn)到其他靶場這個思路會非常常見。Burp的Payload Processing里有一個“Hash”選項可以直接選MD5一步到位。4. 越權(quán)漏洞模塊從水平越權(quán)到垂直越權(quán)4.1 水平越權(quán)的Burp操作路徑越權(quán)模塊在Pikachu里的設(shè)計非常經(jīng)典。水平越權(quán)的場景通常是“查看個人信息”正常登錄一個普通賬號點擊“查看訂單”或“我的信息”請求URL里會帶一個參數(shù)比如id1。把這個請求抓到Repeater里直接把id1改成id2或id3再發(fā)送如果響應(yīng)返回了另一個賬號的數(shù)據(jù)水平越權(quán)就實錘了。這個操作在Burp里沒有任何難度難點在于你能不能意識到這個點值得測。很多新手刷靶場時只顧著找SQL注入、XSS看到id參數(shù)第一反應(yīng)是加單引號看報錯而不是先試一個“越權(quán)”的值。這是思維習慣問題安全測試不只是找“參數(shù)能注入什么”更要問“這個參數(shù)代表什么資源我能不能訪問別人的資源”。水平越權(quán)的修復(fù)方案其實也很明確服務(wù)端必須校驗當前登錄用戶的身份與資源屬主是否匹配單純依賴前端傳參或隱藏字段等于把關(guān)卡大門鑰匙交給了攻擊者。4.2 垂直越權(quán)的高危場景與請求分析垂直越權(quán)在Pikachu里的表現(xiàn)是“普通用戶訪問管理員功能”。靶場會把管理員操作入口隱藏起來正常界面上看不到但通過查看頁面源碼、JS文件或者直接觀察HTTP歷史就能發(fā)現(xiàn)管理功能對應(yīng)的URL路徑。在Burp里找到這個路徑用普通用戶的Cookie去訪問如果服務(wù)器沒有做權(quán)限校驗直接返回管理頁面那就意味著任意普通用戶都能做管理員操作。實際測試中有一個容易被忽略的小問題管理操作可能是POST請求而不只是GET請求。如果你只改URL而沒有復(fù)制POST的數(shù)據(jù)包服務(wù)器可能返回405或拒絕訪問。正確做法是把普通用戶能訪問的某個POST請求抓到在Repeater里把路徑改成管理員路徑同時保留原來的Content-Type、Cookie、請求體格式再根據(jù)響應(yīng)做調(diào)整。垂直越權(quán)的修復(fù)要義是“服務(wù)端兩層校驗”先校驗會話是否有效再校驗角色是否有權(quán)限不能只在前端隱藏按鈕。Pikachu的這個模塊非常適合練習“從響應(yīng)差異推斷權(quán)限”的判斷力。4.3 越權(quán)測試中的請求對比技巧Burp的Comparer功能在越權(quán)測試中非常有用。把正常請求的響應(yīng)和修改參數(shù)后的響應(yīng)分別發(fā)送到Comparer選擇對比它能標出兩個文本之間的差異行。很多新手判斷越權(quán)時會不知道“響應(yīng)到底有沒有變”因為頁面里有大量靜態(tài)內(nèi)容只有用戶名字段變了。而Comparer能直接高亮哪個位置變了一眼就能判斷越權(quán)是否成功。我在實際操作里還會配合一個技巧在Burp的Logger或者History里把同一步操作的兩個不同響應(yīng)截圖保存下來方便回頭復(fù)盤。特別是當你同時測水平越權(quán)和垂直越權(quán)時很容易搞混哪個賬號訪問了哪個資源記錄好請求序號和對應(yīng)Cookie能少走很多彎路。5. 文件上傳模塊前端校驗與Content-Type繞過5.1 上傳場景中的“前端限制”識別方法文件上傳關(guān)卡的第一種限制是前端校驗比如頁面里寫了acceptimage/jpeg或者JS里檢查了文件擴展名。這種限制只存在于瀏覽器端直接繞過方式很簡單用Burp攔截上傳請求把原本的filenamea.jpg改成filenamea.php同時把Content-Type從image/jpeg改成application/octet-stream或其他后端可能接受的值。實操時要注意一個細節(jié)不要漏掉請求里的Content-Disposition字段。有些靶場的校驗邏輯會把文件名和Content-Type一起校驗?zāi)愀牧薴ilename卻沒改Content-Disposition里的文件名格式可能不會觸發(fā)漏洞因為后端讀取文件名的方式和你想象的不一樣。典型案例如下Content-Disposition: form-data; namefile; filenameshell.php Content-Type: application/x-php如果這個請求被后端接受了并且上傳路徑直接拼接了shell.php那就意味著擴展名校驗被完全繞過。如果響應(yīng)返回了上傳后的路徑你在瀏覽器里訪問這個路徑就能看到PHP文件被解析出來的效果。Pikachu的文件上傳模塊還經(jīng)常結(jié)合“二次渲染”問題也就是上傳成功后服務(wù)器會重新生成一張圖片把原來的內(nèi)容替換掉這時候直接上傳一句話木馬就會被清空。要繞過二次渲染得先上傳一張正常圖片下載被渲染后的版本再把PHP代碼注入到渲染后圖片的未被修改的區(qū)塊里然后再上傳。這個操作對新手來說比較進階可以先放著等理解了基礎(chǔ)上傳繞過再回頭試。5.2 Content-Type校驗繞過的典型場景第二種限制是Content-Type校驗服務(wù)端只允許image/jpeg類型的文件上傳。這種關(guān)卡的操作核心是上傳一個文本文件攔截請求把Content-Type改成image/png同時把文件名改成.php。如果服務(wù)器只檢查Content-Type不檢查擴展名那么上傳的PHP文件就能直接執(zhí)行。這里有一個新手特別容易犯的錯在Burp里改完Content-Type但忘記在文件內(nèi)容前面加一個合法的圖片文件頭。部分靶場和真實應(yīng)用會讀取文件頭來校驗?zāi)?shù)比如必須包含F(xiàn)F D8 FF E0或GIF89a。如果只改Content-Type而文件內(nèi)容全是?php ... ?某些嚴格校驗的關(guān)卡會直接報“不是圖片文件”于是你以為繞不過去。解決辦法就是構(gòu)造一個“圖片馬”文件頭是合法圖片的字節(jié)后面拼上PHP代碼再配合修改Content-Type和擴展名。Pikachu里還有一個場景是“黑白名單校驗”。白名單只允許jpg/png/gif后綴黑名單屏蔽了php、asp、jsp等后綴。如果只對上一種可以用:、.phtml、.php3、.php5或者大小寫變形來繞過。如果兩種都做那就需要找一個同時不在黑名單、又在白名單內(nèi)的后綴或者用上傳.htaccess覆蓋配置的方法讓服務(wù)器把某個擴展名當作PHP解析。5.3 上傳路徑探測與WebShell驗證上傳成功后必須找到文件的實際路徑才算通關(guān)。Pikachu上傳接口的響應(yīng)里通常會直接返回存儲路徑。如果響應(yīng)里沒有可以通過目錄遍歷猜測比如http://localhost/pikachu/upload/下直接訪問shell.php。拿到路徑之后用瀏覽器訪問看是否返回了PHP代碼執(zhí)行結(jié)果。如果返回的是空白頁可能代碼本身沒輸出如果返回的是源碼說明服務(wù)器沒有解析PHP而是把文件當純文本給了瀏覽器這種情況就是“上傳成功但不可執(zhí)行”需要換個擴展名或換一種繞過方式。注意本地靶場測試WebShell沒問題但在任何真實環(huán)境里未經(jīng)授權(quán)上傳可執(zhí)行文件都是違法行為。本文所有示例都限定在Pikachu本地靶場請勿挪作他用。5.4 文件上傳漏洞的修復(fù)思路從修復(fù)角度看一個安全的文件上傳功能至少要做這幾件事擴展名白名單校驗并且不能只比較后綴要同時校驗MIME類型和文件內(nèi)容頭。存儲路徑不可預(yù)測最好帶隨機文件名文件擴展名不能跟隨原始文件名。上傳目錄禁止執(zhí)行腳本權(quán)限比如Nginx里去掉location的fastcgi處理Apache里禁止php處理器。這些修復(fù)思路Pikachu里當然不會給你自動修好但你在每個關(guān)卡通關(guān)后如果能自己思考“如果是開發(fā)者我怎么堵上這個洞”那刷靶場的價值才真正體現(xiàn)出來了。Burp Suite在這個過程中只是工具真正練的是你的“請求分析-漏洞判斷-繞過分層-修復(fù)思考”這條鏈路。6. 其他高頻關(guān)卡補充RCE與SQL注入的Burp輔助思路6.1 RCE模塊命令拼接與Burp的編碼轉(zhuǎn)換Pikachu的RCE遠程命令執(zhí)行關(guān)卡會讓你在輸入框里提交一個IP地址后端用它執(zhí)行ping命令。測試思路很簡單如果輸入127.0.0.1正?;仫@是ping的結(jié)果如果輸入127.0.0.1 whoami并且回顯里出現(xiàn)了當前用戶信息說明命令拼接漏洞存在。Burp在這個關(guān)卡里作用不大因為它就是一個手動提交的過程直接用瀏覽器也行。但有一點值得用Burp當命令里包含空格、管道符、分號時某些后端或WAF會做簡單過濾。如果直接被攔截可以嘗試用URL編碼、雙重URL編碼或Tab替代空格。Burp的Decoder可以快速做URL編碼不用手動轉(zhuǎn)換。比如whoami的URL編碼版本是who%61mi如果后端只是簡單匹配關(guān)鍵字這種編碼就能繞過盡管PHP底層接收到的值仍然是原始的字符。6.2 SQL注入用Burp觀察報錯信息與請求變化Pikachu的SQL注入關(guān)卡分數(shù)字型和字符型。用Burp輔助的意義在于你可以清楚看到輸入內(nèi)容是如何拼接進SQL語句的。比如數(shù)字型注入的URL是/?id1把id1改成id1 and 12如果響應(yīng)內(nèi)容和id1不一樣說明參數(shù)參與了SQL查詢改成id1 union select 1,2,3看回顯的位次再逐步替換為字段查詢。新手在這個模塊里最普遍的問題是頁面返回空白不知道是不是自己輸入姿勢不對。我的建議是先在Burp里發(fā)送一遍原始請求作為基線再發(fā)送注入請求對比響應(yīng)體的長度和內(nèi)容。如果響應(yīng)長度變化很大說明語法方向可能是對的如果完全一致那可能是閉合符號不對需要試、、)等不同閉合方式。Burp的Comparer在這里又派上用場了把兩個響應(yīng)拖進去對比差異比自己一行行看HTML源碼高效得多。6.3 用Burp保存并復(fù)盤每個模塊的請求記錄打靶場最容易出現(xiàn)的問題就是“打完了就忘”。我自己養(yǎng)成的一個習慣是每通關(guān)一個模塊就把關(guān)鍵請求從Burp里導(dǎo)出存成JSON或txt文件標注漏洞類型、繞過方法、響應(yīng)特征。后期復(fù)習的時候不需要重新搭建靶場直接翻這些請求就能回憶整個攻擊鏈。尤其像Pikachu這種多模塊靶場模塊間思路互相獨立不整理很快就會亂。如果你還想更進一步可以用Burp的Project文件保存整個會話。這樣以后打開Project能直接看到歷史請求、Intruder攻擊結(jié)果、Repeater里的所有修改記錄。唯一的建議是把Project文件放在專門目錄里不要混合多個靶場的流量否則項目文件會越滾越大檢索效率反而下降。7. 常見問題與排查技巧實錄7.1 問題速查表問題現(xiàn)象可能原因解決步驟Burp抓不到Pikachu請求代理沒生效 / 證書問題先確認瀏覽器代理再裝Burp證書最后看PROXY history里有無CONNECT之外請求靶場初始化白屏PHP版本太高 / MySQL連接異常換PHP7.4檢查數(shù)據(jù)庫賬號密碼確認MySQL服務(wù)已啟動Intruder爆破時響應(yīng)全一樣Payload位置選錯檢查請求里username/password是否真的設(shè)成了變量可能在重復(fù)提交固定值上傳PHP文件不解析存儲目錄不可執(zhí)行 / 響應(yīng)頭類型錯誤換擴展名確認上傳目錄是否允許腳本執(zhí)行訪問路徑是否帶了解析邏輯帶token的爆破永遠失敗token提取正則錯誤先手動請求一次確認token在響應(yīng)中出現(xiàn)的格式再在Intruder里設(shè)置正確的正則提取越權(quán)測試全返回200鑒權(quán)邏輯在接口層已處理換一個資源ID檢查Cookie是否被重置或改成不同方法再試7.2 新手最常踩的三個坑第一個坑是過度依賴掃描器。Burp的社區(qū)版沒有主動掃描很多新手就想著去裝插件或買Pro實際上Pikachu的每個漏洞模塊用手動分析半小時就能搞定。掃描器會告訴你“這里有SQL注入”但不會告訴你“為什么是這里、這個注入怎么利用、后端查詢邏輯長什么樣”。這些只能靠手動分析請求來理解。第二個坑是遇到攔截就放棄。Pikachu的RCE和文件上傳模塊里很多新手一看到“上傳失敗”或“命令被過濾”就卡住不知道該怎么繼續(xù)。其實辦法很簡單回到Burp看請求看看攔截的是哪個參數(shù)、哪個層級。如果服務(wù)端用的是正則匹配你換一種大小寫或編碼方式通常就能過去??ㄗ〔豢膳驴ㄗ≈鬀]有嘗試路徑才可怕。第三個坑是忽略響應(yīng)狀態(tài)碼的細節(jié)。200不代表成功302更不代表失敗。比如文件上傳成功之后服務(wù)器可能返回302重定向到列表頁但真正的文件已經(jīng)存到服務(wù)器上了如果你是看著瀏覽器頁面判斷的就會漏掉這個成功信號。把Burp里狀態(tài)碼和響應(yīng)體結(jié)合著分析比只看瀏覽器顯示可靠得多。7.3 獨家避坑技巧善用Burp的Logger和Project對比功能最后分享一個我用得最多的組合拳Burp的Logger Project保存。Logger可以記錄所有經(jīng)過Burp的請求包括那些你沒有在Proxy里仔細看的請求比如CSS、JS、圖片資源里的Cookie信息。在刷Pikachu時偶爾會出現(xiàn)“某個隱藏接口被某個JS調(diào)用但頁面上看不到”的情況從Logger里就能快速翻出來。Project保存則讓我能在換機器、換環(huán)境后繼續(xù)之前的進度不會因為重新配置而丟數(shù)據(jù)。我個人的習慣是把同一個靶場的所有測試放在一個Project文件里每個模塊起一個標簽頁RCE的嘗試、上傳的嘗試都保留著復(fù)盤時一目了然。8. 寫在最后的幾句大實話刷完P(guān)ikachu之后我對Burp Suite的掌握程度比之前刷十篇教程都扎實。原因很簡單靶場逼著你去分析每個請求、構(gòu)造每個payload、調(diào)試每個失敗的嘗試這種“問題導(dǎo)向”的學習效率遠高于“功能導(dǎo)向”的教程瀏覽。要我說Burp Suite真正難的不是學功能按鈕而是培養(yǎng)一種“請求敏感度”看到一個參數(shù)能立刻想到它可以怎么改看到一個響應(yīng)能判斷出漏洞是否觸發(fā)。Pikachu的價值就是幫你把這個敏感度練出來。等你能不看教程獨立通關(guān)暴力破解和文件上傳模塊的時候再看真實環(huán)境的Web應(yīng)用思路就會完全不一樣。