En este video tutorial, cubrimos la sala de vulnerabilidades de carga de TryHackMe, donde demostramos métodos y técnicas para explotar las vulnerabilidades de carga de archivos, además de eludir los filtros de carga, como el uso de números mágicos, el cambio de extensión de archivo y más.

Obtener notas OSCP

El curso completo y práctico de pruebas de penetración de aplicaciones web

La capacidad de cargar archivos a un servidor se ha convertido en una parte integral de cómo interactuamos con las aplicaciones web. Ya sea una imagen de perfil para un sitio web de redes sociales, un informe cargado en el almacenamiento en la nube o guardando un proyecto en Github; Las aplicaciones para funciones de carga de archivos son ilimitadas.

Desafortunadamente, cuando se maneja mal, la carga de archivos también puede generar vulnerabilidades graves en el servidor. Esto puede provocar desde problemas relativamente menores y molestos; hasta llegar a la ejecución remota completa del código (ICE) si un atacante logra cargar y ejecutar un shell. Con acceso de carga sin restricciones a un servidor (y la capacidad de recuperar datos a voluntad), un atacante podría desfigurar o alterar el contenido existente, incluyendo la inyección de páginas web maliciosas, lo que genera más vulnerabilidades como XSS o CSRF. Al cargar archivos arbitrarios, un atacante también podría utilizar el servidor para alojar y/o servir contenido ilegal, o para filtrar información confidencial. Hablando de manera realista, un atacante con la capacidad de cargar un archivo de su elección en su servidor (sin restricciones) es realmente muy peligroso.

El propósito de esta sala es explorar algunas de las vulnerabilidades resultantes del manejo inadecuado (o inadecuado) de la carga de archivos. Específicamente, veremos:

  • Sobrescribir archivos existentes en un servidor
  • Carga y ejecución de Shells en un servidor
  • Omitir el filtrado del lado del cliente
  • Omitir varios tipos de filtrado del lado del servidor
  • Engañar las comprobaciones de validación del tipo de contenido

Entonces, tenemos un punto de carga de archivos en un sitio. ¿Cómo haríamos para explotarlo?

Como ocurre con cualquier tipo de piratería, la enumeración es clave. Cuanto más entendemos acerca de nuestro entorno, más capaces seremos de hacer con eso. Es bueno mirar el código fuente de la página para ver si se está aplicando algún tipo de filtrado del lado del cliente. Escaneado con un directorio bruteforcer como Gobuster suele ser útil en ataques web y puede revelar dónde se cargan los archivos; Gobuster ya no está instalado de forma predeterminada en Kali, pero se puede instalar con sudo apto instalar gobuster. Interceptar solicitudes de carga con Burpsuite También te resultará útil. Extensiones de navegador como Wappalyser puede proporcionar información valiosa de un vistazo sobre el sitio al que se dirige.

Con una comprensión básica de cómo el sitio web podría manejar nuestras entradas, podemos intentar husmear y ver qué podemos y qué no podemos cargar. Si el sitio web emplea filtrado del lado del cliente, entonces podemos mirar fácilmente el código del filtro y tratar de omitirlo (¡más sobre esto más adelante!). Si el sitio web cuenta con un filtrado del lado del servidor, es posible que tengamos que adivinar qué está buscando el filtro, cargar un archivo y luego intentar algo ligeramente diferente según el mensaje de error si la carga falla. Cargar archivos diseñados para provocar errores puede ayudar con esto. Herramientas como Burpsuite o OWASP Zap puede resultar muy útil en esta etapa.

Respuestas de la habitación

¿Cuál es el nombre del archivo de imagen que se puede sobrescribir?

Sobrescribe la imagen. ¿Cuál es la bandera que recibes?

ejecutar un Gobuster escanee en el sitio web usando la sintaxis de la captura de pantalla anterior. ¿Qué directorio parece que podría usarse para cargas?

(NB: Este es un buen hábito que debes adquirir y te será de gran utilidad en las próximas tareas...)

Obtenga un shell web o un shell inverso en la máquina.
¿Cuál es la bandera en el directorio /var/www/ del servidor?

¿Cuál es el lenguaje de programación del lado del servidor tradicionalmente predominante?

Al validar por extensión de archivo, ¿cómo llamaría a una lista de extensiones aceptadas (por la cual el servidor rechaza cualquier extensión que no esté en la lista)?

[Investigación] Qué MÍMICA ¿Qué tipo esperaría ver al cargar un archivo CSV?

¿Cuál es la bandera en /var/www/?

¿Cuál es la bandera en /var/www/?

Coge la bandera de /var/www/

Hackea la máquina y toma la bandera de /var/www/

Tutorial en vídeo

Acerca del Autor

Creo notas de ciberseguridad, notas de marketing digital y cursos online. También brindo consultoría de marketing digital que incluye, entre otros, SEO, Google y meta anuncios y administración de CRM.

Ver Artículos