描述
这种攻击利用目标软件,构造基于用户输入的SQL语句。攻击者工艺输入字符串,这样当目标软件构造基于输入SQL语句,生成的SQL语句执行行为以外的其他应用程序。应用程序的SQL注入的结果从失败中适当验证输入。
扩展描述
当精雕细琢组成的用户控制输入SQL语法使用没有适当的验证作为SQL查询的一部分,可以从数据库收集信息的方式而不是在应用程序设计期间设想。根据数据库和应用程序的设计,也可以利用注入的数据库系统相关的命令执行攻击者的选择。SQL注入攻击者可以直接与数据库交互,因此完全绕过应用程序。成功注射可能导致信息披露以及添加或修改数据库中的数据的能力。
攻击的可能性
典型的严重性
的关系
此表显示了其他的攻击模式和高水平类别相关的这种攻击模式。这些关系被定义为ChildOf ParentOf,给类似的项目可能存在的洞察力在较高和较低的抽象级别。此外,关系如光束,PeerOf, CanAlsoBe定义显示类似的攻击模式,用户可能想要探索。
自然 |
类型 |
ID |
的名字 |
ChildOf |
元在CAPEC攻击模式——元级别攻击模式的量化无疑是一个抽象的描述一个特定的方法或技术用于攻击。元攻击模式往往是空虚的一个特定的技术或实现,旨在提供一个高水平的理解方法。元级攻击模式是一个泛化的攻击模式相关的标准水平。元级攻击模式尤其适用于架构和设计水平的威胁建模练习。 |
248年 |
命令注入 |
ParentOf |
详细的攻击模式-一个详细级别攻击模式CAPEC提供了一个低水平的细节,通常利用一个特定的技术和针对特定的技术,并表达一个完整的执行流程。详细的攻击模式比元更具体的攻击模式和标准的攻击模式,通常需要一个特定的保护机制来减轻实际攻击。详细的级别攻击模式通常会利用许多不同的标准水平攻击模式链接在一起来完成一个目标。 |
7 |
SQL盲注 |
ParentOf |
详细的攻击模式-一个详细级别攻击模式CAPEC提供了一个低水平的细节,通常利用一个特定的技术和针对特定的技术,并表达一个完整的执行流程。详细的攻击模式比元更具体的攻击模式和标准的攻击模式,通常需要一个特定的保护机制来减轻实际攻击。详细的级别攻击模式通常会利用许多不同的标准水平攻击模式链接在一起来完成一个目标。 |
108年 |
通过SQL注入命令行执行 |
ParentOf |
详细的攻击模式-一个详细级别攻击模式CAPEC提供了一个低水平的细节,通常利用一个特定的技术和针对特定的技术,并表达一个完整的执行流程。详细的攻击模式比元更具体的攻击模式和标准的攻击模式,通常需要一个特定的保护机制来减轻实际攻击。详细的级别攻击模式通常会利用许多不同的标准水平攻击模式链接在一起来完成一个目标。 |
109年 |
对象关系映射注入 |
ParentOf |
详细的攻击模式-一个详细级别攻击模式CAPEC提供了一个低水平的细节,通常利用一个特定的技术和针对特定的技术,并表达一个完整的执行流程。详细的攻击模式比元更具体的攻击模式和标准的攻击模式,通常需要一个特定的保护机制来减轻实际攻击。详细的级别攻击模式通常会利用许多不同的标准水平攻击模式链接在一起来完成一个目标。 |
110年 |
SQL注入通过SOAP参数篡改 |
ParentOf |
详细的攻击模式-一个详细级别攻击模式CAPEC提供了一个低水平的细节,通常利用一个特定的技术和针对特定的技术,并表达一个完整的执行流程。详细的攻击模式比元更具体的攻击模式和标准的攻击模式,通常需要一个特定的保护机制来减轻实际攻击。详细的级别攻击模式通常会利用许多不同的标准水平攻击模式链接在一起来完成一个目标。 |
470年 |
扩大控制操作系统从数据库中 |
此表显示了这种攻击模式的观点属于和顶级类别内的这一观点。
执行流程
探索
问卷调查应用程序:攻击者首先需要一个公开的库存的功能的应用程序。
技术 |
蜘蛛网站所有可用的链接 |
嗅探网络通信与应用程序使用WireShark等效用。 |
实验
确定用户可控输入容易注入:确定用户可控输入容易注入。为每个用户可控输入容易受到SQL注入攻击者怀疑,试图注入具有特殊意义的字符在SQL(单引号等字符,一个双引号字符,两个连字符,一个括号,等等)。我们的目标是创建一个SQL查询语法是无效的。
技术 |
使用web浏览器将输入文本字段或通过HTTP GET参数。 |
使用一个web应用程序调试工具如篡改数据,TamperIE, WebScarab,等等。修改HTTP POST参数,隐藏字段,non-freeform字段等。 |
使用网络级数据包注入工具如netcat注入输入 |
使用修改客户端(由逆向工程修改)注入输入。 |
实验使用SQL注入漏洞:在确定一个给定的输入是容易受到SQL注入,假设底层查询是什么样子。反复尝试添加逻辑查询从数据库中提取信息,或修改或删除数据库中的信息。
技术 |
使用公共资源,如“SQL注入小抄”在http://ferruh.mavituna.com/makale/sql-injection-cheatsheet/,并尝试不同的方法来添加逻辑SQL查询。 |
添加逻辑查询,并使用从服务器调试查询详细的错误消息。例如,如果一个查询添加一个单引号导致一个错误消息,试着:“' OR 1 = 1;——”,或者别的什么语法假设查询完成。迭代优化查询。 |
使用“盲目SQL注入”技术提取的信息数据库模式。 |
如果一个拒绝服务攻击目标,尝试堆积查询。这并不是在所有平台上工作(最明显的是,它不工作在Oracle或MySQL)。试着输入的例子包括:“‘;删除表SYSOBJECTS;——“和”);删除表SYSOBJECTS;——“。这些特定的查询可能不会奏效,因为SYSOBJECTS表通常是受保护的。 |
利用
利用SQL注入漏洞:提炼和添加各种逻辑SQL查询后,工艺和执行底层SQL查询将被用于攻击目标系统。目的是揭示、修改和/或删除数据库数据,使用前面步骤中获得的知识。这可能需要制定和执行多个SQL查询如果拒绝服务攻击的意图。
先决条件
SQL查询应用程序使用的存储、检索或修改数据。 |
用户可控输入不正确验证应用程序SQL查询的一部分。 |
技能要求
(等级:低) 是相当简单的人基本的SQL执行SQL注入、知识。然而,在某些情况下,可能需要使用特定的知识数据库。 |
所需资源
指标
太多的错误或无效的查询到数据库,特别是那些畸形造成的输入。 |
后果
这个表指定不同的个体与攻击模式相关的后果。范围确定违反了安全属性,而影响了负面的技术影响,如果敌人成功的攻击。可能提供的信息如何可能的具体结果预计将看到列表中相对于其它后果。例如,可能有高可能性模式将被用来实现一定的影响,但较低的可能性,它将被利用来实现不同的影响。
范围 |
影响 |
可能性 |
完整性 |
修改数据 |
|
保密 |
读取数据 |
|
保密
完整性
可用性 |
执行未经授权的命令 |
|
保密
访问控制
授权 |
获得特权 |
|
缓解措施
强大的输入验证,所有用户可控的输入必须验证和过滤非法字符以及SQL内容。关键字如工会、选择或插入必须过滤除字符如单引号(')或sql注释(——)基于上下文的出现。 |
使用参数化查询或存储过程参数化原因被限制在特定的输入域,如字符串或整数,以外的任何输入这些域被认为是无效的,查询失败。注意,SQL注入可能甚至在存储过程的存在,如果最终动态构造查询。 |
使用自定义的错误页面,攻击者可以收集信息的本质从描述性查询错误消息。输入验证必须加上自定义的错误页面,通知一个错误没有披露信息数据库或应用程序。 |
例子,实例
与PHP-Nuke 7.9和更早的版本上,攻击者可以成功访问和修改数据,包括用户名和密码散列等敏感内容,通过SQL注入和妥协的应用程序。对SQL注入的保护机制采用denylist输入验证方法。然而,由于denylist不当,有可能注入内容如“foo”/ * * /联盟”或“foo / * * /”绕过验证和从数据库中收集敏感信息。参见:cve - 2006 - 5525 |
分类法映射
引用
内容的历史
提交 |
提交日期 |
提交者 |
组织 |
2014-06-23
(版本2.6) |
CAPEC内容团队 |
manbetx客户端首页 |
|
修改 |
修改日期 |
修饰符 |
组织 |
2017-08-04
(版本2.11) |
CAPEC内容团队 |
manbetx客户端首页 |
更新Resources_Required |
2018-07-31
(版本2.12) |
CAPEC内容团队 |
manbetx客户端首页 |
更新引用,Related_Weaknesses |
2019-04-04
(版本3.1) |
CAPEC内容团队 |
manbetx客户端首页 |
更新Execution_Flow |
2020-07-30
(版本3.3) |
CAPEC内容团队 |
manbetx客户端首页 |
更新Example_Instances Related_Weaknesses |
2020-12-17
(版本3.4) |
CAPEC内容团队 |
manbetx客户端首页 |
更新引用,Taxonomy_Mappings |
2021-06-24
(版本3.5) |
CAPEC内容团队 |
manbetx客户端首页 |
更新描述 |
2022-02-22
(版本3.7) |
CAPEC内容团队 |
manbetx客户端首页 |
更新描述,Extended_Description |
|