pwndrop es un servicio de alojamiento de archivos auto-desplegable para enviar payloads del Red Team o compartir de forma segura tus archivos privados a través de HTTP y WebDAV.
Si alguna vez has necesitado configurar rápidamente un servidor web nginx/apache para alojar tus archivos y nunca estuviste contento con las limitaciones de python -m SimpleHTTPServer
, pwndrop es definitivamente para ti!
Con pwndrop puedes:
- Sube y comparte inmediatamente varios archivos usando tu propio VPS privado, usando el método de arrastrar y soltar.
- Decide hacer que los archivos estén disponibles o no disponibles para su descarga con un solo clic.
- Configurar URLs de descarga personalizadas, para archivos compartidos, sin jugar con la estructura de directorios.
- Prepara los archivos de fachada, que serán servidos en lugar del archivo original cuando te apetezca.
- Configurar redirecciones automáticas para falsificar la extensión del archivo en un enlace compartido.
- Cambiar el tipo de MIME del archivo servido para cambiar el comportamiento del navegador cuando se hace clic en un enlace de descarga.
- Servir los archivos a través de HTTP, HTTPS y WebDAV.
- Instalar y configurar todo usando un bash oneliner (una sola línea).
- Configura pwndrop para que funcione como un servidor de nombres y responda con un registro DNS A válido a cualquier subdominio que elijas.
- Protege tu panel de administración detrás de una ruta URL secreta personalizada e inicia sesión de forma segura con tu propio nombre de usuario y contraseña.
- No te preocupes por configurar los certificados HTTPS ya que pwndrop hace todo por ti en segundo plano (incluyendo las auto-renovaciones).
Su principal objetivo es hacer que el intercambio de archivos sea tan fácil e intuitivo como sea posible, a la vez que se implementan características adicionales para ayudar en las evaluaciones del equipo rojo.
El Frontend de pwndrop está desarrollada en puro Vue.js + Bootstrap sin dependencias de npm o webpack. El backend sirve REST API y maneja una base de datos local, impulsada por el lenguaje GO.
Redacción
Si quieres aprender a usar pwndrop o quieres saber qué nuevas características se han implementado en las últimas versiones, asegúrate de revisar las entradas en el blog:
Guía en vídeo
Echa un vistazo al fantástico vídeo realizado por Luke Turvey (@TurvSec), que explica completamente cómo empezar a usar pwndrop.
Requisitos previos
Si aún no tienes el servidor para desplegarlo en Digital Ocean, te recomiendo encarecidamente. El servidor Debian 9 más barato a 5 dólares por mes con 25 GB de espacio de almacenamiento hará maravillas por ti. Puedes usar mi enlace de referencia para obtener $100 extra para gastar en tus servidores en 60 días de forma gratuita.
Registra un nuevo dominio y apunta sus registros DNS A a tu IP VPS. También puedes registrar un dominio y apuntar sus servidores de nombre ns1
y ns2
a la IP de la instancia pwndrop – responderá automáticamente con respuestas DNS A válidas.
- Nombre de dominio registrado que apunta a IP de instancia pwndrop como registros DNS A o como servidor de nombres.
- Servidor con al menos 512 MB de RAM.
Si quieres configurar pwndrop sin un dominio, comprueba más abajo cómo configurar una instancia local, que no generará automáticamente los certificados HTTPS.
Instalación
Asegúrate de que no haya ningún servidor DNS o HTTP(S) funcionando antes de intentar instalar pwndrop.
Oneliner
No recomiendo ejecutar oneliners, antes de descargar y comprobar el código del script, pero si realmente tienes prisa, aquí está:
curl https://raw.githubusercontent.com/kgretzky/pwndrop/master/install_linux.sh | sudo bas
Esto descargará el último binario de la versión amd64 e instalará completamente un daemon que se ejecuta en segundo plano.
Desde el binario
Primero tienes que descargar el paquete de lanzamiento que quieres de: https://github.com/kgretzky/pwndrop/releases
Entonces haz lo siguiente (esto realiza las mismas acciones al oneliner):
tar zxvf pwndrop-linux-amd64.tar.gz
./pwndrop stop
./pwndrop install
./pwndrop start
./pwndrop status
Desde el código fuente
En primer lugar, asegúrate de que has instalado el GO con la versión 1.13 como mínimo: https://golang.org/doc/install
Entonces haz lo siguiente:
git clone https://github.com/kgretzky/pwndrop
cd pwndrop
make
make install
Inicio Rápido
Asegúrate de que el pwndrop está funcionando.
- Abra la URL secreta para autorizar a tu navegador:
https://tudiminio.com/pwndrop
(este es un valor por defecto; asegúrate de usar el camino secreto, configurado previamente) - Abre la URL del panel de administración en tu navegador:
https://tudiminio.com/
(ya que has autorizado tu navegador, ahora verás una página de acceso al panel de administración) - Crea tu cuenta de administrador o inicia sesión.
- Haz clic en el engranaje de configuración en la esquina superior izquierda y asegúrate de cambiar la ruta secreto a algo que no sea
/pwndrop
.
¡Estás listo!
Ejecutando desde el CLI
No tienes que instalar pwndrop como un daemon y puedes ejecutarlo directamente desde la consola.
usage: pwndrop [start|stop|install|remove|status] [-config <config_path>] [-debug] [-no-autocert] [-no-dns] [-h]
daemon management:
start : start the daemon
stop : stop the daemon
install : install the daemon using the available system manager (systemd, systemv and upstart supported)
remove : uninstall the daemon
status : check status of the installed daemon
parameters:
-config : specify a custom path to a config file (def. 'pwndrop.ini' in same directory as the executable)
-debug : enable debug output
-no-autocert : disable automatic TLS certificate retrieval from LetsEncrypt; useful when you want to connect over IP or/and in a local network
-no-dns : do not run a DNS server on port 53 UDP; use this if you don't want to use pwndrop as a nameserver
-h : usage help
Configuración
En el primer lanzamiento, pwndrop, por defecto, creará un nuevo archivo de configuración pwndrop.ini
en el mismo directorio que un ejecutable. Más tarde podrás modificarlo o suministrar el tuyo propio, por ejemplo para pre-configurar pwndrop antes de la instalación para automatizar aún más el despliegue de una herramienta.
Aquí hay un ejemplo de archivo de configuración con todas las variables de configuración disponibles con comentarios:
[pwndrop]
listen_ip = "190.33.86.22" # the external IP of your pwndrop instance (must be set if you want to use the nameserver feature)
http_port = 80 # listening port for HTTP and WebDAV
https_port = 443 # listening port for HTTPS
data_dir = "./data" # directory path where data storage will reside (relative paths are from executable directory path)
admin_dir = "./admin" # directory path where the admin panel files reside (relative paths are from executable directory path)
[setup] # optional: put in if you want to pre-configure pwndrop (section will be deleted from the config file on first run)
username = "admin" # username of the admin account
password = "secretpassword" # password of the admin account
redirect_url = "https://www.somedomain.com" # URL to which visitors will be redirected to if they supply a path, which doesn't point to any shared file (put blank if you want to return 404)
secret_path = "/pwndrop" # secret URL path, which upon visiting will allow your browser to access the login page of the admin panel (make sure to change the default value)
Si quieres preconfigurar tu instancia pwndrop antes del despliegue usando cualquiera de los scripts de instalación, coloca tu archivo de configuración en /usr/local/pwndrop/pwndrop.ini
y será parseado en el momento en que el daemon pwndrop se ejecute por primera vez.
Créditos
¡Muchas gracias a @jaredhaight por inspirarme a aprender Vue, con su framework Faction C2.
También muchas gracias a todas las personas que me dieron comentarios previos al lanzamiento y me apoyaron con sus opiniones sobre la herramienta!
Licencia
pwndrop está hecho por Kuba Gretzky (@mrgretzky) y está liberado bajo licencia GPL3.
pwndrop (este enlace se abre en una nueva ventana) por kgretzky (este enlace se abre en una nueva ventana)
Self-deployable file hosting service for red teamers, allowing to easily upload and share payloads over HTTP and WebDAV.