Automágica: durante 2017 estoy trabajando bastante en Automágica, mi software para editar libros: Más información - Posts relacionados

Limpiar Wordpress infectado

Si tenés un blog con Wordpress y te atrasás con las actualizaciones (o no) tarde o temprano te embocan (no es la primera vez que me pasa). Alguna herramienta automática detecta que estás corriendo una versión vulnerable a cierto fallo de seguridad reciente y otra inserta código malicioso en todos los archivos de tu sistema de blogging en los que pueda escribir.

Las consecuencias son que cuando tus visitantes intenta entrar al blog son redirigidos a un sitio porno o de venta de Viagra. Si se accede con Chrome a uno de estos sitios infectados, un enorme cartel rojo de avisa que el sitio incluye contenido de una web rumana reportada como distribuidora de malware.

Tu hosting te manda un mail diciéndote que no te sientas solo por que no lo estás, pero en realidad si lo estás. Te recomiendan cosas poco prácticas como actualizar, cambiar claves o restaurar un back-up previo a la infección. Tengo casi 1000 archivos .php llenos de código malicioso y me decís que cambié mis claves (?). Necesito una forma de arreglar esto.

Dejo aquí unos tips en base a mi experiencia personal, con la certeza de que en cualquier momento voy a volver a buscarlos por necesidad.

Muchas de las herramientas que agregan código malicioso (las más simples) agregan una línea al principio de todos los .php en los que pueden escribir. En mi caso esta línea tenía esta forma:

 <?php /**/ eval(base64_decode("aWYoZnVuY3...oZnVu"));?><?php

(código codificado que es decodificado y evaluado al ejecutar el archivo).

¿Qué archivos están infectados?

grep -l eval\(base64_decode -R *

¿Cuantos archivos hay infectados? (aprox.)

grep -l eval\(base64_decode -R * | wc -l

Limpiar todos los archivos:

for x in `grep -l eval\(base64_decode -R * | grep -v .back`; do sed -i.back '1d' $x ; sed -i '1 i 

El anterior comando busca todos los archivos infectados (excepto los que tienen extensión .back), les borra la primer línea y luego les agrega una primer línea "

Mejoras, sugerencias y correcciones bienvenidas!


Generación de imágenes con GD desde PHP

Este es un ejemplo minimalista (pero de alguna utilidad) en el que un script php devuelve una imagen.

Antes que nada

Para que funcione hay que tener instalado el paquete php4-gd, descomentar la línea extension=gd.so en el archivo /etc/php4/apache2/php.ini y reiniciar el servidor web (apache).

Barra de progreso

Este script recibe como parámetro un pocentaje (10, 20, 50 o 90, qué tan completa está una tarea) y genera la barra de progreso correspondiente.

Ver archivo: progreso.php

Si accedemos a este script desde un navegador y le damos un valor al parámetro porcentaje obtendremos imágenes como estas:

(suponiendo que el archivo está en /home/juanjo/public_html/)

http://localhost/~juanjo/progreso.php?porcentaje=10

10

http://localhost/~juanjo/progreso.php?porcentaje=20

20

http://localhost/~juanjo/progreso.php?porcentaje=60

60

http://localhost/~juanjo/progreso.php?porcentaje=90

90

Más interesante que acceder directamente a este script es utilizarlo como fuente para una etiqueta img en html. Podemos tener un template donde haya algo como esto:

<img src="progreso.php?porcentaje={P}"/>

y a P se le da un valor calculado dinámicamente cada vez que se solicita la página.

Recursos

Un ejemplo más completo en: http://www.zend.com/zend/tut/dynamic.php (fué el hola-mundo con el que empecé a probar GD)

GD en php.net: http://www.php.net/gd