lunes, 21 de noviembre de 2016

Wordpress, Temas y Botnets

By @elchicodepython (Samuel López)

Cada vez más escucho a más personas decir barbaridades del estilo ¡cómo me voy a infectar con un tema si es solo la parte gráfica! No me preocuparía tanto de no ser porque es en el propio sector del desarrollo web donde lo estoy escuchando actualmente. Esto tiene una explicación y es debido a que como la tendencia en pequeños mercados a abaratar costes muchas veces llega a un punto de desarrollo insostenible.

Pasamos de crear el sitio a usar un CMS que nos adelante trabajo. Esto está muy bien pero hay que hacer un estudio previo (que en la mayoría de los casos no se hace) sobre el CMS a utilizar, los plugins y temas utilizados, sus versiones y vulnerabilidades y es muy importante que este estudio se continúe en el tiempo. 

He llegado a ver proyectos sitios web profesionales a medida aceptados por 80 euros. ¿Cuál es la única forma de rentabilizar esto? Uso de un CMS + tema gratuito que nos encontremos por la web sin revisión de código, sin mantenimiento del software -solo del hosting- y por supuesto el proyecto queda expuesto a todo lo que pueda pasar. Para llegar a ello se procede a la contratación de personas no cualificadas y a la formación básica de las mismas para su puesto de trabajo. 


Un servidor o un Hosting también puede convertirse en un zombie y puede ser más jugoso que un ordenador común ya que está encendido 24h, acceden multitud de usuarios al mismo que pueden ser infectados o usados, etc. Un ejemplo de una forma en la que los usuarios pueden ser usados es para la preparación de un ataque de denegación de servicio distribuido: DDOS. 

Me explico: Digamos que tenemos N servidores a los que individualmente de media acceden 100 personas a la vez. Si mediante javascript hacemos que estas 100*N personas empiecen a solicitar recursos a otro sitio web podríamos llegar a saturar un sitio. 

Por ejemplo: 

• 20 conexiones por persona al minuto hechas mediante javacript 
• 100 personas conectadas por servidor 
• N servidores (un tema de wordpress gratuito puede tener 200 descargas diarias fácilmente) 

20*100*N → Estaríamos realizando 2000*N conexiones por minuto a un servidor. Además teniendo en cuenta de que cada persona viene desde una dirección IP distinta frenar el ataque sería más complicado y de banear a todas estaríamos perdiendo un público enorme para nuestro sitio web ya que ellos no son conscientes de que su navegador en segundo plano está consumiendo nuestros recursos. 

Es el ejemplo más básico que se me ha ocurrido pero se pueden hacer innumerables cosas. Para hacer la demo he aprendido en un par de tardes como hacer temas y he creado un tema muy básico que aparentemente no tiene ningún bichito. 


Dentro de la apariencia seria y formal del sitio se esconde un peculiar código de 3 escasas líneas que lo convierte en zombie.


Para la demo implantaremos un sistema de comunicación por el cual un atacante pueda enviar código a todas las instalaciones wordpress que tenga instalado el tema. La demo no sería funcional a gran escala, habría que modificarla ligeramente para ello pero dar una herramienta para hacer el mal no es el propósito de este artículo. 

$url → es una variable: define la url de la que vamos a coger el recurso wp_remote_
get() → nos permite descargar un recurso web alojado en otra página y con ['body'] nos vamos al cuerpo de la página, que no debe confundirse con la etiqueta del documento HTML. 
eval() → Evalúa la cadena de texto que le pasemos como código php 

Lógicamente se podría haber diseñado un sistema de comunicación mucho más sofisticado pero para la demo es funcional y se explica por si solo. 

Ahora vamos a cambiar el código alojado en nuestro servidor malicioso que solicitará al tema. En las siguientes solicitudes, descargará y ejecutará el nuevo código.


Resultado:




No hay comentarios:

Publicar un comentario