sql被注入,用友不能建账
最近倒霉啊,估计sql的sa密码太简单,被注入了代码,结果用友想建立一套帐也建不了了。建账的时候出现“神马都。。。 无法装载dll 原因126。。。”之类的,一看就知道被黑了。
网上找到一篇文章,看上去有用 http://blog.csdn.net/dxw122/article/details/6266104
下面是跟着他做,先检查xp_cmdshell是否被篡改:
use master
go
select * from syscomments where object_name(id)='xp_cmdshell' and text<>'xplog70.dll'
go
结果发现被修改了,修复如下:
drop procedure xp_cmdshell
go
exec sp_addextendedproc N'xp_cmdshell', N'xplog70.dll'
继续检查其他存储过程:
select object_name(id), * from syscomments where object_name(id) in
('xp_getfiledetails','xp_availablemedia','xp_dirtree','xp_fixeddrives','xp_subdirs',
'xp_fileexist','xp_get_tape_devices','sp_MSgetversion','xp_enumdsn','xp_regread',
'xp_regwrite','xp_regdeletevalue','xp_regaddmultistring','xp_regremovemultistring',
'xp_regenumkeys','xp_regenumvalues','xp_regdeletekey','xp_instance_regread',
'xp_instance_regwrite','xp_instance_regdeletevalue','xp_instance_regaddmultistring',
'xp_instance_regremovemultistring','xp_instance_regenumkeys','xp_instance_regenumvalues')
and text <>N'xpstar.dll'
go
发现有好几个存储过程被修改了,记下被修改的过程名
对发现的被修改的存储过程,执行下面语句
drop procedure 存储过程名称
go
exec sp_addextendedproc N'存储过程名称', N'xpstar.dll'
然后执行下面语句验证xp_cmdshell是否正确
xp_cmdshell 'dir c:'
如果该语句异常,还有可能sql server服务的启用账户(一般情况下是system)没有
访问system32/cmd.exe文件的权限,加上权限即可
发现不正常,用cacls看看好像有权限,但就是不正常。后来只好想了个其他办法,就是把启动sql的账户从本地系统账户改为administrator账户,结果正常了
理论上应该正常了,接下来用友建账,还是失败。。。
继续找原因,想起来建账出错时不是出现了“神马”两个字吗?
select object_name(id),* from syscomments where text like '神马%'
居然发现还有8个存储过程被修改,分别是:
sp_oacreate, sp_oamethod, sp_oastop, sp_oageterrorinfo, sp_oadestroy, sp_oagetproperty, sp_oasetproperty, xp_readerrorlog
其中前7个对应的text应为odsole70.dll,最后一个对应的text应为xpstar.dll
再用上面的方法修复这8个存储过程
用友建账,终于通过,总是没白忙,谢谢上面的老兄相助