Atacando servidor - Vulnerabilidad PHP Upload unijimpe (Ataque y Prevención)

Vagando por la red, pude observar un upload realizado en PHP totalmente vulnerable a WebShell, la verdad no es sorpresa para mi por que yo implemente este Upload en PHP hace mucho tiempo por cierto en el año 2009 en un sitio web sobre desarrollo web y programación el cual yo administraba, y la cual fue atacado por dr.militan-53! de Zone-H.org.

El mirror que indexo zone-h es este: simpleforo.com hacked by dr.militan-53!.

Como todo newbie, subí el upload y no analice del todo el código del archivo y no pude fijarme pues me realizaron un deface un WebShell supongo.

Empecemos

Pero hoy no estoy para recordar viejos tiempos, hoy expongo aquí una forma de atacar y de prevenir este tipo de hackeo, Bien voy a utilizar un servidor maligno utilizado para robo y almacenamiento de datos de imágenes y cuentas de un juego online que actualmente tiene 48.73 GB de espacio utilizado, en realidad pura shit es lo que hay allí pero no soy quién para juzgar, bueno solo le quedan 3.97 GB un (8.15%) de espacio libre, entonces pronto lo dejaremos limpiecito.

El servidor es este: http://190.93.130.109
El upload se ubica en: http://190.93.130.109/Fotos/upload.php

Ahora voy a introducir una WebShell muy popular que pueden descargar desde aquí llamada: C99Shell v. 1.0, por cierto esta codificada en base64 para que no la detecte ningún antivirus, muy bien, voy a subir la WebShell y nos muestra lo siguiente:


Ahora voy a dirigirme a editar el archivo index.php y defacear el servidor, al realizar esta acción voy a dejar mi huella marcada en el servidor, pueden verla accediendo desde aca http://190.93.130.109, muy bien ahora que tengo control total voy a eliminar todos los archivos malignos y no malignos que este servidor contenga, como dije antes voy a limpiar todo, solamente dejaré el index defaceado y la carpeta dónde se ubica el upload para que puedan verlo, editare el upload para que no se afanen ustedes jaja.

Ahora selecciono los archivos a eliminar, como pueden ver contenia archivos ejecutables probablemente malignos de algún servidor de un juego online:


Elimine todos los archivos seleccionados y solamente nos quedo nuestro index.php y la carpeta Fotos que contenía el Upload PHP vulnerable, ya hemos concluido con el hackeo de este servidor.

Un vídeo



Prevención

El upload php unijimpe Vulnerable

Este upload acepta archivos PHP y permite ejecutarlos facilmente, aca pueden ver un Exploit PHP upload - (unijimpe) Remote File Upload Vulnerability, claramente se puede ver que también acepta WebShell transformadas en imágenes ejemplo: shell.php.pjpeg.

Por suerte existe una solución y una forma de añadir seguridad desde este artículo que preparo Unijimpe en su blog: Seguridad en Upload de Archivos.

Pasos preventivos

Los pasos que se pueden seguir son:
  • El archivo subido nunca debe ser accesible inmediatamente por el cliente.
  • Generar nombres aleatorios a los archivos subidos.
  • Filtrar los archivos para no permitir archivos PHP.
  • Subir los archivos a carpetas fuera del directorio de publicación.
  • Utilizar is_uploaded_file para verificar que el archivo se ha subido.
  • Utilizar move_uploaded_file para copiar el archivo al directorio final.

En el caso de imágenes

  • Verificar el Content-Type del archivo para asegurarse que el archivo es una imagen.
  • Verificar si el archivo es imagen con la función getimagesize.
  • Limitar el archivo a un máximo de tamaño.

Implementado Clase PHP para Upload

Siguiendo las reglas que hemos mencionado hemos creado una pequeña clase que facilita el subir archivos, Entonces se crea un archivo llamado upload.php donde se incluya el siguiente código: Esta clase contiene:
  • setFile: nombre del campo del formulario que deseamos subir.
  • setPath: carpeta donde se guardará el archivo.
  • setMaxSize: permite definir el tamaño máximo del archivo (opcional).
  • isImage: permite definir si se hará verificación de imágenes.
  • save: guarda el archivo en la carpeta de destino.
Dos propiedades útiles:
  • isupload: devuelve verdadero o falso indicando si el archivo se ha subido.
  • message: devuelve un mensaje indicando que ocurrió en el proceso.

¿Como utilizar?

Creamos un formulario con un campo llamado "archivo" y adicionalmente un campo oculto que lo utilizaremos para verificar que el formulario se ha enviado. El siguiente paso es incluir el archivo al inicio de nuestro script, luego creamos una instancia de la clase, definimos la carpeta donde se guardarán los archivos, el nombre del campo y procedemos al upload del archivo. Esta clase implementa algunos puntos para asegurar nuestros scripts, pero efectivamente no es completamente seguro ya que hay varias técnicas de como penetrar como se explica en Secure file upload in PHP web applications.

Puede descargar el upload desde aquí.

Recomendaciones Adicionales

Lo que unijimpe recomienda es lo siguiente:
  • Cambiar el titulo de la página "PHP upload - unijimpe", los atacantes hacen una busqueda de esta palabra y pueden ubicar las páginas que utilizan este script el cual puede ser atacado. Entonces si vas a utilizar el script de upload por lo menos hay que cambiar el título al ejemplo descargado.
  • Otra sugerencia es no mostrar el archivo recién subido, el administrador debe revisarlo antes que sea publicado.
  • Agregar la validación por content-type, por la extensión del archivo como hemos mencionado en este post.
  • Filtrar los archivos y solo permitir los archivos necesarios.

