Inyección de usuario-agente de Apache

2

En mi archivo de configuración de Apache, actualmente estoy bloqueando agentes de usuarios potencialmente malintencionados utilizando la siguiente configuración:

SetEnvIfNoCase User-Agent "^\W" badagent
<Location />
    Deny from env=badagent
</Location>

Esto rechazará todas las solicitudes con un agente de usuario que comience con cualquier cosa excepto a-Z o 0-9. Se muestra un error 403 Prohibido.

Me gustaría cambiar mi configuración para poder proporcionar un documento de error 403 diferente por diferentes motivos de bloqueo.

Soy consciente de que no siempre es una buena idea decirle a alguien la razón exacta de seguridad para bloquear su solicitud, pero esto es solo en caso de que un usuario legítimo tenga su solicitud bloqueada. Quiero que sepan cuál es el problema en lugar de solo ver un estándar 403. Si alguien está atacando mi sitio, es muy probable que sepan por qué se está bloqueando su solicitud.

Por ejemplo:

Request blocked due to malformed user agent.
Request blocked due to disallowed request method.
Request blocked due to hotlinking.

Para hacer esto, debo usar sentencias If dentro de mi configuración:

<If "%{HTTP_USER_AGENT} == '^\W'">
    ErrorDocument 403 "403 Forbidden - Request blocked due to malformed user agent."
    Require all denied
</If>

Mi preocupación con esto es que la variable HTTP_USER_AGENT podría usarse para la inyección de comandos. Ejecuté commix en un servidor de prueba fuera de línea con esta configuración y no detectó nada, pero quiero estar seguro.

Luché para encontrar cualquier documentación concluyente sobre si / cómo Apache elimina las variables de una solicitud HTTP.

Estoy ejecutando un sitio web HTML / CSS simple, sin PHP ni nada de eso. Instalación estándar de Apache con varias configuraciones de endurecimiento y módulos innecesarios deshabilitados.

¿Podría la instrucción If utilizada anteriormente ser vulnerable a la inyección de comandos, y si es así, cómo me protejo?

    
pregunta Encrypt Powerful 28.03.2017 - 14:10
fuente

1 respuesta

1

Está intentando proteger su aplicación web a través de Apache, pero en su lugar, La forma correcta de proteger su aplicación web / apache es asegurarse de que se deniegue el acceso a los atacantes en el nivel inferior del modelo OSI . Por ejemplo, puede usar fail2ban que protege en OSI nivel 3 (Red) a través de iptables, ya que prohíbe la dirección IP completa.

ApacheesnivelOSI7(aplicación).

Asíqueenlugardetener

<If"%{HTTP_USER_AGENT} == '^\W'">
    ErrorDocument 403 "403 Forbidden - Request blocked due to malformed user agent."
    Require all denied
</If>

en su configuración, debería crear un archivo de registro personalizado agregando

LogFormat "%a %{User-agent}i" ipagent

Y

CustomLog /var/log/apache2/useragent.log ipagent

Y proceda con la configuración fail2ban como se explica en la respuesta que se encuentra aquí enlace

Además, para fortalecer aún más su servidor, asegúrese de instalar mod_security de apache con las reglas OWASP, para hacerlo, verifique mi respuesta, que se encuentra aquí: Algunos bot siguen publicando esto en mi servidor

    
respondido por el Aleksandar Pavić 01.11.2017 - 15:06
fuente

Lea otras preguntas en las etiquetas