这似乎没用,因为输出将打印到标准输出而不是作为服务器响应返回?
这取决于被利用的漏洞。有时,攻击者可以根据 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,并且此流量有规则,它将被阻止。