Em que condições nas instalações do Apache é necessário o aplicativo AddHandler / x-httpd-php .php?

1

Eu sou um pesquisador de segurança que tem se deparado com vários casos em que os formulários de upload de arquivos podem ser explorados, permitindo que o código PHP controlado pelo invasor seja interpretado pelo servidor, levando à execução remota de código. A causa raiz desta vulnerabilidade parece ser uma configuração legada que é ativada por padrão na configuração do Apache do Linux Distros:

  • CentOS 5.8
  • CentOS 6.5
  • RedHat 5.10
  • RedHat 6.5

e possivelmente outros. A configuração é:

AddHandler application/x-httpd-php .php

O efeito desta configuração é que ela diz ao servidor que os arquivos com nomes que correspondem a \. php devem ser interpretados como código PHP. Se um invasor fizer o upload de uma imagem com o nome shell.php.jpg com o código php incorporado nela e navegar até a página, o servidor executará o script como o usuário do servidor.

Minha correção recomendada é desativar essa configuração comentando-a. Meu raciocínio é que os arquivos .php já têm um manipulador implícito embutido no Apache, que diz ao servidor para interpretar o código como php, então essa configuração parece redundante para mim. Tenho a sensação de que essa é uma configuração herdada transportada por versões antigas do CentOS e RedHat, e as versões mais recentes não têm essa configuração.

Minha pergunta é: Em que circunstâncias a desativação dessa funcionalidade de quebra de configuração será desativada?

    
por some.hacker 30.08.2014 / 00:50

1 resposta

1

My reasoning is that .php files already have an implicit handler built in to Apache, which tells the server to interpret the code as php

Até onde eu sei, não há manipulador implícito, este comando AddHandler é o que diz ao apache para passar arquivos com uma extensão .php para o manipulador application/x-httpd-php (mod_php)

No geral, você está correto. É (aparentemente) uma característica pouco conhecida de mod_mime que arquivos com múltiplas extensões têm TODAS as suas extensões examinadas para manipuladores e outras informações. A documentação do Apache sugere que essa diretiva seja substituída por:

<FilesMatch \.php$>
  SetHandler application/x-httpd-php
</FilesMatch>

para passar apenas os arquivos que terminam em .php para esse manipulador.

A melhor solução, no entanto, seria armazenar arquivos não-enviados pelo usuário não confiáveis fora de DocumentRoot , onde os navegadores não podem solicitar script.php.jpg (ou enviar links para http://www.example.com/uploads/thisisreallyyourbank.html )

    
por 30.08.2014 / 01:36