Wanetty Avatar

Welcome to my Blog

Things about my experience in Cybersecurity.

Upgopher, Un Análisis Rápido de un Servidor de Archivos Ligero y Eficiente

Logo de Upgopher

¿Por qué Upgopher?

Las soluciones convencionales para el manejo de archivos suelen apoyarse en scripts de Python, especialmente por la facilidad con la que se puede configurar un servidor HTTP con python3 -m http.server. Sin embargo, este enfoque presenta varias limitaciones importantes:

Upgopher resuelve estos inconvenientes al estar desarrollado en Go, generando binarios autónomos que funcionan sin necesidad de dependencias externas. Esto permite implementar el servidor de manera directa en cualquier plataforma compatible con Go, añadiendo funcionalidades clave que simplifican el proceso de compartir y gestionar archivos.

Upgopher para Pentesters y Seguridad

Una de las motivaciones clave para crear Upgopher fue simplificar el proceso de transferencia de archivos en contextos específicos, como durante auditorías de seguridad. En particular, los pentesters suelen necesitar herramientas que faciliten la transferencia rápida de archivos, tanto para subir payloads a sistemas remotos como para exfiltrar información de manera efectiva.

Por ejemplo, imagina que necesitas subir un archivo a un servidor al que acabas de ganar acceso, pero no deseas instalar dependencias complicadas o quieres evitar problemas de compatibilidad en un sistema operativo particular. Con Upgopher, puedes compilar el binario adecuado para esa máquina y ejecutarlo, facilitando así la transferencia de ficheros de forma rápida y sin complicaciones.

Otra situación común para los pentesters es la necesidad de descargar información obtenida durante la fase de explotación. Upgopher también permite la descarga sencilla de archivos, proporcionando un listado de los archivos disponibles en el servidor, sin depender de servicios externos o métodos engorrosos para transferir archivos entre redes.

Características Técnicas de Upgopher

A continuación, exploraremos las características técnicas más relevantes de Upgopher:

Cómo Desplegar Upgopher

Existen varias formas de desplegar Upgopher dependiendo de las necesidades del entorno.

Instalación Automática

La manera más sencilla de instalar Upgopher es utilizando go install. Con solo ejecutar el siguiente comando, podemos obtener una versión lista para ser utilizada si ya tenemos Go instalado:

go install github.com/wanetty/upgopher@latest

Construcción desde el Código Fuente

Para quienes prefieran tener un mayor control sobre el proceso de despliegue, también es posible clonar el repositorio y construir el proyecto manualmente:

git clone https://github.com/wanetty/upgopher.git
cd upgopher
go build 

Esto permite a los usuarios compilar Upgopher para sus plataformas específicas, generando un binario adecuado para sus necesidades.

Docker

El despliegue mediante Docker también está soportado, lo que es ideal en ambientes donde se buscan implementaciones consistentes y fácilmente replicables:

docker build . -t upgopher
docker run --name upgopher -p 9090:9090 upgopher

Esto facilita la implementación en infraestructuras ya basadas en contenedores y permite manejar instancias aisladas del servidor.

Releases

La versión actual de Upgopher se encuentra disponible en la página de releases del repositorio de GitHub. Estas versiones se compilan automáticamente y se pueden descargar directamente desde la página de releases.

Análisis de Uso y Casos de Aplicación

Casos de Uso Comunes

Upgopher resulta especialmente útil en situaciones donde se requiere un servidor de archivos rápido, sin la necesidad de una configuración compleja:

Ejemplo de Uso

A continuación, podemos ver un ejemplo de uso de Upgopher, que se realiza en nuestra máquina local.

Ejemplo de Uso de Upgopher

Seguidamente vemos como podemos acceder a la interfaz web de Upgopher, que nos permite subir archivos, descargarlos, eliminarlos, navegar por directorios y descargar archivos en formato ZIP.

Interfaz web de Upgopher

Limitaciones y Consideraciones

Aunque Upgopher es una solución efectiva para muchas situaciones, tiene algunas limitaciones inherentes a su simplicidad:

Conclusión

Upgopher se presenta como una herramienta robusta y sencilla para resolver la necesidad de un servidor de archivos liviano y multiplataforma. Su desarrollo en Go lo hace idóneo para aquellos que buscan minimizar la dependencia de librerías y evitar los problemas comunes relacionados con el uso de Python en este contexto.

Aunque no pretende ser una solución compleja, su enfoque en la simplicidad y facilidad de uso lo convierten en una opción atractiva para una amplia variedad de casos. Desde ambientes de desarrollo hasta auditorías de seguridad y pequeñas oficinas, Upgopher ofrece una manera eficiente y rápida de compartir y gestionar archivos.

Para aprender más o contribuir al proyecto, puedes visitar el repositorio de GitHub.

Si tienes preguntas técnicas o deseas discutir sobre posibles mejoras, también puedes encontrarme en Twitter como @gm_eduard.