本文介绍安全审计功能支持的内置审计规则。

背景信息

内置审计规则适用的数据源为RDS。本文中的审计规则按照以下攻击场景进行分类:
说明 各审计规则无先后顺序。审计规则表格中的序号仅为了展示方便,无实际意义。

运维高危操作

序号 审计规则 序号 审计规则
1 执行FLUSH_PRIVILEGES操作 6 创建、修改、删除TABLESPACE
2 修改用户密码 7 赋予用户权限
3 收回用户权限 8 创建用户账号
4 删除用户账号 9 创建角色ROLE
5 删除角色ROLE 10 暂无

异常访问

序号 审计规则 序号 审计规则
1 调用DBMS_SHARED_POOL的行为 6 访问TABLE_PRIVILEGES表的行为
2 调用DBMS_SCHEDULER的行为 7 访问SYS_USER表的行为
3 调用DBMS_METADATA的行为 8 访问SCHEMA_PRIVILEGES表的行为
4 调用DBMS_DDL的行为 9 访问DBA_USERS表的行为
5 访问USER_PRIVILEGES表的行为 10 访问DBA_SOURCE的行为

拖库攻击

序号 审计规则 序号 审计规则
1 疑似利用UTL_FILE攻击 5 使用MySQLDUMP工具导出
2 写文件(PostgreSQL语法) 6 使用DUMPFILE导出
3 使用PG_DUMP工具导出 7 工具导出操作(Oracle语法)
4 使用OUTFILE导出 8 暂无

数据库注入

序号 审计规则 序号 审计规则
1 CASE WHEN注入探测 52 权限EXECUTE_ANY_PROCEDURE被授予给PUBLIC(Oracle语法)
2 CHAR注入探测 53 删除存储过程(SQLSERVER语法)
3 CONCAT注入探测 54 使用JAVA_SOURCE调用外部程序(Oracle语法)
4 DBA权限授权(Oracle语法) 55 使用XP_CMDSHELL
5 MAKE_SET/ELT注入探测 56 使用XP_REGREAD
6 MOF非法提权行为 57 数据库勒索攻击检测(Oracle语法)
7 O7_DICTIONARY_ACCESSIBILITY参数设置为TRUE 58 数字型注入探测
8 PHP一句话木马 59 探测PLUGINS信息
9 REMOTE_OS_AUTHENT参数设置为TRUE 60 探测表字段个数
10 SYS_DBMS_EXPORT_EXTENSION危险函数 61 提高用户权限(SQLSERVER语法)
11 UNION型NULL注入攻击 62 添加用户(SQLSERVER语法)
12 WEBSHELL关键字 63 条件判断注入探测
13 XSS跨站脚本 64 疑似JAVA注入系统命令攻击(Oracle语法)
14 包含UNION和注释 65 疑似JVM_EXP_PERMS授权攻击
15 包含UNION和字符串连接 66 疑似猜解字符关键字盲注
16 包含字符串连接和注释 67 疑似利用BENCHMARK的时间盲注
17 遍历目录字符串 68 疑似利用CAST的报错注入
18 操作LOAD_FILE函数 69 疑似利用CTXSYS_DRILOAD包的SQL注入
19 操作SYS_EVAL函数 70 疑似利用CTXSYS_DRITHSX_SN的报错注入
20 操作SYS_EXEC函数 71 疑似利用DBMS_JAVA提权
21 操作SYS_GET函数 72 疑似利用DBMS_JVM_EXP_PERMS_IMPORT_JVM_PERMS的提权
22 操作SYS_SET函数 73 疑似利用DBMS_PIPE_RECEIVE_MESSAGE的时间盲注
23 操作系统文件 74 疑似利用DBMS_UTILITY_SQLID_TO_SQLHASH的报错注入
24 操作注册表(SQLSERVER语法) 75 疑似利用DBMS_XDB_VERSION_CHECKIN的报错注入
25 查询INFORMATION库表 76 疑似利用DBMS_XDB_VERSION_MAKEVERSIONED的报错注入
26 查询域名信息(SQLSERVER语法) 77 疑似利用DBMS_XDB_VERSION_UNCHECKOUT的报错注入
27 查询账号信息(SQLSERVER语法) 78 疑似利用DBMS_XMLQUERY_NEWCONTEXT的提权
28 访问ALL_TAB_COLUMNS表的行为 79 疑似利用DELAY TIME的时间盲注
29 访问ALL_TABLES表的行为 80 疑似利用EXP的报错注入
30 访问OLE对象(SQLSERVER语法) 81 疑似利用EXTRACTVALUE的报错注入
31 访问SYSCAT_COLUMNS表的行为 82 疑似利用GENERATE_SERIES的时间盲注
32 访问SYSCAT_TABLES表的行为 83 疑似利用GEOMETRYCOLLECTION的报错注入
33 访问SYSIBM_SYSTABLES表的行为 84 疑似利用KUPW_WORKER包的SQL注入
34 访问SYSIBM_SYSUSERAUTH表的行为 85 疑似利用LINESTRING的报错注入
35 非法查询表名(DB2语法) 86 疑似利用MULTILINESTRING的报错注入
36 非法读文件(PostgreSQL语法) 87 疑似利用MULTIPOINT的报错注入
37 恢复存储过程(SQLSERVER语法) 88 疑似利用MULTIPOLYGON的报错注入
38 解释注释绕过(MySQL语法) 89 疑似利用ORDSYS_ORD_DICOM_GETMAPPINGXPATH的报错注入
39 空格绕过注入 90 疑似利用ORDSYS进行注入攻击
40 针对服务操作(SQLSERVER语法) 91 疑似利用PG_SLEEP_FOR的时间盲注
41 宽字节注入 92 疑似利用PG_SLEEP_UNTIL的时间盲注
42 利用DBA_USERS_WITH_DEFPWD读取用户密码 93 疑似利用PG_SLEEP的时间盲注
43 利用SP_OACREATE执行 94 疑似利用POLYGON的报错注入
44 利用USER$读取用户密码 95 疑似利用SLEEP的时间盲注
45 利用慢查询日志写文件(MySQL语法) 96 疑似利用UPDATEXML的报错注入
46 利用语句日志写文件(MySQL语法) 97 疑似利用UTL_INADDR_GET_HOST_NAME的报错注入
47 列目录(SQLSERVER语法) 98 疑似利用WAITFOR DELAY的时间盲注
48 判断权限(SQLSERVER语法) 99 疑似利用XMLTYPE的报错注入
49 权限ADVISOR被赋予给PUBLIC(Oracle语法) 100 异常操作UDF
50 权限CREATE_JOB被授予给PUBLIC(Oracle语法) 101 引号型注入探测
51 权限EXECUTE_ANY_PROCEDURE被授予给CONNECT(Oracle语法) 102 暂无

