了解利用网络服务器的尝试

信息安全 防火墙 http 网络服务器 注射
2021-08-28 01:52:23

假设攻击者连接到端口 80 上的 Web 服务器并发出以下命令,他试图完成什么?

/c/winnt/system32/cmd.exe?/c+dir HTTP/1.0

我已经读过这与一些旧的 IIS 漏洞有关,我认为这是尝试获取 shell,执行dir命令然后关闭 shell,但是:

  • 这似乎没用,因为输出将被打印到stdout而不是作为服务器响应返回?
  • 另外,为什么甚至可以请求目录之外的www文件?默认情况下不应该禁止这样做吗?
  • 当攻击者在自己创建的 shell 中发出这些命令时,他拥有哪些用户权限?我猜是运行服务器的权限。
  • 防火墙能否阻止这种攻击,如果不能,是否有其他措施可以阻止这种攻击?

提前非常感谢!

2个回答

这似乎没用,因为输出将打印到标准输出而不是作为服务器响应返回?

这取决于被利用的漏洞。有时,攻击者可以根据 HTTP 状态代码或返回响应所需的时间来确定系统是否容易受到攻击。如果攻击者可以发送攻击并得知系统易受攻击,他们可能会发送后续攻击,但如果它不起作用,则继续尝试不同的攻击。

没有技术原因导致服务器无法处理GET /c/winnt/system32/cmd.exe?/c+dir HTTP/1.0执行 cmd.exe 文件并将“/c dir”作为参数传递、捕获输出并将其作为响应发送给用户。这完全取决于与之交互的服务器的设计。事后看来,这种设计是愚蠢的,因为它允许攻击者利用系统,但在网络的早期,允许这种访问可能是可取的。

另外,为什么甚至可以请求 www 目录之外的文件?默认情况下不应该禁止这样做吗?

Web 服务器很复杂,工程师会犯错误。请记住,这种类型的攻击是网络处于起步阶段的特征。

当攻击者在自己创建的 shell 中发出这些命令时,他拥有哪些用户权限?我猜是运行服务器的权限。

如果攻击者可以利用这样的漏洞,攻击者很可能会获得正在运行的服务器的特权。但是,执行将根据程序编写的方式进行。服务器也有可能在执行之前降低特权。这不太可能,但关键是它总是取决于被利用的系统的上下文。

防火墙能否阻止这种攻击,如果不能,是否有其他措施可以阻止这种攻击?

是和不是。防火墙是一个有点超额认购的术语,因此一些防火墙将具有此功能,而其他防火墙则没有。一些防火墙只关注源 IP:port、目标 ip:port 意义上的网络流量,而不关注正在发送的实际消息。其他防火墙包括入侵防御系统或 IPS。这是一个将流量与已知不良流量的签名进行比较的应用程序。因此,如果防火墙具有 IPS,并且此流量有规则,它将被阻止。

你在这里打包了很多问题!

根据命令是否执行,服务器可能会以不同的状态代码进行响应。很可能,配置良好的系统会返回 500 内部服务器错误,而配置不佳的系统将返回 200,确认命令已执行。这将为对手提供继续攻击的信息。

正确配置的系统将限制对 www 目录或其他明确授权的有效位置的访问。但是,有一整类漏洞被称为目录遍历,您可以在其中逃离授权的文件系统区域,通常通过在 URL 中使用“../..”这样简单的方法。例如,这是 2014 年的一个:https: //issues.jboss.org/browse/WFLY-4020 所有软件中都存在错误,并且完全合理的事情并不总是按应有的方式发生。

正确,shell 执行将在运行 Web 服务的用户的上下文中执行。这就是为什么您永远不应该以 root 身份运行 Web 服务器,以防止您的 Web 服务中的漏洞成为您整个机器的漏洞。

最后,配置良好的 WAF 或许能够阻止这种攻击。WAF 的典型定义是它对 Web 应用程序具有内容感知能力,因此它可以检查和丢弃看起来很糟糕的请求。魔鬼在细节中,所以仅仅拥有 WAF 是不够的。