onze sponsors
Hallo Erik,
Ook ik denk dat SQL Injectie de methode is geweest om je server te kraken. Misschien dat de inhoud van de post wat overlap heeft met die van Hugo, maar je kunt het beter maar twee keer lezen dan helemaal niet.Wat ik niet begrijp is dat de webapplicatie met het SA account inlogd. Dit "standaard" SQL account heeft administrator rechten op de SQL Server. Als SQL Injection is toegepast dan kun je zonder het wachtwoord te weten het wachtwoord wijzigen (op SQL 2000 tenminste, SQL2005 heb ik nog niet uitgeprobeerd). Dit kan door de url te injecteren met exec sp_password NULL, 'pietje puk', 'sa'.Als je ingelogd bent met sa en je kunt xp_cmdshell toepassen in de sql injectie dan kun je afhankelijk van de rechten van het account waarbij de SQL Services (MSSQLServer en SQLServer Agent) draaien een boel ellende uithalen (zeker als deze als domain admin zijn). Zet dus inderdaad xp_cmdshell uit, tenzij het absoluut noodzakelijk is.Mijn eerste advies is dan ook een aparte gebruiker aan te maken met niet meer rechten dan noodzakelijk. Geef alleen db_datareader en alleen indien nodig db_datawriter rechten. Als stored procedures worden gebruikt dan uiteraard execute rechten op deze procedures. Wat je binnen de stored procedures moet doen is de input valideren. Een SQLInjectie "hacker" maakt onder andere gebruik van conversieproblemen.Bijv http://.....asp?id=56 als je nu een string geeft bijvoorbeel http://....asp?@@version en de webserver geeft het volgende terug ergens op de webpage:
Msg 245, Level 16, State 1, Line 1 Conversion failed when converting the nvarchar value 'Microsoft SQL Server 2005 - 9.00.3054.00 (Intel X86) Mar 23 2007 16:28:52 Copyright (c) 1988-2005 Microsoft CorporationDeveloper Edition on Windows NT 6.0 (Build 6000: )' to data type int.Kortom als je parameter een numerieke waarde controleer dan tenminste of je deze ook krijgt. Een tweede tip hierbij is dat indien er toch een dergelijke melding optreedt dat je deze niet aan de webuser geeft. In bovenstaand voorbeeldje weet de "webuser" meteen waar die aan toe is. @@version was nog maar een heel onschuldig voorbeeldje.Op de volgende link kun je heel wat nuttige informatie vinden om je databases te beschermen tegen dit soort ellende. http://www.appsecinc.com/techdocs/whitepapers/research.shtmlSucces met het wederopbouwen en dichttimmeren van de website en je database.Groet,Frank