capec - 470:扩大控制操作系统从数据库中 |
描述
攻击者可以利用访问获得数据库读/写数据到文件系统,妥协的操作系统,创建一个通道来访问主机,使用这个访问潜在攻击其他机器在同一个网络数据库的机器。传统SQL注入攻击被视为一种获得未授权读取访问数据存储在数据库中,数据库中修改数据,删除数据,等。然而,几乎每一个数据库管理系统(DBMS)系统包括设施,如果妥协允许攻击者访问文件系统,操作系统,和完全访问主机运行数据库。攻击者可以使用这个特权访问启动后续的攻击。这些设施包括下降到一个命令shell,创建用户定义的函数可以调用系统级图书馆目前主机,存储过程等。
典型的严重性
执行流程
探索
-
对手识别数据库管理系统运行在一台计算机上,他们想控制,或通过网络上他们想横向移动。
实验
-
的对手是SQL注入的典型步骤,并确定如果注射是可能的。
-
一旦对手确定一个SQL注入是可能的,他们必须确保攻击的要求得到满足。这些都是高特权用户会话和批处理查询的支持。以相似的方式这样做是发现如果一个SQL注入是可能的。
-
如果需求得到满足,基于数据库管理系统运行,对手会找到或创建用户定义的函数(udf),可以加载dll。一个DLL的例子可以在https://github.com/rapid7/metasploit-framework/tree/master/data/exploits/mysql上找到
-
为了加载DLL,对手必须首先找到插件目录的路径。命令来实现这一基于DBMS的类型不同,但对于MySQL,这可以通过运行命令“选择@@plugin_dir”
利用
-
然后进入DLL之前发现插件目录所包含的函数可以被加载。这可以通过多种方式;从网络共享文件加载,整个十六进制编码的字符串写入一个文件的插件目录,或DLL加载到一个表,然后到一个文件中。一个例子使用MySQL负载十六进制字符串如下。选择0 x4d5a9000…到转储文件“{插件目录}\ \ udf.dll”;
-
一旦DLL的插件目录,然后运行命令来加载udf。一个这样的例子在MySQL中是“创建函数sys_eval返回字符串soname udf.dll”;“The function sys_eval is specific to the example DLL listed above.
-
一旦对手加载所需的函数(s),他们将使用这些妥协系统上执行任意命令。这是通过一个简单的select命令加载UDF。例如:“选择sys_eval (“dir”);“。因为这种攻击的前提是数据库会话的用户是一个超级用户,这意味着对手能够以更高权限执行命令。
先决条件
一个脆弱的DBMS使用系列定时SQL注入的存在使攻击者访问数据库或攻击者通过其他方式访问DBMS |
技能要求
(级别:高) 低水平的知识不同的DBMS系统中可用的各种设施与文件系统和操作系统进行交互 |
缓解措施
设计:按照防御性编程实践需要防止SQL注入应用程序访问数据库 |
配置:确保DBMS修补与最新的安全补丁 |
设计:确保DBMS登录应用程序所使用的DBMS的最低级别的特权 |
设计:确保数据库管理系统运行的最低级别的特权运行在主机上,并作为一个单独的用户 |
用法:不使用DBMS机以外的任何其他数据库 |
用法:在数据库中没有任何信任主机内部网络。验证和验证所有来自数据库主机的网络活动。 |
用法:使用入侵检测系统监视网络连接并登录数据库主机。 |
实现:删除/禁用所有不必要的DBMS系统的未使用的功能,可能允许攻击者提升特权如果妥协 |
引用
内容的历史
提交 |
提交日期 |
提交者 |
组织 |
2014-06-23
(版本2.6) |
CAPEC内容团队 |
manbetx客户端首页 |
|
修改 |
修改日期 |
修饰符 |
组织 |
2020-12-17
(版本3.4) |
CAPEC内容团队 |
manbetx客户端首页 |
应对Execution_Flow更新, |
|