用户可以在您的服务器上运行代码的 Web 攻击是什么?

信息安全 Web应用程序
2021-09-07 01:06:21

我听说过人们(或机器人)闯入并在服务器上执行自己的代码的不安全 Web 服务器和站点的故事。

我的问题是这怎么可能?我听说有人将自己的 javascript 放在网站上窃取 cookie 和技术如何做到这一点。我从未听说过执行代码的实际攻击。我知道 mysql 注入可用于窃取数据并在页面上放入 javascript 代码。但我仍然无法思考网站的弱点如何危及服务器。这怎么可能?

4个回答

为了能够在您的服务器上运行代码,我可以:

  • 使用您的网络表单之一上传文件。但我没有上传图片,而是上传了一个 PHP 文件。然后我可以使用 webserver 进程的权限运行 PHP 文件中的代码。
  • 利用缓冲区溢出在您的服务器上获取 shell。
  • 以管理员身份登录并上传代码:
    • 社会工程从您的一位管理员那里获得密码。
    • 使用 XSS 攻击从您的一位管理员那里窃取会话 cookie。
    • 使用 SQL 注入攻击读取密码表,然后:
      • 读取您以明文形式存储的密码,或
      • 运行密码猜测程序来破解您选择不当的密码。
    • 使用目录遍历攻击来获取系统密码文件的副本并使用上述密码破解方法之一。
    • 物理窃取备份磁带以获取数据库副本并使用上述密码破解方法之一。
  • 使用数十种方法中的任何一种来接管 Intranet 上的机器并将其用作将代码上传到 Web 服务器的平台。
  • 身体上让自己站在您的服务器控制台前。

请注意,我不一定要攻击您的应用程序。例如,我可以攻击您的网络服务器、操作系统或人员中的漏洞。

最简单的就是可执行上传漏洞。设置场景将是一个站点允许用户将文件上传到该站点,例如,用户可能想要附加到他们创建的论坛帖子的图像。如果没有安全措施,并且允许用户上传的文件位于 Web 可访问的可执行位置,则恶意用户可能会上传 *.php 或 *.asp 文件之类的文件, 代码将在用户导航到上传的文件时运行。

高价值攻击是在服务器上获得 root shell 的攻击。到那时,您可以随心所欲地运行。

比这更进一步的是一种攻击,它使用 Web 应用程序中的功能来获取 shell,该 shell 可以升级为 root。有时,升级是通过将可执行文件上传到用户空间,该用户空间通过漏洞利用获得特权。

三种非常常见的网络服务器攻击是跨站点脚本攻击、SQL 注入攻击和目录遍历攻击(可能是最常见的)。

所有这些都非常相似,如果成功是输入验证不佳的结果。

虽然这些实际上可能不会使物理服务器本身处于危险之中,但还有比失去服务器更痛苦的事情。就像丢失了一个充满财务处理信息或 PII 的数据库。

输入验证可能是 Web 应用程序开发人员需要理解的最重要的事情。

即使是一个非常简单的应用程序,例如使文件可供查看或下载的脚本,如果您传递带有脚本路径的文件以导致文件被下载或查看,也会使您处于危险之中,而您不这样做对路径进行任何清理以确保它们是相对的,并且在 DOCUMENT_ROOT 内,那么您最终可能会得到一个非常乐意显示您的 /etc/shadow 文件或 iptables 配置或任何内容的网络服务器其他存在于服务器上的文件中。