Citrix ADC

Comprobación de la protección de inyección de comandos

La comprobación de inyección de comandos JSON examina el tráfico JSON entrante en busca de comandos no autorizados que rompan la seguridad del sistema o lo modifican. Al examinar el tráfico, si se detectan comandos maliciosos, el dispositivo bloquea la solicitud o realiza la acción configurada.

En un ataque de inyección de comandos, el atacante intenta ejecutar comandos no autorizados en el sistema operativo Citrix ADC o en el servidor back-end. Para lograr esto, el atacante inyecta comandos del sistema operativo mediante una aplicación vulnerable. La aplicación back-end es vulnerable a los ataques de inyección si el dispositivo simplemente reenvía una solicitud sin ninguna comprobación de seguridad. Por lo tanto, es muy importante configurar una comprobación de seguridad para que el dispositivo Citrix ADC pueda proteger su aplicación web bloqueando los datos no seguros.

Cómo funciona la protección de inyección de comandos

  1. Para una solicitud JSON entrante, WAF examina el tráfico en busca de palabras clave o caracteres especiales. Si la solicitud JSON no tiene patrones que coincidan con ninguna de las palabras clave o caracteres especiales denegados, se permite la solicitud. De lo contrario, la solicitud se bloquea, se descarta o se redirige en función de la acción configurada.
  2. Si prefiere excluir una palabra clave o un carácter especial de la lista, puede crear una regla de relajación para evitar el control de seguridad en condiciones específicas.
  3. Puede habilitar el registro para generar mensajes de registro. Puede supervisar los registros para determinar si las respuestas a las solicitudes legítimas se están bloqueando. Un gran aumento en la cantidad de mensajes de registro puede indicar intentos de lanzar un ataque.
  4. También puede habilitar la función de estadísticas para recopilar datos estadísticos sobre infracciones y registros. Un aumento inesperado en el contador de estadísticas podría indicar que su aplicación está siendo atacada. Si las solicitudes legítimas se bloquean, es posible que tenga que volver a visitar la configuración para ver si debe configurar la nueva regla de relajación o modificar la existente.

Palabras clave y caracteres especiales denegados para la comprobación de inyección de comandos

Para detectar y bloquear los ataques de inyección de comandos JSON, el dispositivo tiene un conjunto de patrones (palabras clave y caracteres especiales) definidos en el archivo de firma predeterminado. A continuación se muestra una lista de palabras clave bloqueadas durante la detección de inyección de comandos

<commandinjection>
      <keyword type="LITERAL" builtin="ON">7z</keyword>
      <keyword type="LITERAL" builtin="ON">7za</keyword>
      <keyword type="LITERAL" builtin="ON">7zr</keyword>
…
</commandinjection>

<!--NeedCopy-->

Los caracteres especiales definidos en el archivo de firma son: | ; & $ > < ' \ ! >> #

Configuración de la comprobación de inyección de comandos JSON mediante la CLI

En la interfaz de línea de comandos, puede usar el comando set appfw profile o agregar un comando appfw profile para configurar los ajustes de inyección de comandos JSON. Puede habilitar las acciones de bloqueo, registro y estadísticas. También debe establecer el tipo de inyección de comandos, como palabras clave y caracteres de cadena que quiere detectar en las cargas útiles.

En el símbolo del sistema, escriba:

set appfw profile <profile-name> –cmdInjectionAction <action-name> -CMDInjectionType <CMDInjectionType>]

Nota:

De forma predeterminada, la acción de inyección de comandos se establece como “estadísticas de registro de bloques”. Además, el tipo de inyección de comando predeterminado se establece comoCmdSplCharANDKeyWord. Después de una actualización, los perfiles de Firewall de aplicaciones web existentes tienen la acción configurada como “Ninguno”.

Ejemplo:

set appfw profile profile1 -JSONCMDInjectionAction block -JSONCMDInjectionType CmdSplChar

Donde las acciones de inyección de comandos JSON disponibles son:

