Reemplazar cadenas de texto en MySQL con REPLACE

En la entrada de hoy os voy a enseñar cómo reemplazar código en una bbdd mediante mysql_replace, algo muy útil sobretodo tras haber detectado una intrusión.

En ocasiones los atacantes hacen uso de vulnerabilidades en el código de las webs para realizar ataques de inyección de código SQL en las bases de datos, provocando después redirecciones no deseadas, o que se muestren pop-ups malignos, etc.. Por supuesto, el problema principal está en nuestra web y debemos buscar el origen del problema y solucionarlo, pero, si la intrusión ya ha sido realizada, nuestra prioridad es eliminar la misma.

Una vez tengamos claro que la intrusión no ha sido en el código (mediante ficheros .php ilegitimos, o redirecciones malignas dentro de ficheros .php legítimos), debemos buscar la misma en la bbdd, por ejemplo, si observamos que nuestra web intrusionada redirige a http://hackerman.com, una buena forma de encontrar esta intrusión sería sacar un dump de la bbdd y con un grep buscar por “hackerman”, muy probablemente encontraríamos algo así:

 

Cuando hayamos localizado donde se encuentra esta redirección maligna, una posible solución sería usar sed para editar el dump y después volver a volcarlo, pero debido a la sintaxis de sed y que es necesario escapar bastantes caracteres para limpiar la intrusión, es más sencillo utilizar mysql_replace.

Para ello, y siempre disponiendo de un dump de la bbdd como respaldo, procederiamos a entrar a MySQL y lanzaremos un replace por tablas, de la siguiente manera:

La sintaxis es:

UPDATE nombre_tabla SET nombre_campo = REPLACE ( nombre_campo, ‘cadena de texto a remplazar’, ‘texto a poner’ );

Por lo que debemos lanzarlo en todas las tablas y campos en las que haya contenido maligno, aunque generalmente los atacantes solo suelen realizar estas intrusiones en una tabla y campo.

Espero que os sirva si alguna vez tenéis la mala suerte de que os inyecten código SQL 😉

Deja un comentario

Tu email nunca se publicará.