什么是注入攻击?
注入攻击针对注入漏洞——这是一种非常广泛的网络安全漏洞,其中包括一些严重的应用程序安全风险。在OWASP的2021年十大风险中,注入是web应用安全的第三大风险。尽管攻击载体种类繁多,但几乎所有注入攻击的共同点都是,攻击者能够将未经验证的用户输入直接插入到执行的应用程序代码中。
根据漏洞的类型和攻击目标的不同,攻击者可能会注入数据库查询、JavaScript代码、本机应用程序代码、操作系统命令等等。成功的注入攻击可能会产生各种后果,包括数据泄露、拒绝服务、特权提升、绕过身份验证,甚至通过远程代码执行彻底破坏目标系统。
1、SQL注入 (SQLi)
绝大多数web应用都是由数据库支持的,最流行的数据库管理系统仍然使用SQL(结构化查询语言)作为数据访问语言。为了执行SQL注入攻击,网络犯罪分子将SQL语句插入到web表单、评论字段、查询字符串或其他外部用户可访问的输入通道中的数据中。恶意代码通常是用于提取敏感数据的SQL查询,但也可以用于修改数据库内容的SQL语句,包括删除(删除)数据库表。
如果目标应用程序容易受到SQL注入的攻击,它将直接将数据发送到数据库,而不检查数据是否安全。然后,数据库服务器将执行攻击者注入的恶意SQL语句,而不是存储注释或检索某些帐户数据。即使脆弱的应用程序没有直接暴露数据,攻击者也可能使用盲SQL注入来间接发现信息。
SQL注入是最古老和最危险的Web应用程序漏洞之一。在 Common Weakness Enumeration
中列为CWE-89:SQL命令中使用的特殊元素的不当中和,SQL注入在2021 年 CWE前25名中排名第6 。Invicti
检测到多种类型的SQL注入漏洞,从典型的带内 SQL注入到盲 SQL注入(包括基于布尔的)和带外SQL注入。
SQL注入是web应用程序古老而又危险的漏洞之一。在常见缺陷枚举中被列为CWE-89:在SQL命令中使用特殊元素的不当中和,SQL注入在2021年的CWE前25名中排名第6。WuKong静态软件安全测试可以在软件开发期间查找SQL注入漏洞,提高软件安全性。
2、跨站脚本(XSS)
虽然名称中没有“注入”,但跨站点脚本
(XSS)本质上是一个脚本注入漏洞。任何未能对包含脚本代码(通常是JavaScript)的用户输入进行清理的web应用程序都可能容易受到跨站脚本攻击(XSS)。要利用XSS漏洞,攻击者提供一个包含恶意代码的文本字符串,例如将其作为用户ID参数放在URL中。攻击有效负载随后由受害者的浏览器执行,而不是作为常规参数值处理。
XSS攻击可能会产生严重的后果,从将用户重定向到恶意站点,到窃取会话cookie和劫持用户会话。虽然用户输入过滤可以在一定程度上降低成功攻击的风险,但有许多方法可以规避XSS过滤器,因此编写安全代码比较稳妥。
XSS被列入CWE缺陷分类CWE-79:网页生成过程中输入的不当中和,并在2021年CWE前25个最危险的软件弱点中排名第二。
3、操作系统命令注入
Web 应用程序有时可能需要在底层操作系统中执行系统命令。如果应用程序存在命令注入漏洞,攻击者可以在用户输入中提供自己的操作系统命令。成功的命令注入(又名
shell 注入)可能非常危险,因为它可以让攻击者获取有关操作系统和服务器配置的信息,升级他们的权限,甚至执行任意系统命令以完全破坏系统。
防范胜于治疗,因此最好避免从 Web 应用程序调用系统命令。当需要执行系统命令时,仔细验证用户输入并通过白名单严格进行限制。
操作系统命令注入在CWE的前25列表中排名第5名CWE-78:操作系统命令中使用特殊元素的不当中和。
4、代码注入(远程代码执行)
如果攻击者能够提供应用程序代码作为用户输入并让服务器执行它,则应用程序存在代码注入漏洞(也称为远程代码执行或 RCE)。例如,如果易受攻击的应用程序是用
PHP 编写的,则攻击者可以注入PHP代码,这些代码由Web服务器上的PHP解释器执行。
代码注入与操作系统命令注入不同,因为注入的是应用程序代码,而不是系统命令(尽管如果应用程序接受调用系统命令的恶意代码,两者可能会导致另一个)。如果攻击者设法使远程代码执行,那么应该认为目标系统受到了破坏,因此这是一个关键的漏洞。
代码注入归类为CWE-94:代码生成的不当控制。
5、XXE注入
最后一个是XML外部实体 (XXE) 注入。如果应用程序接受XML输入并配置为支持具有弱XML解析器安全性的遗留文档类型定义
(DTD),则攻击者可以向其发送特制的 XML文档,以执行从路径遍历到服务器端请求伪造 (SSRF)和远程代码执行。
与之前的四种注入攻击不同,这次注入攻击不会利用未经验证的用户输入,而是利用 XML
解析器中固有的不安全遗留功能,因此可能特别危险。如果应用程序处理XML文档,避免此漏洞的方法是禁用对dtd的支持,或者至少禁用对外部实体的支持。
与XML外部实体相关的攻击向量被分类为CWE-611:
XML外部实体引用的不当限制。XXE注入在2017年OWASP十大榜单中排名第四,2021年合并到安全配置错误类别中。
防止注入攻击
多数注入攻击都依赖于Web应用程序执行的不受信任的输入。不正确的输入验证在 CWE 前 25
名列表中排在第4位。对所有用户控制的输入进行仔细的清理、过滤和编码有助于防止绝大多数注入漏洞。
本文作者:中科天齐软件安全
本文为安全脉搏专栏作者发布,转载请注明:https://www.secpulse.com/archives/180635.html