Ninguno: desactive la protección de inyección de comandos. Registro: registra las infracciones de inyección de comandos para la comprobación de seguridad. Bloquear: bloquea el tráfico que infringe la comprobación de seguridad de la inyección de comandos. Estadísticas: genera estadísticas de infracciones de seguridad de inyección de comandos.

Donde los tipos de inyección de comandos JSON disponibles son:

Cmd SplChar - Comprueba los caracteres especiales CmdKeyWord - Comprueba las palabras clave de inyección de comandos CmdSplCharANDKeyWord - Esta es la acción predeterminada. La acción comprueba los caracteres especiales y la inyección de comandos. Palabras clave y bloques solo si ambos están presentes. CmdSplCharORKeyWord - Comprueba los caracteres especiales y las palabras clave de inyección de comandos y los bloques si se encuentra alguno de ellos.

Configuración de reglas de relajación para la comprobación de protección de inyección de comandos

Si su aplicación requiere que omita la inspección de inyección de comandos JSON para un ELEMENTO o ATRIBUTO específico en la carga útil, puede configurar una regla de relajación.

Las reglas de relajación de inspección de inyección del comando JSON tienen la siguiente sintaxis.

bind appfw profile <profile name> –JSONCMDURL <expression> -comment <string> -isAutoDeployed ( AUTODEPLOYED | NOTAUTODEPLOYED ) -state ( ENABLED | DISABLED )

Ejemplo de regla de relajación para Regex en el encabezado

bind appfw profile abc_json -jsoncmDURL http://1.1.1.1/hello.html

Visto y considerando: Que lo siguiente relaja las solicitudes de todas las URL alojadas en 1.1.1.1:

bind appfw profile abc_json -jsoncmDURL http://1.1.1.1/*”

Para eliminar la relajación, use “desvincular”.

unbind appfw profile abc_json -jsoncmDURL “ http://1.1.1.1/*”

Configurar la comprobación de inyección de comandos JSON mediante la GUI

Complete los siguientes pasos para configurar la comprobación de inyección de comandos JSON.

  1. Vaya a Seguridad > Perfiles y Citrix Web App Firewall.
  2. En la página Perfiles, seleccione un perfil y haga clic en Modificar.
  3. En la página Perfil de Citrix Web App Firewall, vaya a la sección Configuración avanzada y haga clic en Comprobaciones de seguridad.

Acceso a la comprobación de seguridad JSON en la configuración

  1. En la sección Controles de seguridad, seleccione Inyección de comandos JSON y haga clic en Configuración de acción
  2. En la página Configuración de inyección de comandos JSON, defina los siguientes parámetros:

    1. Acciones. Seleccione una o más acciones para realizar la comprobación de seguridad de la inyección de comandos JSON.
    2. Comprobar solicitud que contiene. Seleccione un patrón de inyección de comandos para comprobar si la solicitud entrante tiene el patrón.
  3. Haga clic en OK.

Configuración de la comprobación de inyección de comandos JSON

Visualización de estadísticas de tráfico de inyección de comandos e infracciones

La página Estadísticas de Citrix Web App Firewall muestra los detalles del tráfico de seguridad y las infracciones de seguridad en formato tabular o gráfico.

Para ver las estadísticas de seguridad mediante la interfaz de comandos.

En el símbolo del sistema, escriba:

stat appfw profile profile1

