Recibí un mail de uno de mis hosting, en el mensaje claramente se podía leer:
Estimado cliente,
El US-CERT ha advertido de un exploit hecho público, que se aprovecha de una vulnerabilidad en el script VIEWTOPIC.PHP usado por phpBB.
El CERT confirma haber visto reportes de intentos de ataques realizados con dicho exploit, pero no ha comprobado la existencia de sistemas que hayan sido comprometidos. El problema se produce porque VIEWTOPIC.PHP no filtra correctamente ciertas entradas con determinados parámetros.
Un parche para esta vulnerabilidad ya fue incorporada a la versión 2.0.11, aunque parece que este no resolvió adecuadamente el problema. Si en cambio, una nueva versión, la 2.0.16 que corrige definitivamente este problema.
Todas las instalaciones del phpBB, no actualizadas en 72 horas seran eliminadas del servidor.
Agradecemos su colaboración
Atte,
Mirando entre los blogs de BlogsPerú encontré esta noticia de unas webs hackeadas “asumo ke” usando este bug…
HACKEAN A TELEVISION NACIONAL DEL PERU, A CPN RADIO Y A AMERICA TV (Observatorio de Medios)
Inmediatamente me dije a mi mismo: *”mi mismo, tenemos que actualizar los foros”. El mail incluía un link a un tutorial para “parchar” dicho archivo y arreglar el bug:
Este es el link —> http://www.phpbb.com/phpBB/viewtopic.php?f=14&t=302011
Lo que hay que hacer es buscar el archivo viewtopic.php y:
Reemplazar:
$message = str_replace('"', '"', substr(@preg_replace('#(\>(((?>([^><]+|(?R)))*)\<))#se’, “@preg_replace(’#\b(” . str_replace(”, ”, $highlight_match) . “)\b#i’, ‘<span style=”color:#” . $theme['fontcolor3'] . “”><b>\1</b></span>’, ‘\0′)”, ‘>’ . $message . ‘<’), 1, -1));
Por:
$message = str_replace('"', '"', substr(@preg_replace('#(\>(((?>([^><]+|(?R)))*)\<))#se’, “@preg_replace(’#\b(” . str_replace(”, ”, addslashes($highlight_match)) . “)\b#i’, ‘<span style=”color:#” . $theme['fontcolor3'] . “”><b>\1</b></span>’, ‘\0′)”, ‘>’ . $message . ‘<’), 1, -1));
Igual recomiendan actualizar todo el foro con la nueva versión (cosa que haré más tarde)
link
* Frase del “hermano putrefy” de hueving.com
Script para subir y renombrar imágenes en un directorio.
(kitar el comentario de la segunda línea)
<?
$pag=$_SERVER['PHP_SELF']; // el nombre y ruta de esta misma página, es para limpiar el codigo y no tener tanto echo por ahi ;//sin espacio aki)
$max = 80000; //en bytes tamaño de imagen
$tama = $_FILES['archivo']['size'];if ($_FILES['archivo']) {
if (!is_dir("./banners")) { //si no existe el directorio
mkdir("./banners", 0777); //lo creamos
chmod("./banners", 0777); //damos permisos
}
//contamos el numero de fotos que hay y lo almacenamos en la variable $fotos
$fotos = 0;
$dir = opendir("./banners"); //
while ($file = readdir($dir)) {
if ($file != "." && $file != "..") {
$fotos++;
}
}
closedir($dir);$separado = explode(".", $archivo_name); //aqui estaba el fallito
$ext = strtolower($separado[count($separado)-1]); //cogemos la extension (ya en minusculas)
if ($tama > $max) {
header ("Location: $pag?mensaje=0"); //redireccionamos con header y mostramos mensaje 0
exit;
}
if ($ext == "jpg")
//cambios desde aki
{
$fotos++; //para empezar a nombrarlas por el 1
$nombre = "banner".$fotos."-".$archivo_name;move_uploaded_file($archivo, "./banners/".$nombre);
header ("Location: $pag?mensaje=1"); //redireccionamos archivo enviado .
exit;} else {
header ("Location: $pag?mensaje=2"); //redireccionamos no es jpg
exit;
}
}
?>
<?
if (isset($_GET['mensaje'])){$mensaje_accion_ms[0]= "Tu archivo excede al limite permitido $max.";
$mensaje_accion_ms[1]= "El archivo ha sido enviado correctamente";
$mensaje_accion_ms[2]= "El archivo no es una imagen jpg.";
$mensaje_cod = $_GET['mensaje'];
echo "<div align=’center’>$mensaje_accion_ms[$mensaje_cod]</div><br>";}
?>
<p align="center">
Las imagenes no deben exceder los 80 kb.<br/>
Solo se puede subir archivos en formato jpg.</p>
<form enctype="multipart/form-data" method="post">
<div align="center">
<input type="file" name="archivo">
<br>
<input type="submit">
</div>
</form>
Script programado por Gerald
Este código sirve para mostrar todas las imágenes contenidas en un directorio:
<?
// utilizando readdir
$path = "banners/";
// defino el directorio a leer$directorio = opendir("$path");
// leo los elementos del directorio
while($archivo=readdir($directorio))
{
if ($archivo=="."){
} else {
if ($archivo==".."){
} else {echo "<div id=’banners’><a href=$path$archivo><img src=\"$path$archivo\" border=\"0\" alt=\"$archivo\" height=\"180\" align=\"middle\"> $archivo </a></div>" ;
}
}
} ?>