¿Qué son los ataques web en los que los usuarios pueden ejecutar código en sus servidores?

10

Escucho historias sobre servidores y sitios web inseguros en los que las personas (o los robots) ingresan y ejecutan su propio código en el servidor.

Mi pregunta es ¿cómo es eso posible? Escuché de personas que ponen su propio javascript en sitios web que roban cookies y técnicas para hacerlo. Nunca escuché de ataques reales para ejecutar código. Sé que las inyecciones de mysql se pueden usar para robar datos y poner código javascript en las páginas. Pero todavía tengo problemas para pensar en cómo la debilidad de un sitio puede comprometer a un servidor. ¿Cómo es eso posible?

    
pregunta 14.11.2011 - 15:24
fuente

6 respuestas

10

Para poder ejecutar código en su servidor, podría:

  • Suba un archivo utilizando uno de sus formularios web. Pero en lugar de una imagen, subo un archivo PHP. Luego puedo ejecutar el código en el archivo PHP con los privilegios del proceso del servidor web.
  • Explota un desbordamiento de búfer para obtener un shell en tu servidor.
  • Inicie sesión como administrador y cargue el código:
    • Ingeniero social la contraseña de uno de sus administradores.
    • Use un ataque XSS para robar las cookies de sesión de uno de sus administradores.
    • Use un ataque de inyección SQL para leer la tabla de contraseñas, luego:
      • lea las contraseñas que almacenó en texto sin cifrar, o
      • ejecute un programa de adivinación de contraseñas para descifrar sus contraseñas mal escogidas.
    • Use un ataque transversal de directorio para obtener una copia de su archivo de contraseña del sistema y use uno de los métodos de descifrado de contraseñas mencionados anteriormente.
    • Robar físicamente una cinta de respaldo para obtener una copia de su base de datos y usar uno de los métodos de descifrado de contraseñas mencionados anteriormente.
  • Utilice cualquiera de las docenas de métodos para controlar una máquina en su intranet y usarla como plataforma para cargar código en el servidor web.
  • Físicamente ponerme en frente de la consola del servidor.

Ten en cuenta que no necesariamente tengo que atacar tu aplicación. Puedo atacar vulnerabilidades en su servidor web, sistema operativo o personas, por ejemplo.

    
respondido por el bstpierre 14.11.2011 - 23:33
fuente
9

La más simple sería una vulnerabilidad de carga ejecutable. El escenario de configuración sería que un sitio permita a los usuarios cargar archivos en el sitio, por ejemplo, las imágenes que los usuarios podrían adjuntar a los mensajes del foro que crean. Si no hay medidas de seguridad y los archivos que los usuarios pueden cargar en vivo en una ubicación ejecutable accesible desde la web, existe la posibilidad de que un usuario malintencionado cargue algo como un archivo * .php o * .asp , con código que se ejecutará cuando el usuario navegue hasta el archivo cargado.

    
respondido por el Xander 14.11.2011 - 15:53
fuente
4

Los ataques de alto valor son los que obtienen una shell raíz en un servidor. En ese punto puedes correr lo que quieras.

Un paso hacia abajo es un ataque que usa la funcionalidad dentro de una aplicación web para obtener un shell, que puede escalarse a raíz. A veces, esa escalada se realiza mediante la carga de un archivo ejecutable en el espacio del usuario que obtiene privilegios a través de una explotación.

    
respondido por el Rory Alsop 14.11.2011 - 16:01
fuente
4

Tres ataques de servidores web muy comunes serían secuencias de comandos entre sitios y Inyección de SQL y Ataques transversales de directorios ( quizás el más común).

Todos estos son muy similares, y si tienen éxito son el resultado de una validación de entrada deficiente.

Si bien estos pueden no poner realmente en riesgo al servidor físico, hay cosas más dolorosas que perder un servidor. Como perder una base de datos llena de información de procesamiento financiero, o PII.

La validación de entrada es probablemente lo más importante para que los desarrolladores de aplicaciones web entiendan.

Incluso una aplicación muy simple, como un script que hace que los archivos estén disponibles para su visualización o descarga, puede ponerlo en riesgo si pasa archivos con una ruta a un script para hacer que el archivo se descargue o se pueda ver, y no No realice ninguna limpieza en las rutas para asegurarse, por ejemplo, de que son relativas y dentro de DOCUMENT_ROOT, entonces podría terminar con un servidor web que estaría muy contento de mostrar su archivo / etc / shadow o la configuración de iptables. , o cualquier otra cosa que viva en un archivo en su servidor.

    
respondido por el Tim Kennedy 14.11.2011 - 21:03
fuente
2

También puedes pensar en cualquier exploit de código de shell. Piense que el servidor web puede tener alguna vulnerabilidad que le permita a alguien causar un desbordamiento de búfer, y al usarlo puede inyectar un código que le dará acceso al shell.

Dado que el servidor web es una aplicación, podría ser vulnerable a este tipo de ataque. Por ejemplo, en este hilo alguien se queja de ser atacado por un shellcode a través de su servidor web.

    
respondido por el woliveirajr 14.11.2011 - 18:57
fuente
1

Aquí hay un gran libro para usted " Hacking: la próxima generación " . Ilustra muchos ejemplos de cómo se ejecutan los ataques. Si el servidor aloja una aplicación que no restringe los tipos de archivos cargados, por ejemplo, un usuario malintencionado puede cargar un shell (hay muchos de estos) y ejecutarlo en http. La mayoría de esas conchas permiten la escalada de privilegios. Entonces, si el servidor no está actualizado / parcheado, el atacante tendrá acceso de root en el servidor. Esto lo he visto muchas veces, principalmente en alojamiento web barato.

    
respondido por el Bassec 14.11.2011 - 16:28
fuente

Lea otras preguntas en las etiquetas