Servidor web Apache / Tomcat: nmap sempre retorna que todos os métodos HTTP são permitidos

1

Estou executando um servidor da Web com o servidor http Apache na frente de um servidor Apache Tomcat.

Meu objetivo: desativar http-methods DELETE e PUT no servidor da web.

De acordo com o OWASP ( link ) isso deve ser testado com este comando:

nmap -p 80 --script http-methods www.example.com

No meu servidor, recebo esta resposta:

PORT   STATE SERVICE
80/tcp open  http
| http-methods:
|   Supported Methods: GET HEAD POST PUT DELETE OPTIONS
|_  Potentially risky methods: PUT DELETE

De acordo com o link , posso desativar o PUT e o DELETE com essas linhas web.xml

<security-constraint>
     <web-resource-collection>
          <web-resource-name>restricted methods</web-resource-name>
          <url-pattern>/*</url-pattern>
          <http-method>PUT</http-method>
          <http-method>DELETE</http-method>
     </web-resource-collection>
     <auth-constraint />
</security-constraint>

Se eu adicionar isso, minha resposta ainda será Supported Methods: GET HEAD POST PUT DELETE OPTIONS .
Se eu adicionalmente desabilitar o http-method OPTIONS com a adição de <http-method>OPTIONS</http-method> ao web.xml, obtenho essa resposta de boa aparência:

80/tcp open  http
| http-methods:
|_  Supported Methods: GET HEAD POST OPTIONS

O mesmo acontece, se eu tentar desabilitar os http-methods no servidor web Apache que realmente está na frente do tomcat. veja: link

O que eu quero:

  • Desativar PUT e DELETE
  • Não desative OPTIONS
  • nmap -p 80 --script http-methods www.example.com deve resposta, que DELETE e PUT estão desativados
por chloesoe 15.11.2017 / 11:49

1 resposta

2

O script está enviando uma solicitação OPTIONS e relatando os resultados. Isso relata quais métodos o software do servidor suporta. Sua configuração de segurança não está mudando os métodos que o Tomcat entende; Ele está adicionando uma restrição de segurança de que esses métodos são permitidos apenas para usuários que atendem à condição auth-constraint , que, nesse caso, não contém usuários. Então, o Tomcat está sendo sincero: ele compreende PUT e DELETE , mesmo que ninguém tenha permissão para usá-los.

Se você quiser mais confirmação, você pode adicionar --script-args http-methods.retest ao seu comando. Isso instruirá o script a enviar uma solicitação com cada um dos métodos descobertos e informar o código de status da resposta. Mas tenha cuidado: isso irá resultar no envio de solicitações como DELETE / , o que pode ser prejudicial.

    
por 15.11.2017 / 18:23