Más información
Puedes obtener más información complementaria desde estos enlaces:
Loading...
Nombre

Accesibilidad Actualidad Adobe Flash AirPods Amazon Amazon Music Unlimited Amazon Protect AMD Android Android 6.0 Marshmallow Android Auto Android Nougat Android Things Android Wear Animación Anti-Virus Aplicaciones Aplicaciones Web App Store Apple apple ipad 3 Audio AVG Base64 Bases de datos Black Friday BlackBerry BlackBerry 10 Blizzard Blogger Bromas Ciencia Clonaciones CMS Codificación Código Fuente Códigos Compras por Internet Consolas Contraseñas Cookies Cross site scripting Darknet Dart DDoS Deface Defacing Desarrolladores Diseño Web DOS Drivers Drones Experiencia Exploit Extensiones Exynos 9 Facebook Facebook Events Facebook Messenger fingerprinting Firefox 12 Fraudes Gadgets Gaming General GitHub Gmail Google Google Allo Google Analytics Google App Maker Google Chrome Google Drive Google Flights Google Imágenes Google Maps Google Pixel Google Play Google+ Gráficas Hacker Hackers Hacking Hacks Hardware HD Herramientas HI5 Hijacking htaccess HTML humans.txt Humor Gráfico Infección Informática Ingeniería Social Instagram Intel Internet Inyeccion iOS iOS 10 ip iPad 3 Iphone iPhone 7 iPhone 8 Javascript Juegos Kurt Cobain Land LinkedIn Linux Live HTTP headers Malware Mantenimiento Memorias Memorias USB MicroSD Microsoft Móviles Mozilla Firefox Música MySQL Navegadores Nexus Nintendo Nintendo NX Nintendo Switch Notebooks Noticias NVIDIA Ocio Opera Ordenador Overclocking Passwords PayPal Personal Phishing PHP Phreaking Plugins Portatiles Privacidad Procesadores Programación Programas Qualcomm Ransomware Realidad Virtual Redes Inalambricas Redes Sociales Redes y Conexiones Routers Samsung Samsung Galaxy Note 8 Samsung Galaxy S8 SD Seguridad Seguridad Informática SEO Servicios Web Sesiones Web Sistemas Operativos Skype Smartphones SMTP Flood Snap Inc Snapchat Snapdragon Snooping Software Sonico Sony Sony Xperia Source routing Spectacles Spotify Steam Steve Jobs TeamViewer Teclado Tecnología Telefonía Telegram Tips Tp-Link Tráfico Web Trailers Trasteando Troyanos Trucos Tutoriales Twitter Uber Ultrabooks USB Utilidades VBScript vBulletin Video Streaming VideoJuegos Videos Vídeos Virus Vulnerabilidades Vulnerabilidades Web Web WhatsApp Wifi Windows Windows 10 Windows 7 Windows 8 Windows 8.1 Windows Live Windows XP WordPress XBOX 360 XSS Yahoo! Youtube
false
ltr
item
Carluys Blog: Atacando servidor - Vulnerabilidad PHP Upload unijimpe (Ataque y Prevención)
Atacando servidor - Vulnerabilidad PHP Upload unijimpe (Ataque y Prevención)
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgC51-pT2lwU2BicZOrW2PsP_piLFakpBwHu7EQo2aBCRGytL-vFWMFWFvVSoFRsi4SQf6cmEzKX4UbWRAkjhezHbkpqXlRnv7I5e5CL3ZXfISPjJPQcJgBUzpso7f_H6a-3MCMAlREpXD-/s400/servidorconwebshell-carluys.png
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgC51-pT2lwU2BicZOrW2PsP_piLFakpBwHu7EQo2aBCRGytL-vFWMFWFvVSoFRsi4SQf6cmEzKX4UbWRAkjhezHbkpqXlRnv7I5e5CL3ZXfISPjJPQcJgBUzpso7f_H6a-3MCMAlREpXD-/s72-c/servidorconwebshell-carluys.png
Carluys Blog
https://carluys.blogspot.com/2012/04/atacando-servidor-vulnerabilidad-php.html
https://carluys.blogspot.com/
https://carluys.blogspot.com/
https://carluys.blogspot.com/2012/04/atacando-servidor-vulnerabilidad-php.html
true
5177014300366239033
UTF-8
Not found any posts Not found any related posts VIEW ALL Readmore Reply Cancel reply Delete By Home PAGES POSTS View All RECOMMENDED FOR YOU Tag ARCHIVE SEARCH ALL POSTS Not found any post match with your request Back Home Contents Ver también relacionados Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sun Mon Tue Wed Thu Fri Sat January February March April May June July August September October November December Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec just now 1 minute ago $$1$$ minutes ago 1 hour ago $$1$$ hours ago Yesterday $$1$$ days ago $$1$$ weeks ago more than 5 weeks ago Followers Follow THIS CONTENT IS PREMIUM Please share to unlock Copy All Code Select All Code All codes were copied to your clipboard Can not copy the codes / texts, please press [CTRL]+[C] (or CMD+C with Mac) to copy