Este documento describe diferentes tipos de inyección de código, incluyendo inyección SQL, inyección de scripts, inyección de shell e inyección dinámica. La inyección de código es un ataque que introduce código malicioso a través de las entradas de una aplicación, explotando vulnerabilidades como la falta de validación de datos. Estos ataques pueden causar pérdida de confidencialidad, integridad y disponibilidad de sistemas.
2. 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.
3. 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
4. Tipos de inyecciones de código
● Inyección SQL
● Inyección de scripts
● Inyección de shell
● Ataques de evaluación dinámicos
5. Inyección SQL
● Es una técnica empleada para ingresar una
consulta SQL por medio de la entrada del
cliente a la aplicación
7. 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
8. ● 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
9. 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
10. ¿Que pasaría si se utilizara la siguiente
entrada en el login?
Username : admin' #
Password : _
Ejemplo de inyección SQL
11. 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
12. ● XSS almacenados (persistentes o tipo1)
● XSS reflejados (no persistentes o tipo 2)
● XSS basados en DOM (tipo 0)
Tipos de XSS
13. 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
14. 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;");