:從文件操作到滲透測試的實(shí)戰(zhàn)指南)
簡介《Kali Linux 常用命令大全》是一份面向滲透測試新手、網(wǎng)絡(luò)安全學(xué)習(xí)者及運(yùn)維人員的Linux命令速查文檔聚焦Kali系統(tǒng)中文件操作、系統(tǒng)信息查看、文本處理等高頻場景幫助用戶快速掌握命令行操作減少查找碎片化資料的時(shí)間。資源為單個(gè)docx文檔壓縮包約1.96MB輕量易用。內(nèi)容按功能模塊組織涵蓋目錄與文件管理ls、cd、cp、mv、touch、mkdir、幫助命令whatis、help、man、info、登錄與用戶切換login、last、su/sudo、電源管理shutdown、halt、reboot等常用命令并對(duì)參數(shù)含義與典型用法作了說明同時(shí)包括df、free、top等系統(tǒng)資源查看命令及grep、sed、awk等文本處理技巧適合按需檢索和對(duì)照練習(xí)。目前已有633人學(xué)習(xí)使用這套命令筆記可幫助剛接觸Kali Linux的Web滲透測試人員、網(wǎng)絡(luò)安全專業(yè)學(xué)生以及需要系統(tǒng)梳理Linux基礎(chǔ)命令的開發(fā)者在實(shí)戰(zhàn)前快速建立命令行知識(shí)框架作為桌面常備速查資料。1. Kali 命令手冊(cè)為什么值得翻爛從 Web 滲透到系統(tǒng)維護(hù)都繞不開它接觸過幾臺(tái) Kali 的從業(yè)者基本都有同感真正卡住你的往往不是某個(gè)漏洞利用腳本而是最基礎(chǔ)的文件操作、權(quán)限切換和幫助文檔查找。某次我在一個(gè)授權(quán)滲透項(xiàng)目里需要在目標(biāo)服務(wù)器上快速定位一個(gè)日志文件并統(tǒng)計(jì)特征行同事盯著屏幕猶豫了十幾秒最后還是一步步 cd 加 ls 去翻目錄。鍵盤熟練度就是效率本身。這份《Kali 常用命令大全》我反復(fù)翻過幾遍它把 ls、find、tar、man 這些高頻命令的常用參數(shù)、邊界行為和真實(shí)場景全部拆開講透。對(duì) Web 滲透新手來說它是進(jìn)入 Linux 操作系統(tǒng)的第一塊踏板對(duì)有經(jīng)驗(yàn)的工程師來說它是查漏補(bǔ)缺的參考索引能幫你在現(xiàn)場少走不少彎路。很多人覺得命令手冊(cè)網(wǎng)上隨便搜都有但 Kali 這個(gè)發(fā)行版的特殊性在于它預(yù)裝了大量安全工具而這些工具全部運(yùn)行在 Linux 命令體系之上。不懂命令Metasploit 和 Nmap 玩得再花哨也是空中樓閣。下面我按自己的使用習(xí)慣把這本手冊(cè)里最有價(jià)值的幾組命令重新組織一遍每一步都給出實(shí)際場景和參數(shù)解析。2. 文件與目錄操作ls、cd、mkdir 到 rm 的完整閉環(huán)2.1 ls 的常用組合從默認(rèn)輸出到完整信息ls 在 Kali 里的出現(xiàn)頻率幾乎是最高的。剛拿到一臺(tái)機(jī)器或者切換到一個(gè)新目錄第一件事就是看看里面有什么。手冊(cè)里對(duì) ls 參數(shù)的整理非常實(shí)用-a 顯示隱藏文件、-l 列出詳細(xì)信息、-t 按時(shí)間排序、-R 遞歸子目錄、-h 人性化顯示文件大小。尤其值得記住的是ls -l可以直接簡寫為ll在 Kali 的默認(rèn) shell 配置里這個(gè)別名是生效的。實(shí)際工作中我常用的是這三條# 查看當(dāng)前目錄下的常規(guī)文件與文件夾 ls # 查看完整信息包括權(quán)限、屬主、大小、修改時(shí)間 ls -lh # 顯示全部文件包含以 . 開頭的隱藏文件 ls -al第一條用于快速瀏覽第二條用于檢查文件權(quán)限和大小第三條在排查隱藏后門或者確認(rèn)目錄是否被植入文件時(shí)是必備操作。-l輸出里的權(quán)限位rwxr-xr-x 那一段和文件類型是 Web 滲透里經(jīng)常要判斷的東西比如發(fā)現(xiàn)一個(gè).sh文件帶著-rwxrwxrwx權(quán)限那就需要警惕了。2.2 cd 和 pwd路徑切換里的符號(hào)鏈接細(xì)節(jié)cd 和 pwd 看起來簡單但手冊(cè)里埋了一個(gè)不常被人注意的參數(shù)cd -P和pwd -P用于繞過符號(hào)鏈接顯示物理路徑。Kali 里很多工具目錄是通過軟鏈接組織的比如/usr/bin下某些工具實(shí)際指向別的目錄。如果你在滲透測試中需要確認(rèn)自己真實(shí)所在的物理位置用pwd -P比直接敲pwd更可靠。# 返回上一個(gè)工作目錄 cd - # 顯示物理路徑不展開符號(hào)鏈接 pwd -Pcd -在你在兩個(gè)深層次目錄之間反復(fù)切換時(shí)非常好用省去重新輸入完整路徑的時(shí)間。很多人不知道這一條還在用絕對(duì)路徑來回折騰。2.3 touch、mkdir 與時(shí)間戳的小心思touch 最常用的功能是創(chuàng)建空文件比如在測試上傳漏洞時(shí)經(jīng)常需要新建一個(gè)空白文件來驗(yàn)證路徑是否可寫。但手冊(cè)里提到的另一個(gè)功能更有意思更新已存在文件的時(shí)間屬性。在某些 Web 滲透場景里你需要讓一個(gè)文件的時(shí)間戳看起來像剛被修改過從而掩蓋操作痕跡touch 就是那個(gè)工具。# 創(chuàng)建新的空文件 touch test.txt # 將文件時(shí)間修改為 2024 年 1 月 15 日 10:30 touch -t 202401151030 test.txt-t參數(shù)后面跟的是[[CC]YY]MMDDhhmm[.SS]格式注意月份在前、日期在后這個(gè)格式非常容易記反。mkdir 的-p參數(shù)則是創(chuàng)建多級(jí)目錄的標(biāo)配# 遞歸創(chuàng)建多層目錄 mkdir -p /tmp/test/web/logs沒有-p的話如果/tmp/test/web不存在命令會(huì)直接報(bào)錯(cuò)。這條在寫自動(dòng)化腳本時(shí)幾乎是必帶的。2.4 文件復(fù)制、移動(dòng)與刪除認(rèn)真對(duì)待 rm 的破壞力cp、mv、rm 三兄弟是文件操作的核心但也是最容易出事故的地方。cp 的-a參數(shù)我一般用來完整復(fù)制目錄結(jié)構(gòu)并保留所有屬性相當(dāng)于-dpR的合體。mv 在同目錄下操作相當(dāng)于重命名這個(gè)很多人知道但-u參數(shù)了解的人不多只有當(dāng)源文件比目標(biāo)文件新時(shí)才覆蓋這條在編寫增量同步腳本時(shí)很實(shí)用。rm 是需要重點(diǎn)提醒的。Kali 里很多用戶在 root 權(quán)限下操作一條rm -rf /tmp/test/打錯(cuò)路徑就可能刪掉系統(tǒng)關(guān)鍵目錄。手冊(cè)里給的-i參數(shù)可以強(qiáng)制交互確認(rèn)-v顯示詳細(xì)過程。我的習(xí)慣是先ls確認(rèn)目標(biāo)路徑再用rm -rf執(zhí)行并且永遠(yuǎn)不用rm -rf /這種寫法。# 顯示刪除過程并逐個(gè)確認(rèn) rm -riv /tmp/test/2.5 ln 的軟鏈接與硬鏈接選錯(cuò)類型會(huì)踩坑ln 命令在 Kali 里也是高頻操作尤其是軟鏈接。手冊(cè)里明確提了一句-s創(chuàng)建軟鏈接時(shí)源文件必須寫絕對(duì)路徑。這條非常關(guān)鍵因?yàn)橄鄬?duì)路徑的軟鏈接在跨目錄使用時(shí)經(jīng)常斷鏈導(dǎo)致工具找不到目標(biāo)文件。# 創(chuàng)建軟鏈接源文件使用絕對(duì)路徑 ln -s /usr/share/wordlists/rockyou.txt /tmp/rockyou硬鏈接和軟鏈接的區(qū)別在于硬鏈接共享同一個(gè) inode原文件刪除后鏈接依然有效軟鏈接相當(dāng)于一個(gè)指針原文件被刪鏈接就失效。在 Kali 里配置工具鏈時(shí)我?guī)缀踔挥密涙溄右驗(yàn)橛叉溄硬荒芸缥募到y(tǒng)而 /tmp 和 /usr/share 經(jīng)常不在同一個(gè)分區(qū)上。3. 查找與內(nèi)容查看find、which、cat、head、tail 的組合打法3.1 find 的表達(dá)式組合按名字、大小、類型精準(zhǔn)定位find 是 Kali 命令里靈活性最高的一個(gè)。手冊(cè)里整理了幾個(gè)核心參數(shù)-name按文件名、-iname忽略大小寫、-size按大小、-type按類型、-perm按權(quán)限。這些參數(shù)可以任意組合實(shí)際滲透中我基本都把它當(dāng)作三參數(shù)以上的復(fù)合查詢來用。# 在全盤查找所有 SUID 權(quán)限的文件 find / -type f -perm -4000 2/dev/null # 查找 /var/www 下最近一天內(nèi)被修改的 php 文件 find /var/www -name *.php -mtime -1 # 查找大于 100MB 的文件常見于排查日志或備份文件 find / -type f -size 100M 2/dev/null第一條命令的-perm -4000是 SUID 權(quán)限的標(biāo)志這類文件在 Linux 提權(quán)測試中極其重要。第二條的-mtime -1表示最近 24 小時(shí)內(nèi)修改過在應(yīng)急響應(yīng)里排查 webshell 時(shí)是必備技能。第三條的2/dev/null把權(quán)限不足的報(bào)錯(cuò)丟棄避免刷屏。find 的查找速度比 locate 慢因?yàn)樗鼘?shí)時(shí)遍歷文件系統(tǒng)但結(jié)果更加準(zhǔn)確可靠。3.2 locate 的快與 find 的準(zhǔn)什么時(shí)候選哪個(gè)locate 走的不是實(shí)時(shí)掃描而是查詢系統(tǒng)預(yù)建的索引數(shù)據(jù)庫所以速度極快。但它的缺點(diǎn)是索引可能過期如果你剛創(chuàng)建的文件在幾分鐘內(nèi)查不到需要先執(zhí)行updatedb強(qiáng)制重建索引。手冊(cè)里提到-i忽略大小寫、-n限制輸出行數(shù)這兩條在日常使用中很常見。# 更新索引數(shù)據(jù)庫 sudo updatedb # 查找文件名包含 nginx 的文件不區(qū)分大小寫 locate -i nginx我的經(jīng)驗(yàn)是快速定位系統(tǒng)自帶工具或已知文件用 locate需要精確匹配特定路徑或?qū)傩缘挠?find兩者互補(bǔ)而不是替代。3.3 which 與 PATH確認(rèn)命令真實(shí)位置的關(guān)鍵which 命令看似平淡無奇但它能告訴你當(dāng)前執(zhí)行的命令到底來自哪個(gè)路徑。Kali 里預(yù)裝工具眾多同名命令沖突并不少見。比如當(dāng)你敲入python時(shí)到底是/usr/bin/python還是/usr/local/bin/python用 which 一查便知。# 查看 python 命令的真實(shí)路徑 which python在滲透測試?yán)镞@個(gè)信息很重要。如果你在一臺(tái)被入侵的機(jī)器上執(zhí)行命令而 which 顯示某個(gè)系統(tǒng)命令路徑異常比如/tmp/下出現(xiàn)了ls的可執(zhí)行文件那大概率是被替換了。which 幫助你在第一時(shí)間發(fā)現(xiàn)這類異常。3.4 cat、head、tail日志查看的標(biāo)準(zhǔn)工作流文件內(nèi)容查看方面cat 適合讀短文件head 和 tail 適合查日志首尾。Kali 下日志文件動(dòng)輒幾百 MB直接用 cat 會(huì)刷屏甚至卡死終端所以查看日志的標(biāo)準(zhǔn)流程是先 tail 看最新輸出再用 head 看開頭確認(rèn)格式最后 grep 做關(guān)鍵詞篩選。# 查看日志最后 50 行 tail -n 50 /var/log/apache2/access.log # 查看日志開頭 20 行 head -n 20 /var/log/apache2/access.log # 查看日志中所有包含 error 的行 grep error /var/log/apache2/error.log-n指定行數(shù)在文件較大時(shí)非常有用。tail 還有一個(gè)進(jìn)階用法-f可以持續(xù)跟蹤文件變化在觀察實(shí)時(shí)日志時(shí)是標(biāo)配。你在做 Web 滲透時(shí)開啟一個(gè)終端跑tail -f監(jiān)控訪問日志另一終端發(fā)請(qǐng)求可以實(shí)時(shí)看到自己的 payload 是否命中。3.5 less 與 more大文件瀏覽的分水嶺more 只能向下翻頁less 支持前后雙向?yàn)g覽這是兩者最本質(zhì)的差別。Kali 下看大文件或者命令輸出結(jié)果我基本只用 less。查手冊(cè)時(shí)man命令調(diào)的也是 less 作為分頁器里面的操作習(xí)慣是通用的。# 分頁瀏覽文件支持前后翻頁 less /usr/share/wordlists/rockyou.txt # 打開文件后直接搜索 password 關(guān)鍵字 less -p password /usr/share/wordlists/rockyou.txtless 里/向下搜索、?向上搜索、q退出這幾個(gè)按鍵是必須形成肌肉記憶的。在查看超長文件時(shí)合理使用搜索定位比手動(dòng)翻頁快一個(gè)數(shù)量級(jí)。4. 幫助系統(tǒng)與用戶切換從 whatis 到 sudo 的權(quán)限鏈條4.1 whatis、help、man、info按需求選擇幫助層級(jí)Kali 上幫助命令分成四個(gè)層級(jí)很多用戶只會(huì)用 man但實(shí)際上它們各有分工。whatis 用來快速了解命令的作用一句話描述直接輸出help 只能查 shell 內(nèi)置命令的幫助比如 cd、exit 這類man 是最完整的手冊(cè)頁覆蓋命令、配置文件、系統(tǒng)調(diào)用等info 是 GNU 項(xiàng)目的信息文檔超鏈接跳轉(zhuǎn)能力強(qiáng)但內(nèi)容相對(duì)偏底層。# 快速了解 ls 的作用 whatis ls # 查看 shell 內(nèi)置命令 cd 的幫助 help cd # 打開 ls 的完整手冊(cè) man ls # 查看核心utils 的信息文檔 info coreutilswhatis 的輸出只有一行適合在記不清命令作用時(shí)快速喚起記憶。man 的優(yōu)先級(jí)高于 info因?yàn)?man 覆蓋面更廣且 Kali 自帶。4.2 中文 man 包的安裝Kali 實(shí)測有效Kali 自帶的是英文 man對(duì)英語一般的用戶來說閱讀成本偏高。手冊(cè)里給了一個(gè)中文 man 的安裝方案我在 Kali 上實(shí)測可行這里放完整流程# 第一步更新軟件源 sudo apt update # 第二步安裝中文手冊(cè)頁 sudo apt install manpages-zh # 第三步配置別名讓 cman 命令使用中文 man echo alias cmanman -M/usr/share/man/zh_CN ~/.zshrc # 第四步重新加載 shell 配置 source ~/.zshrc這段腳本的核心邏輯是通過 apt 安裝 manpages-zh 包把中文手冊(cè)安裝到/usr/share/man/zh_CN目錄然后用 alias 讓 cman 命令自動(dòng)指向該目錄讀取手冊(cè)。注意 Kali 默認(rèn) shell 是 zsh所以寫入的是~/.zshrc如果你用的是 bash 就改成~/.bashrc。安裝后輸入cman ls就能看到中文版的 ls 手冊(cè)對(duì)新手非常友好。4.3 su 與 sudo 的核心差異環(huán)境變量是分水嶺su 和 sudo 的差別是 Kali 使用中繞不開的話題。su 切換用戶后環(huán)境變量仍然是原用戶的這就是為什么很多人切到 root 后執(zhí)行命令報(bào)錯(cuò)——因?yàn)?PATH 路徑?jīng)]有跟著切換。sudo 則不同它只臨時(shí)賦予指定用戶某個(gè)命令的執(zhí)行權(quán)限當(dāng)前 shell 環(huán)境不變。# 切換到 root 用戶使用登錄 Shell su - # 以 root 身份執(zhí)行單條命令 sudo apt update # 指定其他用戶執(zhí)行命令 sudo -u www-data cat /var/www/html/config.php-參數(shù)很關(guān)鍵它會(huì)重新開啟一個(gè)登錄 Shell 并加載目標(biāo)用戶的完整環(huán)境變量避免切到 root 后出現(xiàn)“命令找不到”的詭異情況。第三條命令在檢查 Web 目錄時(shí)特別有用可以模擬 Web 服務(wù)用戶身份讀取文件避免權(quán)限誤判。4.4 login、exit、last登錄會(huì)話的三件套login 在命令行模式下用于重新登錄或切換用戶身份但日常使用頻率不高因?yàn)?su 和 sudo 已經(jīng)覆蓋了絕大多數(shù)場景。exit 用來退出當(dāng)前 Shell如果你在 su 切換后的環(huán)境里需要多敲幾次 exit 才能完全退出到初始登錄狀態(tài)。last 命令在安全排查中非常有價(jià)值它記錄所有登錄記錄和來源 IP。# 顯示最近 10 條登錄記錄 last -n 10 # 顯示登錄來源 IP 但不顯示主機(jī)名 last -a在應(yīng)急響應(yīng)場景里用 last 檢查是否有異常 IP 登錄過系統(tǒng)是標(biāo)準(zhǔn)動(dòng)作之一。配合-d參數(shù)還能把 IP 反查為主機(jī)名不過內(nèi)網(wǎng)環(huán)境下這個(gè)功能基本失效。5. 壓縮打包與電源管理tar、gzip 與 shutdown 的避坑實(shí)錄5.1 tar 與 gzip先打包再壓縮才是正確順序很多新手在 Kali 里直接敲gzip壓縮文件夾結(jié)果發(fā)現(xiàn) gzip 只能壓縮單個(gè)文件無法處理目錄。正確的做法是先 tar 打包再用 gzip 壓縮或者用 tar 的-z參數(shù)一步完成。# 打包并壓縮整個(gè)目錄 tar -czvf web_backup.tar.gz /var/www/html/ # 解壓并拆包 tar -xzvf web_backup.tar.gz -C /tmp/參數(shù)拆解-c建立新打包文件-z調(diào)用 gzip 算法壓縮-v顯示過程-f指定文件名。解壓時(shí)-x替代-c-C指定解壓目標(biāo)目錄。這條命令在備份站點(diǎn)目錄、遷移工具集時(shí)是標(biāo)配。注意-f后面一定要緊跟文件名放在最后是 tar 的老規(guī)矩。5.2 gzip 與 gunzip 的單文件壓縮gzip 單獨(dú)使用場景較少但在壓縮單個(gè)文件時(shí)依然高效。壓縮后原文件消失生成以.gz結(jié)尾的新文件如果用-k參數(shù)可以保留原文件。# 壓縮單文件保留原文件 gzip -k access.log # 查看壓縮文件內(nèi)容不解壓 gzip -l access.log.gz # 解壓 gunzip access.log.gzgzip -l顯示壓縮比和原始大小在決定是否清理日志文件時(shí)可以作為判斷依據(jù)。-r參數(shù)可以遞歸壓縮目錄下的所有文件但不會(huì)打包目錄結(jié)構(gòu)所以應(yīng)用場景有限。5.3 shutdown 與 halt 的區(qū)別安全關(guān)機(jī)不是直接斷電Linux 后臺(tái)運(yùn)行大量進(jìn)程強(qiáng)制斷電可能導(dǎo)致數(shù)據(jù)丟失或文件系統(tǒng)損壞。shutdown 會(huì)先通知所有登錄用戶凍結(jié)新的登錄請(qǐng)求然后逐步關(guān)閉服務(wù)最終停機(jī)。halt 則不會(huì)逐項(xiàng)關(guān)閉服務(wù)直接執(zhí)行硬件關(guān)機(jī)操作。reboot 和 halt 參數(shù)類似執(zhí)行重啟。# 5 分鐘后關(guān)機(jī)并廣播消息給所有用戶 shutdown -h 5 System will shut down after 5 minutes # 立即重啟 shutdown -r now # 取消已經(jīng)排定的關(guān)機(jī)計(jì)劃 shutdown -c5是延遲 5 分鐘now是立即執(zhí)行。在生產(chǎn)環(huán)境或測試環(huán)境里我習(xí)慣用shutdown -h 5而不是拔電源給其他終端會(huì)話留出保存時(shí)間。-k參數(shù)特別值得注意它只發(fā)送警告消息但不會(huì)真的關(guān)機(jī)適合測試廣播通知流程。5.4 避坑實(shí)錄三條最常踩的坑坑一gzip 直接壓文件夾報(bào)錯(cuò)現(xiàn)象gzip /etc/passwd/提示 Is a directory。原因gzip 本質(zhì)上只能壓縮單個(gè)文件流不支持目錄打包操作。解決先tar -cf打包目錄再 gzip或者直接使用tar -czf一步到位??佣m -rf 刪錯(cuò)路徑現(xiàn)象本想刪除/tmp/test結(jié)果寫成了/tmp/test /系統(tǒng)文件被連帶刪除。原因rm 支持多參數(shù)空格后面的路徑會(huì)被當(dāng)成獨(dú)立目標(biāo)。解決刪除前先ls確認(rèn)路徑使用rm -i開啟交互確認(rèn)刪除操作不用通配符配合絕對(duì)路徑書寫。坑三su 切到 root 后命令找不到現(xiàn)象su切換后執(zhí)行ifconfig提示 command not found。原因沒有加-參數(shù)當(dāng)前 Shell 的環(huán)境變量仍是原用戶的 PATH缺失/sbin路徑。解決使用su -重新開啟登錄 Shell或者直接用sudo執(zhí)行命令。6. 命令速查的落地驗(yàn)證把手冊(cè)內(nèi)容變成肌肉記憶翻閱手冊(cè)是一回事真正提升效率是另一回事。我拿到新環(huán)境后的第一件事是驗(yàn)證基礎(chǔ)命令是否可用然后按自己的使用習(xí)慣建一組別名讓復(fù)雜的組合命令變成單個(gè)單詞。# 定義常用別名寫入 shell 配置文件 echo alias llls -lh ~/.zshrc echo alias lals -A ~/.zshrc echo alias grepgrep --colorauto ~/.zshrc echo alias cmanman -M/usr/share/man/zh_CN ~/.zshrc source ~/.zshrc第二個(gè)驗(yàn)證動(dòng)作是確認(rèn) man 手冊(cè)路徑是否完整。執(zhí)行man ls如果能正常打開說明基本手冊(cè)沒問題執(zhí)行cman ls能打開中文版說明 manpages-zh 安裝成功。第三個(gè)驗(yàn)證是測試 find 的核心表達(dá)式是否按預(yù)期工作# 驗(yàn)證 find 按類型和大小組合查找 find /etc -type f -size -10k | head -20這條正確執(zhí)行說明 find 的參數(shù)解析正常。最后用 tar 做一次備份與恢復(fù)的完整循環(huán)確認(rèn)壓縮、解壓、權(quán)限保留都沒問題# 備份指定目錄 tar -czvf /tmp/config_backup.tar.gz /etc/nginx/ # 恢復(fù)到指定位置 tar -xzvf /tmp/config_backup.tar.gz -C /tmp/restore/這一連串操作走完說明手冊(cè)里的核心命令在這臺(tái) Kali 上是可用的后面的滲透工作才有底氣。從那以后我每換一臺(tái)新的 Kali 環(huán)境都會(huì)先花十分鐘把這幾組命令過一遍確認(rèn)別名、幫助文檔、find 表達(dá)式、tar 備份鏈路全部正常再開始正式工作。這個(gè)習(xí)慣幫我避免過好幾次“關(guān)鍵時(shí)刻命令不好使”的尷尬希望也能幫到你。本文還有配套的精品資源點(diǎn)擊獲取