Inyección de código
-
Upload
carlos-arturo-fyuler -
Category
Technology
-
view
291 -
download
0
Transcript of Inyección de código
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
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')