9种常见的Web应用程序注入攻击类型 1. SQL注入攻击:通过在输入字段中插入恶意的SQL代码,攻击者可以执行未经授权的操作或者获取敏感数据。 2. XSS(跨站脚本)攻击:攻击者通过在Web应用程序中注入恶意脚本,可以窃取用户的信息、篡改网页内容或者进行其他恶意操作。 3. XML注入攻击:攻击者通过在XML输入中插入恶意内容,可以执行未经授权的操作,例如读取敏感文件、执行远程命令等。 4. LDAP注入攻击:通过将恶意LDAP查询语句注入到应用程序中,攻击者可以绕过身份验证,获取敏感信息或者执行未经授权的操作。 5. 命令注入攻击:攻击者通过在应用程序中注入恶意命令,可以执行系统命令,可能导致系统被完全控制。 6. OS命令注入攻击:类似于命令注入攻击,但是攻击者注入的是操作系统命令,可以执行系统级操作。 7. 文件包含攻击:攻击者通过在应用程序中包含未经验证的外部文件,可以执行恶意代码或者访问敏感文件。 8. 跨站请求伪造(CSRF)攻击:攻击者通过欺骗用户在另一个网站上执行恶意操作,可以利用用户的身份在目标网站上执行未经授权的操作。 9. 远程文件包含攻击:攻击者通过在应用程序中包含远程文件,可以执行恶意代码或者获取敏感信息。

网络应用程序的问题是它们公开面向数十亿的互联网用户,其中许多人希望破坏其安全措施-不管原因如何。

在互联网的早期阶段,最常见的攻击方法之一是基本的、简单的brute force。通常是机器人或者有大量时间的人通过尝试数不清的用户名和密码组合,直到找到一个可以访问目标应用程序的组合为止。

由于密码策略、有限的登录尝试和验证码,暴力破解攻击已不再构成威胁。但是网络犯罪分子喜欢发现新的漏洞并利用它们进行新的攻击类型。很久以前,他们发现应用程序或者网页上的文本字段可以通过输入或注入意外的文本来利用,这会迫使应用程序进行意料之外的操作。这就是所谓的注入攻击。

注入攻击不仅可以用于在不知道用户名和密码的情况下登录应用程序,还可以暴露私人、机密或敏感信息,甚至接管整个服务器。因此,这些攻击不仅对应用程序本身构成威胁,还对存储在这些应用程序上的用户数据构成威胁,并且在最糟糕的情况下,还对其他连接的应用程序和服务构成威胁。

代码注入

代码注入是最常见的注入攻击类型之一。如果攻击者了解网站应用程序使用的编程语言、框架、数据库或操作系统,他们可以通过文本输入字段注入代码,迫使Web服务器执行他们想要的操作。

这些类型的注入攻击可以在缺乏输入数据验证的应用程序上实施。如果文本输入字段允许用户输入任何内容,那么该应用程序就有潜在的可利用性。为了防止这些攻击,应用程序需要尽可能地限制用户可以输入的内容。

例如,它需要限制预期数据的数量,在接受数据之前检查数据格式,并限制允许的字符集。

代码注入漏洞可能很容易找到,只需测试不同类型的内容在Web应用程序的文本输入中。一旦找到漏洞,它们在被利用时通常是相对困难的。但是当攻击者成功利用其中一个漏洞时,可能会造成机密性、完整性、可用性或应用程序功能的丧失。

SQL注入

与代码注入类似,这种攻击在文本输入字段中插入一个SQL脚本-大多数数据库用于执行查询操作的语言。该脚本被发送到应用程序,应用程序直接在其数据库上执行该脚本。结果,攻击者可以绕过登录界面或进行更危险的操作,例如直接从数据库中读取敏感数据、修改或破坏数据库数据,或在数据库上执行管理员操作。

由于其旧的功能接口,PHP和ASP应用程序容易受到SQL注入的攻击。而J2EE和ASP.Net应用程序通常更受到保护。当发现SQL注入漏洞时-它们很容易被发现-潜在攻击的影响仅由攻击者的技能和想象力所限制。因此,SQL注入攻击的影响无疑是很高的。

命令注入

这些攻击也是可能的,主要是由于不足的输入验证。它们与代码注入攻击的区别在于,攻击者插入的是系统命令而不是编程代码或脚本。因此,黑客不需要知道应用程序的基于的编程语言或数据库使用的语言,但他们需要了解托管服务器使用的操作系统。

通过privileges of the application,插入的系统命令将由主机操作系统执行,这可能导致在服务器上公开任意文件的内容,显示服务器的目录结构,更改用户密码等。

系统管理员可以通过限制服务器上运行的Web应用程序的系统访问级别来防止这些攻击。

跨站脚本攻击

每当应用程序在生成的输出中插入来自用户的输入时,而不对其进行验证或编码,都会给攻击者发送恶意代码的机会。跨站脚本攻击利用这些机会将恶意脚本注入到受信任的网站中,最终发送给应用程序的其他用户,这些用户成为攻击者的受害者。

