15
Inyección de código AySSR Carlos Arturo Medina García

Inyección de código

Embed Size (px)

Citation preview

Inyección de código

AySSRCarlos Arturo Medina García

Concepto

● Ataque informático, consiste en introducir código para que sea ejecutado por una aplicación

● Explota la falta de cuidado para manejar datos en los sistemas

● Falta de validaciones de las entradas y salidas de las aplicaciones.

Factores de riesgo

● Este tipo de vulnerabilidades pueden ser fáciles y también difíciles de encontrar

● Explotadas acertadamente, pueden causar:– Pérdida de confidencialidad

– Pérdida de integridad

– Pérdida de disponibilidad

– Pérdida de credibilidad en un sistema

Tipos de inyecciones de código

● Inyección SQL● Inyección de scripts● Inyección de shell● Ataques de evaluación dinámicos

Inyección SQL

● Es una técnica empleada para ingresar una consulta SQL por medio de la entrada del cliente a la aplicación

Inyección SQL(2)

Ejemplo de inyección SQL

● Considerar una página web común que solicita un login y contraseña para acceder a la información del usuario

● Para poder validar este formulario, un programador poco experimentado compararía directamente la entrada con la base de datos:

SELECT * FROM `users`

WHERE `username` = 'nombredeusuario'

AND `password` = 'passwordusuario'

Ejemplo de inyección SQL

Username : cualquiera

Password : ' OR 1=1 # 

La expresión SQL quedaría así: 

                    SELECT * FROM `users` 

                    WHERE `username` = 'cualquiera' 

                    AND `password` = '' OR 1=1 #';

Con la orden SQL resultante, estaremos obteniendo toda la información de la table de usuarios donde 1=1

Ejemplo de inyección SQL

¿Que pasaría si se utilizara la siguiente entrada en el login?

Username : admin' # Password : _

Ejemplo de inyección SQL

Ataque de inyección de scripts

● Ataques de inyección de código que permiten a un atacante ingresar código al motor de script del servidor

● Scripting de sitios cruzados (Cross-site scripting [XSS]), secuencias de comandos maliciosos inyectadas en sitios web aparentemente confiables

● Ocurren cuando un atacante usa una aplicación web para enviar código malicioso en forma de script del lado del navegador a un usuario común

● XSS almacenados (persistentes o tipo1)

● XSS reflejados (no persistentes o tipo 2)

● XSS basados en DOM (tipo 0)

Tipos de XSS

Ataques de inyección de consola

● También llamados 'Ataques de comandos al sistema operativo'● Estos ataques explotan las aplicaciones que utilizan una entrada del

usuario para formular comandos que son ejecutados por el sistema operativo

● Al ejecutar comandos del SO es posible inyectar comandos peligrosos, cargar programas maliciosos y obtener contraseñas

● Ejemplo:

<?php

echo shell_exec('cat '.$_GET['filename']);

?>

www.mysite.com/viewcontent.php?filename=my_great_content.txt;ls

Ataque de evaluaciones dinámicas

● El código malicioso es ingresado como entrada estándar, y como resultado es ejecutado como parte de la aplicación.

● Ejemplo: El comando eval() de php ejecutará código que sea enviado a el como parámetro.

$myvar = "varname";

$x = $_GET['arg']; //arg="10 ; system(\"/bin/echo uh-oh\");"

eval("\$myvar = \$x;");

Referencias

● https://www.owasp.org/index.php/Code_Injection

● http://www.technicalinfo.net/papers/CSS.html

● https://www.owasp.org/index.php/Types_of_Cross-Site_Scripting

● https://www.owasp.org/index.php/Top_10_2007-Secuencia_de_Comandos_en_Sitios_Cruzados_(XSS)

● http://www.golemtechnologies.com/articles/shell-injection

● https://www.owasp.org/index.php/Direct_Dynamic_Code_Evaluation_('Eval_Injection')