数据库中危操作

序号 审计规则 序号 审计规则
1 注入常用字符串函数SUBSTRING_INDEX 13 调用REGEXP函数
2 注入常用字符串函数SUBSTRING 14 调用ORD函数
3 注入常用字符串函数SUBSTR 15 调用NOT_RLIKE函数
4 注入常用字符串函数CONCAT_WS 16 调用MID函数
5 注入常用字符串函数CONCAT 17 调用LTRIM函数
6 注入常用字符串函数CHAR 18 调用LENGTH函数
7 调用TRIM函数 19 调用LEFT函数
8 调用STRCMP函数 20 调用HEX函数
9 调用RTRIM函数 21 调用ETL函数
10 调用RPAD函数 22 调用NOT_REGEXP函数
11 调用RLIKE函数 23 双减号注释
12 调用RIGHT函数 24 #号注释

数据库外联

序号 审计规则 序号 审计规则
1 疑似利用XP_SUBDIRS进行DNS带外查询 6 疑似利用UTL_INADDR_GET_HOST_ADDRESS进行DNS带外查询
2 疑似利用XP_GETFILEDETAILS进行DNS带外查询 7 疑似利用UTL_INADDR.GET_HOST_ADDRESS的报错注入/查询信息外带
3 疑似利用XP_FILEEXIST进行DNS带外查询 8 疑似利用UTL_HTTP_REQUEST进行DNS带外查询
4 疑似利用XP_DIRTREE进行DNS带外查询 9 疑似利用HTTPURITYPE进行DNS带外查询
5 疑似利用UTL_SMTP攻击 10 疑似利用DBMS_LDAP_INIT进行DNS带外查询

数据库探测

序号 审计规则 序号 审计规则
1 探测系统版本 14 当前会话用户探测(MySQL语法)
2 探测数据库用户及密码 15 查询数据库监听IP
3 探测数据库名称 16 查询日志路径(Oracle语法)
4 探测数据库版本 17 查询当前用户权限(Oracle语法)
5 探测数据库_表_字段名及数量(MySQL语法) 18 查询版本(Oracle语法)
6 探测登录用户 19 查询ORACLE_SID
7 判断是否支持XP_CMDSHELL 20 查看数据库名(SQLServe语法)
8 判断是否是MsSQL 21 查看是否是DBO(SQLServe语法)
9 利用SYS_CONTEXT查询 22 查看是否对库有读权限(SQLServe语法)
10 获取数据库信息(SQLServe语法) 23 查看客户端地址(PostgreSQL语法)
11 获取数据库版本(DB2语法) 24 查看服务器地址(PostgreSQL语法)
12 获取当前用户_SESSION用户(DB2语法) 25 查看本地服务名(SQLServe语法)
13 获取表信息(PostgreSQL语法) 26 查看XP_REGREAD存储过程(SQLServe语法)

数据库高危操作

序号 审计规则 序号 审计规则
1 注入常用字符串函数RAND 13 访问MySQL元数据库
2 注入常用字符串函数FLOOR 14 常量字符拼接LIKE查询
3 异或形式的查询 15 查询SYSFILES
4 无条件删除记录 16 查看数据库安装路径
5 位计算的查询 17 包含HOSTNAME的变量
6 同一条请求包含多条SQL语句 18 包含HAVING与整型常量的查询
7 删除数据库 19 WHERE后常量运算
8 删除数据表 20 SELECT后无列名连续常量使用
9 连续等号注入 21 使用了LIMIT 0
10 获取元数据库信息 22 LIKE情况判定条件恒为真
11 获取数据库性能参数 23 HAVING语句为字符常量
12 获取当前数据库名称SCHEMA 24 OR情况下的判定条件固定

缓冲区溢出

序号 审计规则 序号 审计规则
1 疑似利用DBMS_SYSTEM_KSDWRT缓冲区溢出漏洞 4 疑似利用DBMS_REPCAT_ADMIN缓冲区溢出漏洞
2 疑似利用DBMS_REPCAT缓冲区溢出漏洞 5 疑似利用CREATE_DATABASE_LINK缓冲区溢出漏洞
3 疑似利用DBMS_REPCAT_RGT缓冲区溢出漏洞 6 疑似数据库MALLOC_LIB漏洞利用