存储过程滥用
存储过程滥用 是什么?
存储过程滥用利用具有特权或实现不安全的数据库存储过程执行任意 SQL、操作系统命令,或从数据库层进行权限提升。
存储过程将 SQL 封装在数据库服务器上,通常以较高权限运行。当攻击者可调用危险内置过程(SQL Server 的 xp_cmdshell、OPENROWSET、sp_OACreate;Oracle 的 UTL_FILE、DBMS_SCHEDULER;PostgreSQL 的 COPY ... PROGRAM),或自定义过程在 EXEC/sp_executesql 中拼接参数而未做绑定时,即可在受信任代码内重新引入 SQL 注入。后果包括以数据库服务账户身份执行命令、通过链接服务器横向移动、借助文件写入进行数据外发,以及绕过应用层访问控制。加固措施:禁用危险过程、最小权限运行、对 sp_executesql 使用强类型参数,并严格限制 EXECUTE 权限。
● 示例
- 01
在 SQL Server 注入后调用 xp_cmdshell,以数据库服务账户执行 whoami。
- 02
通过自定义过程触发 PostgreSQL 的 COPY ... PROGRAM,启动反向 shell。
● 常见问题
存储过程滥用 是什么?
利用具有特权或实现不安全的数据库存储过程执行任意 SQL、操作系统命令,或从数据库层进行权限提升。 它属于网络安全的 攻击与威胁 分类。
存储过程滥用 是什么意思?
利用具有特权或实现不安全的数据库存储过程执行任意 SQL、操作系统命令,或从数据库层进行权限提升。
存储过程滥用 是如何工作的?
存储过程将 SQL 封装在数据库服务器上,通常以较高权限运行。当攻击者可调用危险内置过程(SQL Server 的 xp_cmdshell、OPENROWSET、sp_OACreate;Oracle 的 UTL_FILE、DBMS_SCHEDULER;PostgreSQL 的 COPY ... PROGRAM),或自定义过程在 EXEC/sp_executesql 中拼接参数而未做绑定时,即可在受信任代码内重新引入 SQL 注入。后果包括以数据库服务账户身份执行命令、通过链接服务器横向移动、借助文件写入进行数据外发,以及绕过应用层访问控制。加固措施:禁用危险过程、最小权限运行、对 sp_executesql 使用强类型参数,并严格限制 EXECUTE 权限。
如何防御 存储过程滥用?
针对 存储过程滥用 的防御通常结合技术控制与运营实践,详见上方完整定义。
存储过程滥用 还有哪些其他名称?
常见的别称包括: xp_cmdshell 滥用。