Linux 常用指令
日常及網路上搜尋到一些工作上用的到的指令
| 指令 | 說明 |
| netstat -tulpn | 顯示對應的PID 網路Port。 |
| watch ss -stplu | 透過套接字即時觀察 TCP, UDP 連接埠。 |
| lsof -i | 顯示確認了的連線。 |
| macchanger -m MACADDR INTR | 在 KALI Linux 上修改 MAC 位址。 |
| ifconfig eth0 192.168.2.1/24 | 設定 IP 位址。 |
| ifconfig eth0:1 192.168.2.3/24 | 新增 IP 位址到現有的網路介面。 |
| ifconfig eth0 hw ether MACADDR | 使用 ifconfig 修改 Linux 中的 MAC 位址。 |
| ifconfig eth0 mtu 1500 | 使用 ifconfig 修改 MTU 的大小,將 1500 改為你想要的 MTU。 |
| dig -x 192.168.1.1 | 對 IP 位址進行反向查找。 |
| host 192.168.1.1 | 在一個 IP 位址上進行反向查找,適用於沒有安裝 dig 的情況。 |
| dig @192.168.2.2 domain.com -t AXFR | 使用 dig 執行一次 DNS 區域傳輸。 |
| host -l domain.com nameserver | 使用 host 執行一次 DNS 區域傳輸。 |
| nbtstat -A x.x.x.x | 取得 IP 位址對應的網域名稱。 |
| ip addr add 192.168.2.22/24 dev eth0 | 新增一個隱藏的IP 位址,執行ifconfig 指令時不會顯示這個IP 位址。 |
| tcpkill -9 host google.com | 阻止訪問 google.com。 |
| echo “1” > /proc/sys/net/ipv4/ip_forward | 啟用IP 轉發 |
| echo “8.8.8.8” > /etc/resolv.conf | |
系統指令
| 指令 | 說明 |
| whoami | 顯示Linux 上目前已登入使用者。 |
| id | 向使用者顯示目前已登入的使用者和群組。 |
| last | 顯示最後一次登陸的使用者。 |
| mount | 顯示已掛載的驅動程式。 |
| df -h | 用人類可讀的輸出顯示磁碟使用情況。 |
| echo “user:passwd” | chpasswd | 用一行指令重設密碼。 |
| getent passwd | 列出 Linux 上的使用者。 |
| strings /usr/local/bin/blah | 顯示非文字檔案的內容,例如:一個二進位檔案裡面有什麼。 |
| uname -ar | 顯示運行中的核心版本。 |
| PATH=$PATH:/my/new-path | 新增一個新的路徑,方便進行本機檔案系統(FS)操作。 |
| history | 顯示使用者在先前執行的 bash 腳本歷史記錄,還有敲入的命令。 |
基於 Redhat / CentOS / RPM 的版本
| 指令 | 說明 |
| cat /etc /redhat-release | 顯示Redhat / CentOS 版本號。 |
| rpm -qa | 在基於 RPM 的 Linux 上列出所有已經安裝上的 RPM 套件。 |
| rpm -q –changelog openvpn | 檢查已安裝的RPM 是否針對CVE 打了補丁,可以用grep 指令過濾出跟CVE 有關的輸出。 |
YUM 指令
| 指令 | 說明 |
| yum update | 使用YUM 更新所有的RPM 包,也會顯示出哪些已經過時了。 |
| yum update httpd | 更新單獨的包,在此例中是 HTTPD (Apache)。 |
| yum install package | 使用 YUM 安裝一個套件。 |
| yum –exclude=package kernel* update | 使用 YUM 時將一個套件排除在外不更新。 |
| yum remove package | 使用 YUM 刪除套件。 |
| yum erase package | 使用 YUM 刪除套件。 |
| yum list package | 列出有關 yum 套件的資訊。 |
| yum provides httpd | 顯示一個套件是的用途,例如:Apache HTTPD Server。 |
| yum info httpd | 顯示包信息,架構,版本等信息。 |
| yum localinstall blah.rpm | 使用 YUM 來安裝本地 RPM, 從資源庫進行安裝。 |
| yum deplist package | 顯示包的提供者資訊。 |
| yum list installed | more | 列出所有已安裝的套件。 |
| yum grouplist | more | 顯示所有的 YUM 分組。 |
| yum groupinstall ‘Development Tools’ | 安裝 YUM 分組。 |
基於 Debian / Ubuntu / .deb 的發行版
| 指令 | 說明 |
| cat /etc /debian_version | 顯示Debian 版本號。 |
| cat /etc/*-release | 顯示 Ubuntu 版本號。 |
| dpkg -l | 在基於 Debian / .deb 的 Linux 發行版上列出所有已安裝的套件。 |
Linux 使用者管理
| 指令 | 說明 |
| useradd new- user | 建立一個新的使用者。 |
| passwd username | 重置用戶密碼, 如果你是 root 用戶,只要輸入密碼就行了。 |
| deluser username | 刪除一個使用者。 |
Linux 解壓縮指令
如何在 Linux 上解析不同的壓縮包 (tar, zip, gzip, bzip2 等等) ,以及其它的一些用來在壓縮包中進行搜索等操作的小技巧。
| 指令 | 說明 |
| unzip archive. zip | 解壓縮 zip 包中的檔案。 |
| zipgrep *.txt archive.zip | 在 zip 壓縮包中搜尋。 |
| tar xf archive.tar | 解壓縮 tar 包中的檔案。 |
| tar xvzf archive.tar.gz | 解壓縮 tar.gz 套件中的檔案。 |
| tar xjf archive.tar.bz2 | 解壓縮 tar.bz2 套件中的檔案。 |
| tar ztvf file.tar.gz | grep blah | 在 tar.gz 檔案中搜尋。 |
| gzip -d archive.gz | 解壓縮 gzip 中的檔案。 |
| zcat archive.gz | 以不解壓縮的方式讀取一個 gz 檔案。 |
| zless archive.gz | 用較少的指令實現對 .gz 壓縮包相同的功能。 |
| zgrep ‘blah’ /var/log/maillog*.gz | 對.gz 壓縮包裡面的內容執行搜索,例如搜索被壓縮過的日誌檔。 |
| vim file.txt.gz | 使用 vim 讀取 .txt.gz 檔案(我個人的最愛)。 |
| upx -9 -o output.exe input.exe | 使用 UPX 壓縮 .exe 檔案。 |
Linux 壓縮指令
| 指令 | 說明 |
| zip archive.zip filename | .zip 壓縮檔案 |
| zip -r archive.zip ./floder | .zip 壓縮目錄 |
| tar cvf archive.tar ./ | .tar 壓縮檔案 |
| tar zcvf example.tar.gz . | .tar.gz 壓縮檔案 |
| bzip2 -z filename | .bzip2 壓縮檔案 |
| gzip filename | .gzip 壓縮檔案 |
| tar jcvf example.tar.bz2 ./ | .tar.bz 壓縮檔案 |
| tar Jcvf example.tar.xz ./ | .tar.xz 壓縮檔案 |
Linux 檔案指令
| 指令 | 描述 |
| df -h blah | 顯示檔案/目錄的大小。 |
| diff file1 file2 | 比對/顯示兩個檔案之間的差異。 |
| md5sum file | 產生 MD5 摘要。 |
| md5sum -c blah.iso.md5 | 檢查檔案的MD5 摘要,這裡假設檔案和.md5 處在相同的路徑下。 |
| file blah | 找出檔案的類型,也會將檔案是 32 還是 64 位元顯示出來。 |
| dos2unix | 將 Windows 的行結束符號轉成 Unix/Linux 的。 |
| base64 < input-file > output-file | 對輸入檔進行Base64 編碼,然後輸出一個叫做output-file 的Base64 編碼文件。 |
| base64 -d < input-file > output-file | 對輸入檔進行Base64 解碼,然後輸出一個叫做output-file 的Base64解碼檔。 |
| touch -r ref-file new-file | 使用來自於引用文件的時間戳數據創建一個新文件,放上-r 以簡單地創建一個文件。 |
| rm -rf | 不顯示確認提示就刪除檔案和目錄。 |
Misc 指令
| 指令 | 說明 |
| init 6 | 從命令列重啟Linux 。 |
| gcc -o output.c input.c | 編譯 C 程式碼。 |
| gcc -m32 -o output.c input.c | 交叉編譯C 程式碼,在64 位元Linux 上將編譯出32 位元的二進位文件。 |
| unset HISTORYFILE | 關閉 bash 歷史日誌記錄功能。 |
| rdesktop X.X.X.X | 連線到 RDP 伺服器。 |
| kill -9 $$ | 關掉目前的會話。 |
| chown user:group blah | 修改文件或目錄的擁有者。 |
| chown -R user:group blah | 修改檔案或目錄,以及目錄下方檔案/目錄的擁有者 —— 遞歸執行 chown。 |
| chmod 600 file | 修改檔案/目錄的權限設定, 詳情請見[Linux 檔案系統權限](#linux-file-system-permissions ) 。 |
清除 bash 歷史:
Linux檔案系統權限
| 取值 | 意義 |
| 777 | rwxrwxrwx 沒有限制,完全可讀可寫可執行(RWX),使用者可以做任何事情。 |
| 755 | rwxr-xr-x 擁有者可完全訪問,其他人只能讀取和執行文件。 |
| 700 | rwx—— 擁有者可完全訪問,其他人都不能訪問。 |
| 666 | rw-rw-rw- 所有人可以讀取和寫入,但不可執行。 |
| 644 | rw-r–r– 擁有者可以讀取和寫入,其他人只可以讀取。 |
| 600 | rw——- 擁有者可以讀取和寫入,其他人都不能存取。 |
Linux 檔案系統的滲透測試備忘錄
| 目錄 | 描述 |
| / | / 根目錄。 |
| /bin | 由系統、系統管理員、使用者共用的通用程式。 |
| /boot | Boot 檔案, 啟動載入器(grub), 核心, vmlinuz |
| /dev | 包含了系統裝置、帶有特殊屬性的檔案的引用。 |
| /etc | 重要的系統設定檔。 |
| /home | 系統使用者的主目錄。 |
| /lib | 庫文件,包括系統和使用者都需要的所有類型的程式的文件。 |
| /lost+found | 檔案操作失敗會被保存在這裡。 |
| /mnt | 外部檔案系統的標準掛載點。 |
| /media | 外部檔案系統(或某些發行版)的掛載點。 |
| /net | 整個遠端檔案系統的標準掛載點 —— nfs。 |
| /opt | 一般都是包含一些附加的或第三方軟體。 |
| /proc | 一個包含了系統資源相關資訊的虛擬檔案系統。 |
| /root | root 使用者的主目錄。 |
| /sbin | 由系統和系統管理員來使用的程式。 |
| /tmp | 供系統使用的臨時空間,重啟時會被清空。 |
| /usr | 供所有使用者相關程式使用的程式、函式庫、文件等等。 |
| /var | 儲存所有由使用者建立的可變文件和臨時文件,例如日誌檔案、郵件佇列、後台列印程序,Web伺服器,資料庫等等。 |
Linux 中有趣的檔案/目錄
如果你想嘗試進行特權升級/執行後期開發,這些都是你值得一瞧的指令。
| 路徑 | 描述 |
| /etc/ passwd | 包含了本地Linux 的使用者。 |
| /etc/shadow | 包含了哈希過的本機帳戶密碼。 |
| /etc/group | 包含了本機帳戶分組。 |
| /etc/init.d/ | 包含了服務網初始化腳本 – 具體都安裝了些啥應該值得一瞧。 |
| /etc/hostname | 系統的 hostname。 |
| /etc/network/interfaces | 網路介面。 |
| /etc/resolv.conf | 系統的 DNS 服務。 |
| /etc/profile | 系統的環境變數。 |
| ~/.ssh/ | SSH 密鑰。 |
| ~/.bash_history | 使用者的 bash 歷史日誌。 |
| /var/log/ | Linux 系統的日誌檔案一般就被存放在這裡。 |
| /var/adm/ | UNIX 系統的日誌檔案一般就被存在在這裡。 |
| /var/log/httpd/access.log | Apache 存取日誌檔案通常的存在路徑。 |
| /etc/fstab | 掛載的檔案系統。 |