受害者的浏览器将在不知情的情况下执行恶意脚本,认为其是可信任的。因此,浏览器将允许脚本访问会话令牌、Cookie或浏览器存储的敏感信息。如果编写得当,脚本甚至可以重写HTML文件的内容。

跨站脚本攻击通常可以分为两种不同的类型:存储型和反射型。

存储型跨站脚本攻击中,恶意脚本永久驻留在目标服务器上,例如在消息论坛、数据库、访客日志等中。受害者在其浏览器请求存储的信息时获取到它。在反射型跨站脚本攻击中,恶意脚本在包含发送到服务器的输入的响应中反射。例如,这可以是错误消息或搜索结果。

XPath注入

当Web应用程序使用用户提供的信息来构建用于XML数据的XPath查询时,此类攻击就有可能发生。这种攻击的工作方式类似于SQL injection:攻击者发送格式错误的信息给应用程序,以了解XML数据的结构,然后再次进行攻击以访问该数据。

XPath是一种标准语言,类似于SQL,可以指定要查找的属性。为了对XML数据执行查询,Web应用程序使用用户输入来设置数据应匹配的模式。通过发送格式错误的输入,模式可以转变为攻击者希望应用于数据的操作。

与SQL不同,XPath没有不同的版本。这意味着无论使用什么实现,都可以在使用XML数据的任何Web应用程序上进行XPath注入。这也意味着攻击可以自动化;因此,与SQL注入不同,它有潜力针对任意数量的目标进行攻击。

邮件命令注入

此攻击方法可用于利用构建IMAP或SMTP语句时未经适当验证的用户输入的电子邮件服务器和应用程序。有时,IMAP和SMTP服务器对攻击没有像大多数Web服务器那样强大的保护措施,因此可能更容易受到攻击。通过邮件服务器进入,攻击者可以规避诸如验证码、限制请求数量等限制。

要利用SMTP服务器,攻击者需要一个有效的电子邮件帐户以发送带有注入命令的消息。如果服务器存在漏洞,它将响应攻击者的请求,允许他们突破服务器限制并使用其服务发送垃圾邮件。

IMAP注入主要可以在Web邮件应用程序上执行,利用消息阅读功能。在这些情况下,攻击可以通过在Web浏览器的地址栏中输入带有注入命令的URL来执行。

CRLF注入

在网页表单输入字段中插入回车和换行字符(组合称为CRLF)表示一种称为CRLF注入的攻击方法。这些不可见字符表示许多传统互联网协议(如HTTP,MIME或NNTP)中的行尾或命令结束。

例如,在HTTP请求中插入CRLF,然后是某些特定的HTML代码,可以向网站的访问者发送自定义的网页。

这种攻击可以在易受攻击的Web应用程序上执行,这些应用程序没有对用户输入进行适当的过滤。这种漏洞为其他类型的注入攻击(如XSS和代码注入)打开了大门,并且还可能导致网站被劫持。

主机头注入

在托管许多网站或Web应用程序的服务器中,主机头变得必要,以确定哪个托管网站或Web应用程序(每个都称为虚拟主机)应处理传入的请求。标题的值告诉服务器将请求分派给哪个虚拟主机。当服务器收到无效的主机标头时,通常会将其传递给列表中的第一个虚拟主机。这构成了攻击者可以使用的漏洞,以向服务器的第一个虚拟主机发送任意主机标头。

对主机头的操纵通常与PHP应用程序相关,尽管也可以使用其他Web开发技术进行。主机头攻击可用作其他类型攻击(如Web缓存污染)的启用器。其后果可能包括攻击者执行敏感操作,例如密码重置。

LDAP注入

LDAP是一种旨在方便在网络中搜索资源(设备、文件、其他用户)的协议。对于企业内部网络非常有用,当作为单点登录系统的一部分使用时,它可以用于存储用户名和密码。LDAP查询涉及使用影响其控制的特殊控制字符。如果攻击者可以在LDAP查询中插入控制字符,他们有可能改变LDAP查询的预期行为。

再次强调,允许LDAP注入攻击的根本问题是未经正确验证的用户输入。如果用户发送给应用程序的文本在未进行净化的情况下用作LDAP查询的一部分,则通过在输入字符串中的适当位置使用星号(*),查询可能最终检索到所有用户的列表,并将其显示给攻击者。

预防注入攻击

正如我们在本文中所看到的,所有注入攻击都针对具有对任何互联网用户开放访问权限的服务器和应用程序。预防这些攻击的责任分散在应用程序开发人员和服务器管理员之间。

应用程序开发人员需要了解不正确验证用户输入所涉及的风险,并学习使用风险预防目的的最佳实践来净化用户输入。服务器管理员需要定期审计其系统以检测和尽快纠正漏洞。执行这些审计的选项有很多,可以根据需要或自动执行。

类似文章