我听说过人们(或机器人)闯入并在服务器上执行自己的代码的不安全 Web 服务器和站点的故事。
我的问题是这怎么可能?我听说有人将自己的 javascript 放在网站上窃取 cookie 和技术如何做到这一点。我从未听说过执行代码的实际攻击。我知道 mysql 注入可用于窃取数据并在页面上放入 javascript 代码。但我仍然无法思考网站的弱点如何危及服务器。这怎么可能?
我听说过人们(或机器人)闯入并在服务器上执行自己的代码的不安全 Web 服务器和站点的故事。
我的问题是这怎么可能?我听说有人将自己的 javascript 放在网站上窃取 cookie 和技术如何做到这一点。我从未听说过执行代码的实际攻击。我知道 mysql 注入可用于窃取数据并在页面上放入 javascript 代码。但我仍然无法思考网站的弱点如何危及服务器。这怎么可能?
为了能够在您的服务器上运行代码,我可以:
请注意,我不一定要攻击您的应用程序。例如,我可以攻击您的网络服务器、操作系统或人员中的漏洞。
最简单的就是可执行上传漏洞。设置场景将是一个站点允许用户将文件上传到该站点,例如,用户可能想要附加到他们创建的论坛帖子的图像。如果没有安全措施,并且允许用户上传的文件位于 Web 可访问的可执行位置,则恶意用户可能会上传 *.php 或 *.asp 文件之类的文件, 代码将在用户导航到上传的文件时运行。
高价值攻击是在服务器上获得 root shell 的攻击。到那时,您可以随心所欲地运行。
比这更进一步的是一种攻击,它使用 Web 应用程序中的功能来获取 shell,该 shell 可以升级为 root。有时,升级是通过将可执行文件上传到用户空间,该用户空间通过漏洞利用获得特权。
三种非常常见的网络服务器攻击是跨站点脚本攻击、SQL 注入攻击和目录遍历攻击(可能是最常见的)。
所有这些都非常相似,如果成功是输入验证不佳的结果。
虽然这些实际上可能不会使物理服务器本身处于危险之中,但还有比失去服务器更痛苦的事情。就像丢失了一个充满财务处理信息或 PII 的数据库。
输入验证可能是 Web 应用程序开发人员需要理解的最重要的事情。
即使是一个非常简单的应用程序,例如使文件可供查看或下载的脚本,如果您传递带有脚本路径的文件以导致文件被下载或查看,也会使您处于危险之中,而您不这样做对路径进行任何清理以确保它们是相对的,并且在 DOCUMENT_ROOT 内,那么您最终可能会得到一个非常乐意显示您的 /etc/shadow 文件或 iptables 配置或任何内容的网络服务器其他存在于服务器上的文件中。