一、命令执行,UDF(User-Defined Functions)
MySQL中,除了可以通过webshell间接执行命令外还可以通过UDF来执行命令。此功能已经集成到Sqlmap中了。
通过lib_mysqludf_sys提供的几个函数来执行系统命令,其中的两个重要的函数:sys_eval()和sys_exec()。函数如下:
sys_eval,执行任意命令,并将输出返回。
sys_exec,执行任意命令,并将退出码返回。
sys_get,获取一个环境变量。
sys_set,创建或修改一个环境变量。
二、攻击存储过程:
在SQL Server中存储过程“xp_cmdshell” 可谓是臭名昭著了,xp_cmdshell扩展存储过程讲命令字符串作为操作系统命令shell执行,并以文本的形式返回所有输出。
使用:
EXEC master.dbo.xp_cmdshell ‘cmd.exe dir c:‘ EXEC master.dbo.xp_cmdshell ‘ping ‘
分别为通过数据库master,利用xp_cmdshell 来执行cmd 和 ping。
开启方式:
1、使用sql语句开启
通过查询分析器,选择Master数据库,然后执行以下SQL内容:
sp_configure ‘show advanced options‘,1 reconfigure go sp_configure ‘xp_cmdshell‘,1 reconfigure go
执行后结果:
配置选项 ‘show advanced options‘ 已从 0 更改为 1。请运行 RECONFIGURE 语句进行安装。
配置选项 ‘xp_cmdshell‘ 已从 0 更改为 1。请运行 RECONFIGURE 语句进行安装。
注:如需关闭只需将“sp_configure ‘xp_cmdshell‘,1”改为“sp_configure ‘xp_cmdshell‘,0”即可。
2、SQL SERVER "外围应用配置器"开启:https://www.cnblogs.com/TBW-Superhero/p/6871982.html。
除了xp_cmdshell外,还有一些其他的存储过程也可以利用,例如xp_regread可以操作注册表,xp_servicecontrol(允许用用户,启动、停止服务)。
3、存储过程本身也可能存在注入漏洞,加入参数由外部传入,并且没有经过任何处理,进有可能造成注入。