Citrix ADC

Comprobación de protección de inyección JSON SQL

Una solicitud JSON entrante puede tener una inyección SQL en forma de cadenas de consulta SQL parciales o comandos no autorizados en el código. Esto lleva al robo de datos de la base de datos JSON de sus servidores web. Al recibir dicha solicitud, el dispositivo bloquea dicha solicitud para proteger sus datos.

Considere un caso en el que un cliente envía una solicitud JSON SQL a un dispositivo Citrix ADC, el analizador JSON analiza la carga útil de la solicitud y, si se observa una inyección SQL, el dispositivo impone restricciones en el contenido JSON SQL. La restricción impone un límite de tamaño en la solicitud JSON SQL. Como resultado, si se observa alguna inyección JSON SQL, el dispositivo aplica una acción y responde con la página de error JSON SQL.

Configurar la protección de inyección JSON SQL

Para configurar la protección JSON SQL, debe completar los siguientes pasos:

  1. Agregue el perfil de firewall de aplicaciones como JSON.
  2. Establecer el perfil de firewall de aplicaciones para la configuración de inyección JSON
  3. Configure la acción JSON SQL vinculando el perfil de firewall de la aplicación.

Agregar perfil de firewall de aplicaciones de tipo JSON

Primero debe crear un perfil que especifique cómo el firewall de la aplicación debe proteger el contenido web JSON del ataque de inyección JSON SQL. En el símbolo del sistema, escriba:

add appfw profile <name> -type (HTML | XML | JSON)

Nota:

Cuando establece el tipo de perfil como JSON, no se aplicarán otras comprobaciones, como HTML o XML.

Ejemplo

add appfw profile profile1 –type JSON

Acción Configurar inyección JSON SQL

Debe configurar una o más acciones de inyección JSON SQL para proteger su aplicación de los ataques de inyección JSON SQL. En el símbolo del sistema, escriba:

set appfw profile <name> - JSONSQLInjectionAction [block] [log] [stats] [none]

Las acciones de inyección SQL son: Bloquear: bloquear las conexiones que infrinjan esta comprobación de seguridad. Registro: Registrar infracciones de esta comprobación de seguridad. Estadísticas: genera estadísticas para esta comprobación de seguridad. Ninguno: inhabilite todas las acciones de esta comprobación de seguridad.

Configurar el tipo de inyección JSON SQL

Para configurar el tipo de inyección JSON SQL en un perfil de firewall de aplicaciones, en el símbolo del sistema, escriba:

set appfw profile <name> - JSONSQLInjectionType <JSONSQLInjectionType>

Ejemplo

set appfw profile profile1 -JSONSQLInjectionType SQLKeyword

Donde los tipos de inyección SQL disponibles son: Tipos de inyección SQL disponibles. SqlSplChar. Comprueba si hay caracteres especiales de SQL, palabra clave SQL. Comprueba las palabras clave de SQL. SQL Splchar y palabra clave. Comprueba si hay bloques y si se encuentran. Palabra clave SQL Splcharor. Bloquea si se encuentra un carácter especial SQL o una palabra clave spl. Valores posibles: SQLSplChar, SQLKeyword, SQLSplcharorKeyword, SQLSplcharAndKeyword.

Nota: Para habilitar una o más acciones, escriba “set appfw profile - JSONSQLInjectionAction” seguido de las acciones que se habilitarán.

Ejemplo

set appfw profile profile1 -JSONSQLInjectionAction block log stat

El siguiente ejemplo muestra una carga útil de ejemplo, sus correspondientes contadores de mensajes de registro y estadísticas:

Payload:
=======
{
  "test": "data",
  "username": "waf",
  "password": "select * from t1;",
  "details": {
    "surname": "test",
    "age": "23"
  }
}

Log Message:
===========
08/19/2019:08:49:46 GMT pegasus121 Informational 0-PPE-0 : default APPFW APPFW_JSON_SQL 6656 0 :  10.217.32.165 18402-PPE0 - profjson http://10.217.32.147/test.html SQL Keyword check failed for object value(with violation="select(;)") starting at offset(52) <blocked>
Counters:
========
   1  441083             1 as_viol_json_sql
   3       0             1 as_log_json_sql
   5       0             1 as_viol_json_sql_profile appfw__(profjson)
   7       0             1 as_log_json_sql_profile appfw__(profjson)
<!--NeedCopy-->

Configurar la protección de inyección JSON SQL mediante la GUI de Citrix

Siga el procedimiento a continuación para establecer la configuración de protección de inyección JSON SQL.

  1. En el panel de navegación, vaya a Seguridad > Perfiles.
  2. En la página Perfiles, haga clic en Agregar.
  3. En la página Perfil de Citrix Web App Firewall, haga clic en Comprobaciones de seguridad en Configuración avanzada.
  4. En la sección Comprobaciones de seguridad, vaya a la configuración de inyección JSON SQL.
  5. Haga clic en el icono ejecutable situado cerca de la casilla de verificación.

    Comprobación de seguridad de inyección JSON SQL

  6. Haga clic en Configuración de acción para acceder a la página Configuración de inyección JSON SQL.
  7. Seleccione las acciones de inyección de JSON SQL.
  8. Haga clic en OK.

    Comprobación de seguridad de inyección JSON SQL

  9. En la página Perfil de Citrix Web App Firewall, haga clic en Reglas de relajación en Configuración avanzada.
  10. En la sección Reglas de relajación, seleccione Configuración de inyección JSON SQL y haga clic en Modificar.

    Comprobación de seguridad de inyección JSON SQL

  11. En la página Regla de relajación de inyección JSON SQL, introduzca la URL a la que se debe enviar la solicitud. Todas las solicitudes enviadas a esta URL no se bloquearán.
  12. Haga clic en Crear.

    Comprobación de seguridad de inyección JSON SQL

Configurar la relajación pormenorizada para la protección de inyección JSON SQL

Web App Firewall le ofrece la opción de relajar una clave o valor JSON específico de la comprobación de inspección de inyección SQL basada en JSON. Puede configurar varias opciones para relajar las cargas JSON mediante 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 SQL basada en JSON proporciona relajación para lo siguiente:

  • Nombres clave
  • Valores clave

La comprobación de protección SQL 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 SQL, Web App Firewall marca todas 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 nombre de clave o combinación de 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> -isregex <REGEX/NOTREGEX> -valueType <keyword/SpecialString> <value Expression> -isvalueRegex <REGEX/NOTREGEX>
<!--NeedCopy-->

Ejemplo:

bind appfw profile appprofile1 -jsonsqlurl www.example.com -key stn_name  -isRegex NOTREGEX -valueType Keyword “union” -isvalueRegex NOTREGEX
<!--NeedCopy-->

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 JSON SQL y haga clic en Modificar.
  4. En el control deslizante Regla de relajación de inyección JSON SQL, haga clic en Agregar.
  5. En la página Regla de relajación de inyección JSON SQL, 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

Comprobación de protección de inyección JSON SQL