Estadísticas de tráfico del perfil Appfw Tasa (/s) Total
Solicitudes 0 0
Bytes de solicitud 0 0
Respuestas 0 0
Bytes de respuesta 0 0
Aborta 0 0
Redireccionamientos 0 0
Tiempo de respuesta promedio a largo plazo (ms) 0
Tiempo de respuesta promedio reciente (ms) 0
Estadísticas de infracciones de HTML/XML/ Tasa (/s) Total
URL de inicio 0 0
Denegar URL 0 0
Encabezado referer 0 0
Desbordamiento de 0 0
Consistencia de cookies 0 0
Secuestro de cookies 0 0
Etiqueta de formulario CSRF 0 0
Scripts HTML entre sitios 0 0
Inyección HTML SQL 0 0
Formato de campo 0 0
Coherencia de 0 0
Tarjeta de crédito 0 0
Objeto seguro 0 0
Infracciones de firma 0 0
Tipo de contenido 0 0
Denegación de servicio JSON 0 0
Inyección JSON SQL 0 0
Scripting entre sitios JSON 0 0
Tipos de carga de archivos 0 0
Deducir carga útil XML del tipo de contenido 0 0
Inyección de HTML CMD 0 0
Formato XML 0 0
Denegación de servicio XML (XDoS) 0 0
Validación de mensajes XML 0 0
Interoperabilidad de servicios web 0 0
Inyección XML SQL 0 0
Scripting entre sitios XML 0 0
Datos adjuntos XML 0 0
Infracciones de errores de 0 0
Infracciones genéricas XML 0 0
Infracciones totales 0 0
Estadísticas de registro HTML/XML/J Tasa (/s) Total
Iniciar registros de URL 0 0
Denegar registros de URL 0 0
Registros de encabezado de referencia 0 0
Registros de desbordamiento 0 0
Registros de consistencia de cookies 0 0
Registros de secuestro de cookies 0 0
CSRF a partir de registros de etiquetas 0 0
Registros de scripts HTML entre sitios 0 0
Registros de transformación de scripting de sitios HTML 0 0
Registros de inyección HTML SQL 0 0
Registros de transformación HTML SQL 0 0
Registros de formato de campo 0 0
Registros de coherencia de campo 0 0
Tarjetas de crédito 0 0
Registros de transformación de tarjetas de crédito 0 0
Registros de objetos seguros 0 0
Registros de firmas 0 0
Registros de tipos de contenido 0 0
Registros de denegación de servicio JSON 0 0
Registros de inyección JSON SQL 0 0
Registros de scripts JSON entre sitios 0 0
Registros de tipos de carga de archivos 0 0
Deducir carga útil XML del tipo de contenido L 0 0
Inyección de CMD JSON 0 0
Registros de inyección de comandos HTML 0 0
Registros en formato XML 0 0
Registros de denegación de servicio (XDoS) XML 0 0
Registros de validación de mensajes XML 0 0
Registros de WSI 0 0
Registros de inyección XML SQL 0 0
Registros de scripts XML entre sitios 0 0
Registros de datos adjuntos XML 0 0
Registros de errores SOAP 0 0
Registros genéricos XML 0 0
Mensajes de registro totales 0 0

Tasa (/s) de estadísticas de respuesta a errores del servidor | Total | |—|–|–| Errores de cliente HTTP (4xx Resp) | 0 | 0| Errores del servidor HTTP (5xx Resp) | 0 | 0 |

Estadísticas de registro HTML/XML/J Tasa (/s) Total
Registros de inyección de comandos JSON 0 0
Registros en formato XML 0 0

Ver las estadísticas de inyección de comandos JSON mediante la GUI de Citrix ADC

Complete los siguientes pasos para ver las estadísticas de inyección de comandos:

  1. Vaya a Seguridad > Citrix Web App Firewall > Perfiles.
  2. En el panel de detalles, seleccione un perfil de Web App Firewall y haga clic en Estadísticas.
  3. La página Estadísticas de Citrix Web App Firewall muestra los detalles del tráfico y la infracción de la inyección de comandos JSON.
  4. Puede seleccionar Vista tabular o cambiar a Vista gráfica para mostrar los datos en formato tabular o gráfico.

Estadísticas de tráfico de inyección de comandos J

Sección de GUI JSON Command injection-traffic-statistics

Estadísticas de infracción de la inyección de comandos

Sección de GUI JSON Command injection-traffic-statistics

Configurar relajación pormenorizada para la inyección de comandos JSON

