Назад | Перейти на главную страницу

Веб-сервер Apache / Tomcat: nmap всегда возвращает, что все http-методы разрешены

Я запускаю веб-сервер с http-сервером Apache перед сервером Apache Tomcat.

Моя цель: Отключить http-методы DELETE и PUT на веб-сервере.

Согласно OWASP (https://www.owasp.org/index.php/Test_HTTP_Methods_(OTG-CONFIG-006)) это следует проверить с помощью этой команды:

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

На своем сервере я получаю такой ответ:

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

В соответствии с http://www.techstacks.com/howto/disable-http-methods-in-tomcat.html Я могу отключить PUT и DELETE с помощью этих строк в 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>

Если я добавлю это, мой ответ все равно будет Supported Methods: GET HEAD POST PUT DELETE OPTIONS.
Если я дополнительно отключу http-метод OPTIONS с добавлением <http-method>OPTIONS</http-method> в web.xml, то получаю красивый ответ:

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

То же самое произойдет, если я попытаюсь отключить эти http-методы на веб-сервере Apache, который на самом деле находится перед tomcat. видеть: http://www.techstacks.com/howto/disable-http-methods-in-apache.html

Что я хочу:

Скрипт отправляет OPTIONS запросить и сообщить результаты. Это сообщает, какие методы серверное программное обеспечение поддерживает. Ваша конфигурация безопасности не меняет методы, которые понимает Tomcat; это добавляет ограничение безопасности, что эти методы разрешены только для пользователей, которые соответствуют auth-constraint условие, которое в данном случае не содержит пользователей. Итак, Tomcat правдив: это делает понять PUT и DELETE, даже если никому не разрешено их использовать.

Если вам нужно дополнительное подтверждение, вы можете добавить --script-args http-methods.retest к вашей команде. Это даст указание сценарию отправить запрос с каждым из обнаруженных методов и сообщить код состояния ответа. Но будьте осторожны: это воля приводит к отправке запросов типа DELETE /, что может быть вредно.