Entradas sospechosas en la base de datos MySQL de formularios de entrada de usuario - ¿Inyección de SQL?

2

Construí un sitio web desde cero utilizando PHP y MySQL para mi comunidad residencial y nuestro presupuesto es un gran '0'.

Hace cinco días descubrí que había 222 entradas en una tabla en mi base de datos que parecían sospechosas. Encontré otras 196 entradas en otra tabla con entradas similares. Todas estas entradas se realizaron dentro de un lapso de 11 horas.

Desde entonces he estado rompiéndome la cabeza tratando de 1. Encuentre formas de evitar que ocurran tales cosas, básicamente tratando de aprender y convertir mi PHP a MySQLi (mi host no admite PDO) y 2. tratando de averiguar con seguridad si se trata de un ataque de inyección SQL. 3. el registro de Apache para el día relevante tenía un tamaño de 4976Kb mientras que, en todos los demás días, es menor que 50Kb 4. También he tomado un volcado de una de las tablas (222 registros).

  • Lo que me gustaría saber es, ¿cuál de estos es el primer lugar para visitar?
  • ¿Primero estudio los registros para intentar averiguar qué obtuvieron de este ejercicio?
  • ¿Estudio las entradas de la tabla para averiguar cómo lo hicieron?
  • ¿Anulo el sitio?
  • ¿Limpio mis tablas, cambio las contraseñas existentes, etc.? (afortunadamente, dado que este sitio no se ha 'lanzado', no hay datos que deba conservar, ¡simplemente puedo vaciar todas las tablas!)

La búsqueda en SE me ha dado mucho que pensar, especialmente enlace y la respuesta de RobM tenía mucho sentido.

No sé las implicaciones de lo que veo en mis tablas. Algunas de las entradas no se muestran en la vista previa, obviamente porque contiene caracteres especiales. Me hubiera encantado poder subir el volcado de Excel de la tabla en cuestión, pero eso no parece ser posible aquí ...

No quiero eliminar estas entradas antes de que pueda entender lo que podrían significar y cuánto estoy comprometido. Al mismo tiempo, no estoy seguro de que dejarlos allí pueda causarme más daño ...

    
pregunta vinaya 06.07.2013 - 07:51
fuente

2 respuestas

4

Es posible que haya estado sujeto al proceso llamado "Fuzzing". Esto es cuando un atacante envía muchas entradas y percibe cómo se comporta su aplicación web. Web Fuzzing podría incluir inyección sql, XSS, entrada overladed o cadenas de entrada no válidas en general.

Bueno, primero debes mirar las entradas .. ¿Contienen comandos SQL? como SELECCIONAR, ACTUALIZAR, BORRAR, INSERTAR
o operadores sql, como OR + - o muchos caracteres sql como '> <="

Si los ves, significa que el pirata informático probó una inyección de SQL en tu base de datos.

Si ves caracteres HTML en tu base de datos, el atacante intentó ejecutar XSS almacenados contra ti.

Si las entradas son largas, el atacante quizás intente DOS su sitio web y lo desactive. (Lo mismo es cierto si envió muchos comentarios en poco tiempo).

Debe observar la funcionalidad de su sitio que aceptó esos valores. Si las entradas / entradas no provienen de una funcionalidad específica (por ejemplo, un formulario de registro) de lo que probablemente fue un intento de piratería.

Otros tipos de inyecciones que salen son LDAP, XML, Command y algunos más que no puedo recordar. Busque caracteres que contengan lo siguiente:%, > , (,), ", ', puntos, comas.

Puedes probarlo con los comandos / operadores de mysql: 1) Me gusta '% searchStringGoesHere%' 2) PARTIDO CONTRA.

Paneles como phpmyadmin, proporciona la misma funcionalidad pero para personas que no conocen el lenguaje SQL.

Alternativamente, alguien podría haber ejecutado algún bot de SEO en su sitio, y eso fue un ataque de correo no deseado, lo cual no tiene mucho que ver con la seguridad, pero podría introducir captcha en sus formularios y tokens por cada solicitud para evitar un ataque XSRF

    
respondido por el BlackFire27 06.07.2013 - 13:22
fuente
1

Haz dos cosas inmediatamente. (1) recorra su código y asegúrese de que todas las entradas utilizadas para construir consultas se citan o se reinterpretan de otra manera en lugar de usarlas directamente para construir consultas. Si tiene casos en los que es difícil de hacer, apáguela, no hay sustituto. (2) centalice todas sus consultas a través de un filtro que registra CUALQUIER consulta que falla. Esto probablemente le dirá dónde (1) no tuvo éxito.

    
respondido por el ddyer 06.07.2013 - 22:01
fuente

Lea otras preguntas en las etiquetas