Web App Firewall le ofrece la opción de relajar una clave o valor JSON específicos de la comprobación de inyección de comandos basada en JSON. Puede omitir por completo la inspección de uno o más campos configurando las reglas de relajación pormenorizada.

Anteriormente, la única forma de configurar relajaciones para las comprobaciones de protección JSON era especificar la URL completa y eso evitaría la verificación de toda la URL.

La protección de seguridad de inyección de comandos basada en JSON proporciona relajación para lo siguiente:

  • Nombres clave
  • Valores clave

La protección de inyección de comandos basada en JSON le permite configurar relajaciones que permiten patrones específicos y bloquean el resto. Por ejemplo, Web App Firewall tiene actualmente un conjunto predeterminado de más de 100 palabras clave SQL. Como los piratas informáticos pueden usar estas palabras clave en los ataques de inyección de comandos, Web App Firewall marca todas ellas como amenazas potenciales. Si quiere relajar una o más palabras clave que se consideran seguras para la ubicación específica, puede configurar una regla de relajación que pueda omitir el control de seguridad y bloquear el resto. Los comandos utilizados en las relajaciones tienen parámetros opcionales para Tipo de valor y Expresión de valor. Puede especificar si la expresión de valor es una expresión regular o una cadena literal. El tipo de valor se puede dejar en blanco o tiene la opción de seleccionar Palabra clave o Cadena especial.

Nota:

Las expresiones regulares son potentes. Especialmente si no está familiarizado con las expresiones regulares en formato PCRE, compruebe las expresiones regulares que escriba. Asegúrese de que definen exactamente la URL que quiere agregar como excepción, y nada más. El uso descuidado de caracteres comodín, y especialmente de la combinación de metacarácter o comodín punto-asterisco (.*), puede tener resultados que no quiere, como bloquear el acceso al contenido web que no pretendía bloquear o permitir un ataque que la comprobación de inyección JSON SQL habría bloqueado de otro modo.

Puntos a tener en cuenta

  • La expresión de valor es un argumento opcional. Es posible que un nombre de campo no tenga ninguna expresión de valor.
  • Un nombre de clave se puede enlazar a varias expresiones de valor.
  • A las expresiones de valor se les debe asignar un tipo de valor. El tipo de valor puede ser: 1) Palabra clave, 2) SpecialString.
  • Puede tener varias reglas de relajación por combinación de nombre de clave/URL.

Configurar la relajación pormenorizada JSON para los ataques de inyección de comandos mediante la interfaz

Para configurar la regla de relajación pormenorizada de archivos JSON, debe vincular las entidades de relajación pormenorizada al perfil de Web App Firewall.

En el símbolo del sistema, escriba:

bind appfw profile <profile name> -jsoncmdURL <URL> -key <key name> -valueType <keyword/SpecialString> <value Expression>
<!--NeedCopy-->

Ejemplo:

bind appfw profile appprofile1 -jsoncmdurl www.example.com -key blg_cnt -isRegex NOTREGEX -valueType Keyword “cat” -isvalueRegex NOTREGEX

Para configurar la regla de relajación pormenorizada para ataques de inyección de comandos basados en JSON mediante la interfaz gráfica de usuario

  1. Vaya a Firewall de aplicaciones > Perfiles, seleccione un perfil y haga clic en Modificar.
  2. En el panel Configuración avanzada, haga clic en Reglas de relajación.
  3. En la sección Reglas de relajación, seleccione un registro de inyección de comandos JSON y haga clic en Modificar.
  4. En el regulador Regla de relajación de inyección de comandos JSON, haga clic en Agregar.
  5. En la página Regla de relajación de inyección de comandos JSON, defina los siguientes parámetros.

    1. Habilitado
    2. Is Name Regex
    3. Nombre de la clave
    4. URL
    5. Tipo de valor
    6. Comentarios
    7. ID de recurso
  6. Haga clic en Crear.

Relajación pormenorizada JSON para scripting de sitios