Apache: uma determinada string faz com que o pedido POST seja interrompido

1

Aqui está um exemplo mínimo de trabalho do problema que tenho. Eu sei até agora o erro parece ser particular do meu servidor / configuração, mas ainda estou curioso sobre o que está acontecendo. Existem dois arquivos, m1.php e m2.php:

m1.php

<form action="m2.php" method="post">
<br> <input type="text" name="j" />
<input type="submit"  VALUE="Ok"  />
</form>

m2.php

<?php  
print_r($_POST);
?>

Tudo funciona como esperado (quando você clica em ok, imprime a matriz com o valor da caixa de entrada) com esta exceção: se a string que eu digitar for

VALUE';WAITFOR DELAY '00:00:24';--

o formulário não é processado. A exclusão de apenas um caractere da string acima funciona sem problemas.

Verificando os logs do servidor, quando a string acima é a entrada, nenhuma solicitação POST aparece no log, enquanto ocorre com qualquer outra string que eu possa imaginar. O problema parece ser do lado do servidor, pois o Fiddler mostra a solicitação POST com o conteúdo

j=VALUE%27%3BWAITFOR+DELAY+%2700%3A00%3A24%27%3B--

e eu poderia reproduzi-lo em diferentes navegadores de diferentes plataformas. Isso é um problema do Apache? Talvez php? Como eu poderia dizer?

Eu encontrei isso durante a execução de uma auditoria de segurança no site. Não há nenhum servidor SQL em execução, mas a auditoria relata o problema. E estou curioso para saber por que essa sequência específica aciona esse comportamento.

Editar: caso alguém esteja interessado, acabei de perceber que o comportamento descrito acima não depende do código php. Na verdade, se eu enviar por meio do Fiddler uma solicitação POST para uma página não existente no meu servidor, desde que o conteúdo da postagem inclua algum campo com a sequência mencionada acima, a solicitação ficará sem resposta. Então parece que isso é um problema do Apache.

    
por Martin Argerami 15.05.2015 / 17:30

0 respostas