Muestra las diferencias entre dos versiones de la página.
Ambos lados, revisión anteriorRevisión previaPróxima revisión | Revisión previa | ||
app:vemp [2024/09/19 16:04] – thejuanvisu | app:vemp [2024/09/26 15:58] (actual) – thejuanvisu | ||
---|---|---|---|
Línea 101: | Línea 101: | ||
Para prevenir este tipo de ataque, si tenemos un grupo de autores pequeños, se podría hacer una lista blanca y en caso de no ser posible, se utilizaría escapados. | Para prevenir este tipo de ataque, si tenemos un grupo de autores pequeños, se podría hacer una lista blanca y en caso de no ser posible, se utilizaría escapados. | ||
+ | ==== Inyección en SMPT ==== | ||
+ | SMTP (Simple Mail Transfer Protocol) es un protocolo para el envío de correos electrónicos. Este tipo de ataque se produce cuando a través de entradas de usuario, un atacante introduce cabeceras adicionales. Se pueden prevenir con listas blancas y escapados, al igual que con las demás vulnerabilidades. | ||
+ | ==== Inyección de comandos del sistema operativo ==== | ||
+ | |||
+ | |||
+ | Es una vulnerabilidad que permite la ejecución arbitraria de comandos en el sistema en el que se ejecuta la aplicación. Un ejemplo de comando de inyección sería el siguiente: | ||
+ | < | ||
+ | ping -c 5 127.0.0.1; rm -rf /opt | ||
+ | </ | ||
+ | Esto solo funciona si no se valida de forma adecuada las entradas. | ||
+ | |||
+ | ==== Inyección LDAP ==== | ||
+ | |||
+ | Se parece a la inyección SQL, se utiliza para afectar al active directory. También permite ejecutar consultas a ciegas (Blind LDAP injection) a través de filtros booleanos. Para prevenir este tipo de ataques se recomienda utilizar un framework de escape y una lista blanca. | ||
+ | |||
+ | ==== Inyección XML y XPath ==== | ||
+ | |||
+ | Similar a las otras inyecciones. Si en los datos de una entrada se añaden caracteres reservados en XML, el resultado puede ser una modificación inesperada del documento. Un ejemplo de inyección sería el siguiente: | ||
+ | <code xml> | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | |||
+ | </ | ||
+ | |||
+ | Para prevenir este tipo de ataques se crean escapados con los siguientes caracteres: | ||
+ | * " = " | ||
+ | * ' = ' | ||
+ | * < = < | ||
+ | * > = &rt; | ||
+ | |||
+ | Las reglas de escapado varían en función a donde se va a añadir el contenido. Para validar documentos XML se suelen usar esquemas (DTD), que es un documento de definición donde se indica como debe ser un documento XML. Esto permite limitar cuantas veces se repite una etiqueta y donde van, pero hay que tener cuidado ya que se pueden invalidar demasiados documentos. | ||
+ | |||
+ | ==== Conclusiones de inyección de código (Examen) ==== | ||
+ | * Hay un componente común a todos los ataques por inyección. Se produce inyección de código cuando los datos de usuario no se validan de la forma adecuada. | ||
+ | * Generalmente varía el lenguaje con el que se intercambian mensajes y los caracteres reservados. | ||
+ | * Si el lenguaje da una forma estándar para prevenir un ataque de inyección se recomienda utilizarlo. | ||
+ | * Se deben usar listas blancas de valores válidos, permitiendo solo ciertos tipos de datos como entrada para prevenir la inyección. Por desgracia no pueden ser usadas siempre. | ||
+ | * En caso de no poderse hacer nada, se recomienda el escapado manual, utilizando de ser posible una librería ya existente. | ||
+ | |||
+ | |||
+ | ===== Inyección de JavaScript (XSS) ===== | ||
+ | Es un tipo de inyección tan importante que se ve por separado. Generalmente hay un cliente y una aplicación web que intercambian información. En el intercambio de datos suele ir código en HTML junto a JavaScript. | ||
+ | Las consecuencias de inyección de javascript pueden ser: | ||
+ | * Sustracción de información | ||
+ | * Sustracción de credenciales | ||
+ | * Secuestro de sesión y suplantación de identidad. | ||
+ | |||
+ | En el caso de Reflected XSS el servidor incluye en la respuesta HTTP el código JS que el atacante ha insertado en algún punto de la petición. A veces se pueden realizar estas inyecciones desde la url: | ||
+ | < | ||
+ | |||
+ | Esto sería un ataque de inyección javascript de tipo 1, conocido como Stored XSS. | ||
+ | |||
+ | Si el código insertado se almacena consistentemente en la base de datos, entonces tenemos un ataque de tipo 2. | ||
+ | El contenido que más se suele inyectar son los scripts, pero también se pueden inyectar iframes. | ||
- | ==== Inyección de JavaScript (XSS) ==== | ||