Inyección de comandos del sistema operativo

¿Qué es la inyección de comandos del sistema operativo?

Una inyección de comandos del sistema operativo es una vulnerabilidad de seguridad web que permite la ejecución de comandos del sistema operativo no autorizados. Una vulnerabilidad de inyección de comandos del sistema operativo surge cuando una aplicación web envía comandos del sistema sin limpiar y sin filtrar para que se ejecuten. Debido a la insuficiente validación de entrada, un atacante podría inyectar sus propios comandos para ser operados a nivel de shell. El atacante introduce comandos del sistema operativo a través de datos proporcionados por el usuario, como cookies, formularios o encabezados HTTP.

Esta es una vulnerabilidad peligrosa, ya que los comandos del sistema operativo suministrados por el atacante generalmente se ejecutan con los privilegios de la aplicación vulnerable. Por lo tanto, un atacante podría obtener el control completo del host que opera syinyección de comandos del sistema operativo, comprometiendo la aplicación y todos sus datos.

A diferencia de las vulnerabilidades de inyección de código que existen cuando un atacante puede enviar una entrada ejecutable a un programa y engañar al software para que ejecute esa entrada. Una vulnerabilidad de inyección de comandos explota las debilidades de un sistema desprotegido que permite la ejecución de comandos arbitrarios sin tener que inyectar código. Ambas vulnerabilidades surgen de una validación de datos de entrada/salida adecuada.

Comandos Útiles

a Continuación son algunos comandos útiles que pueden darle más información sobre el sistema operativo que están atacando

Propósito de comando

Linux

Windows

Nombre de usuario actual

whoami

whoami

sistema Operativo

uname-a

ver

configuración de Red

ifconfig

ipconfig / all

Conexiones de red

netstat-an

netstat-an

Procesos en ejecución

ps-ef

lista de tareas

Formas de inyectar comandos de SO

Para probar la vulnerabilidad de inyección de comandos de su aplicación, intente usar metacaracteres que permitan encadenar comandos. Si puede ejecutar su propio comando, la aplicación web es vulnerable. Los siguientes separadores de comandos funcionan tanto en sistemas basados en Windows como en Unix:

  • &
  • &&
  • |
  • ||

Otras cargas útiles de inyección de comandos incluyen el comando ping a continuación, que activará un retardo de tiempo, lo que le permitirá confirmar que el comando se ejecutó en función del tiempo que tarda la aplicación en responder. El siguiente comando tardará 10 segundos en devolver una respuesta.

& ping-c 10 127.0.0.1 &

Los atacantes también pueden confirmar una vulnerabilidad de comando del sistema operativo utilizando el comando nslookup en un dominio que controlan. Si se produce la búsqueda, saben que su inyección de comando fue exitosa.

Varios otros comandos para probar su aplicación :

php-v Le da la versión de PHP que se ejecuta en el servidor de aplicaciones web.

&&cat/etc/passwdmuestra todos los usuarios del servidor Linux backend

/etc / shadowmuestra todas las contraseñas con hash, pero solo si se ejecuta con privilegios de root.

Cómo evitar la inyección de comandos de OS ataques

  1. Defensa Opción 1: Evitar la llamada OS comandos directamente -evitar llamar a OS comandos directamente. Las funciones de biblioteca integradas son una muy buena alternativa a los comandos del sistema operativo.
  2. Opción de defensa 2: Valores de escape añadidos a los comandos del sistema operativo específicos de cada sistema operativo, por ejemplo, escapescapeshellcmd () en PHP.
  3. Opción de defensa 3: Parametrización junto con Validación de entrada – Si no se puede evitar la parametrización suministrada por el usuario y la validación de entrada debería estar en uso.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.