Antecedentes
Me contrataron para ayudar a una empresa a mantener su servidor. Trabajo en algunos proyectos PHP menores, pero también reviso los problemas de rendimiento y, recientemente, escaneo los registros para detectar piratas informáticos.
Estos chicos han estado ejecutando su servidor durante algún tiempo y tienen lo que yo llamaría una aplicación heredada en sus últimas etapas. Utiliza comillas mágicas, variables globales (que permiten $id
sobrescribirlas $_GET['id']
), usa .htaccess como su única seguridad en algunos casos, lo que sea. Una pesadilla de seguridad y programación.
Hemos sido pirateados en el pasado, principalmente con inyecciones SQL, que ejecutarían SLEEP(99999999)
comandos y actuarían como un ataque DOS. Afortunadamente no corrieron "pequeñas mesas de bobby",
XKCD: http://xkcd.com/327/
Entonces reescribí sus declaraciones SQL vulnerables desde mysql_query()
(no mysqli) a las transacciones PDO. También estoy analizando las consultas para SLEEP
y UNION
, que no usamos pero que tienen las inyecciones. Hasta aquí todo bien.
Último edicion
Recientemente nos han dicho que los registros están cambiando en la base de datos para los usuarios, como sus direcciones de correo electrónico a las presumiblemente hechas por los spammers.
Me di cuenta de que sus columnas no tenían una last_modified
columna, por lo que ni siquiera pudimos saber cuándo se estaban cambiando, y mucho menos quién. Agregué esa columna, pero ese es apenas un primer paso.
Cuando estaba mirando esta tabla, noté que las contraseñas no estaban saladas ni picadas, solo guardadas como texto sin formato.
Comunicación con el cliente
¿Cómo puedo acercarme a ellos acerca de toda la situación, como contratista, sin agitar los brazos como un loco? ¿Algún consejo? Estaba pensando en un enfoque tranquilo de,
NÚMERO 1 Sinopsis Por qué esto es un problema ¿Qué puede pasar si esto no se soluciona? Solución sugerida NÚMERO 2 Sinopsis Por qué esto es un problema ¿Qué puede pasar si esto no se soluciona? Solución sugerida