¿Cómo funciona la inyección de código?

La inyección de código, a menudo denominada ejecución remota de código (RCE), es un ataque perpetrado por la capacidad de un atacante de inyectar y ejecutar código malicioso en una aplicación; un ataque de inyección. Este código extranjero es capaz de violar la seguridad de los datos, comprometiendo la integridad de la base de datos o las propiedades privadas. En muchos casos, puede eludir el control de autenticación y, por lo general, estos ataques están asociados con aplicaciones que dependen de la entrada del usuario para su ejecución.

Generalmente, las aplicaciones son más vulnerables si el código se ejecuta sin pasar primero por la validación. A continuación se muestra un caso simple de un código vulnerable.

En el ejemplo anterior, la página de información de PHP es vulnerable y se mostrará si la URL  http://example.com/?code=phpinfo (); se ejecuta.

Debido al hecho de que la interacción del usuario con las aplicaciones es cada vez más una necesidad en el mundo en línea de hoy, la inyección de código ha crecido y se ha convertido en una amenaza real para muchos recursos en línea.

Tipos de inyecciones de código

Existen principalmente cuatro tipos de inyecciones de código: inyección SQL, inyección de scripts, inyección de shell y evaluación dinámica. Todos estos tienen el mismo principio de funcionamiento, es decir, el código es introducido y ejecutado por aplicaciones, pero los dos en los que me enfocaré son la inyección de SQL y la inyección de script.

Cómo funcionan las inyecciones SQL

En el caso de la inyección de SQL, el ataque tiene como objetivo corromper una consulta de base de datos legítima para producir datos falsificados. El atacante primero debe ubicar una entrada dentro de la aplicación web de destino que se incluye dentro de una consulta SQL.

Este método solo es efectivo si la aplicación web tiene una entrada de usuario incluida dentro de una declaración SQL. Luego, se puede insertar una carga útil (una declaración SQL maliciosa) y ejecutarla en el servidor de la base de datos.

El siguiente pseudocódigo del lado del servidor es un ejemplo simple de autenticación que puede resultar vulnerable a las inyecciones de SQL.

En el código anterior, el atacante podría insertar una carga útil que cambiaría la declaración SQL ejecutada por el servidor de la base de datos. Un ejemplo establecería el campo de contraseña en:

Esto hace que se ejecute automáticamente la siguiente declaración en el servidor de la base de datos:

Que puede hacer la inyección SQL

Este es el tipo más común de inyección de código. Teniendo en cuenta el hecho de que SQL es el lenguaje utilizado para manipular los datos almacenados en los sistemas de gestión de bases de datos relacionales (RDBMS), un ataque con el poder de dar y ejecutar sentencias SQL se puede utilizar para acceder, modificar e incluso eliminar datos.

Puede dar al atacante la capacidad de eludir la autenticación, tener una divulgación completa de los datos almacenados en la base de datos, comprometer la integridad de los datos y causar problemas de repudio, alterando los saldos y anulando las transacciones.

Cómo prevenir las inyecciones de SQL

Hay algunos pasos para hacer que sus aplicaciones sean menos vulnerables, pero antes de cualquiera de estos pasos, es mejor asumir que todos los datos enviados por el usuario son malos y no confiar en nadie. Entonces podrías considerar lo siguiente:

  • Desactive el uso de SQL dinámico : esto significa que no cree consultas de base de datos con la entrada del usuario. Si es necesario, desinfecte, valide y escape los valores antes de realizar una consulta con los datos de entrada del usuario.
  • Utilice un firewall  : un firewall de aplicaciones web (basado en software o aplicaciones) ayudará a filtrar los datos maliciosos.
  • Compre mejor software  : esto simplemente significa que los codificadores serán responsables de verificar y corregir fallas.
  • Cifre o hash contraseñas y todos los demás datos confidenciales que tenga, esto debe incluir cadenas de conexión.
  • Evite conectarse a su base de datos con cuentas con privilegios de administrador a menos que sea absolutamente necesario.

Inyección de guiones

Esta vulnerabilidad de seguridad es una amenaza que permite a un atacante inyectar código malicioso directamente a través de los formularios web de sitios web basados ​​en datos a través de elementos de la interfaz de usuario. Este ataque a menudo se conoce como Cross-Site Scripting o XSS. El <script>, <meta>, <html>, <body>, <embed>, <frame>, <frameset>, <img>las etiquetas son los más apuntado para inyecciones de script.

Cómo prevenir las inyecciones de guiones

Los pasos para evitar las inyecciones de secuencias de comandos dependen del código de programación que esté utilizando. Generalmente, querrás:

  • validar y desinfectar la entrada del usuario (cualquier forma de campos de entrada) eliminando o escapando contenido potencialmente malicioso
  • limpiar cadenas de consulta en URL
  • validar y desinfectar todas las formas de datos, matrices y objetos antes de ejecutar en el servidor

Conclusión

En pocas palabras, la prevención es mejor que la cura. Con las nuevas actualizaciones de tecnología, nuestros sistemas estarán expuestos a más amenazas. Para estar al tanto, es importante tener los últimos parches y actualizaciones y estar atento a las mejores prácticas. Esto hace que sea más difícil ser víctima de estos ataques maliciosos.

¡Si te ha gustado vota con 5 Estrellas!
(Votos: 0 Promedio: 0)

Escribe Aquí Tu Comentario