All Projects → kgretzky → Pwndrop

kgretzky / Pwndrop

Licence: gpl-3.0
Self-deployable file hosting service for red teamers, allowing to easily upload and share payloads over HTTP and WebDAV.

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to Pwndrop

Cloudreve
🌩支持多家云存储的云盘系统 (Self-deployed file management and sharing system, supports multiple storage providers)
Stars: ✭ 12,318 (+1302.96%)
Mutual labels:  file-manager, file-sharing
Youtransfer
The simple but elegant self-hosted file transfer & sharing solution
Stars: ✭ 1,525 (+73.69%)
Mutual labels:  self-hosted, file-sharing
Updog
Updog is a replacement for Python's SimpleHTTPServer. It allows uploading and downloading via HTTP/S, can set ad hoc SSL certificates and use http basic auth.
Stars: ✭ 994 (+13.21%)
Mutual labels:  file-sharing, http-server
Na
Share files on your local network
Stars: ✭ 15 (-98.29%)
Mutual labels:  file-sharing, http-server
Filestash
🦄 A modern web client for SFTP, S3, FTP, WebDAV, Git, Minio, LDAP, CalDAV, CardDAV, Mysql, Backblaze, ...
Stars: ✭ 5,231 (+495.79%)
Mutual labels:  file-manager, file-sharing
Fileshelter
FileShelter is a “one-click” file sharing web application
Stars: ✭ 132 (-84.97%)
Mutual labels:  self-hosted, file-sharing
Docviewer
文档/文件查看器(支持本地或者其他app分享过来的word、excel、pdf、rtf等格式文件)
Stars: ✭ 155 (-82.35%)
Mutual labels:  file-manager, file-sharing
Payloadsallthethings
A list of useful payloads and bypass for Web Application Security and Pentest/CTF
Stars: ✭ 32,909 (+3648.18%)
Mutual labels:  redteam, payloads
Efo
EFO是一个基于SpringBoot和Vue构建的文件分享系统,包括文件的上传与下载,文件的权限管理,远程文件管理等功能。
Stars: ✭ 327 (-62.76%)
Mutual labels:  file-manager, file-sharing
directorylister
魔改DirectoryLister支持Markdown,各种优化修改
Stars: ✭ 38 (-95.67%)
Mutual labels:  file-sharing, file-manager
Defcon27 csharp workshop
Writing custom backdoor payloads with C# - Defcon 27 Workshop
Stars: ✭ 491 (-44.08%)
Mutual labels:  redteam, payloads
Projectsend
ProjectSend is a free, open source software that lets you share files with your clients, focused on ease of use and privacy. It supports clients groups, system users roles, statistics, multiple languages, detailed logs... and much more!
Stars: ✭ 671 (-23.58%)
Mutual labels:  self-hosted, file-sharing
Defx.nvim
📁 The dark powered file explorer implementation
Stars: ✭ 917 (+4.44%)
Mutual labels:  file-manager
Litecloud
User management system for the server (Home Cloud).
Stars: ✭ 26 (-97.04%)
Mutual labels:  file-manager
Orbital
Orbital is a self-hosted CI system for solo/small consulting dev teams. Written in Rust.
Stars: ✭ 22 (-97.49%)
Mutual labels:  self-hosted
Flox
Self Hosted Movie, Series and Anime Watch List
Stars: ✭ 901 (+2.62%)
Mutual labels:  self-hosted
Astuto
A free, open source, self-hosted customer feedback tool 🦊
Stars: ✭ 860 (-2.05%)
Mutual labels:  self-hosted
Self Hosted Ssb
self-hosted Secure Scuttlebutt web client
Stars: ✭ 25 (-97.15%)
Mutual labels:  self-hosted
Sylar
C++高性能分布式服务器框架,webserver,websocket server,自定义tcp_server(包含日志模块,配置模块,线程模块,协程模块,协程调度模块,io协程调度模块,hook模块,socket模块,bytearray序列化,http模块,TcpServer模块,Websocket模块,Https模块等, Smtp邮件模块, MySQL, SQLite3, ORM,Redis,Zookeeper)
Stars: ✭ 895 (+1.94%)
Mutual labels:  http-server
R4ds
📖 R for data import/export , clean, wrangling, exploration, visualization, & analysis with R https://xiangyunhuang.github.io/r4ds/
Stars: ✭ 19 (-97.84%)
Mutual labels:  file-manager

pwndrop logo

pwndrop title

pwndrop is a self-deployable file hosting service for sending out red teaming payloads or securely sharing your private files over HTTP and WebDAV.

If you've ever needed to quickly set up an nginx/apache web server to host your files and you were never happy with the limitations of python -m SimpleHTTPServer, pwndrop is definitely for you!

demo

With pwndrop you can:

  • [x] Upload and immediately share multiple files using your own private VPS, using drag & drop.
  • [x] Decide to make files available or unavailable for download with a single click.
  • [x] Set up custom download URLs, for shared files, without playing with directory structure.
  • [x] Set up facade files, which will be served instead of the original file whenever you feel like it.
  • [x] Set up automatic redirects to spoof the file's extension in a shared link.
  • [x] Change MIME type of the served file to change browser's behavior when a download link is clicked.
  • [x] Serve files over HTTP, HTTPS and WebDAV.
  • [x] Install and setup everything using a bash oneliner.
  • [x] Set up pwndrop to work as a nameserver and respond with a valid DNS A record to any sub-domain you choose.
  • [x] Protect your admin panel behind a custom secret URL path and log in securely with your own username and password.
  • [x] Never worry about setting up HTTPS certificates as pwndrop does everything for you in the background (including auto-renewals).

Its main goal is to make file sharing as easy and intuitive as possible, while implementing extra features to aid in red team assessments.

Frontend of pwndrop is developed in pure Vue.js + Bootstrap with no npm or webpack dependencies. The backend serves REST API and manages a local database, powered by GO language.

Write-up

If you want to learn how to use pwndrop or you want to learn what new features were implemented in recent releases, make sure to check out the posts on my blog:

https://breakdev.org/pwndrop

Video guide

Take a look at the fantastic video made by Luke Turvey (@TurvSec), which fully explains how to get started using pwndrop.

File and Phishing Payload Hosting using PwnDrop (Red Team) - Luke Turvey

Prerequisites

If you don't yet have the server to deploy to I highly recommend Digital Ocean. The cheapest $5/mo Debian 9 server with 25GB of storage space will work wonders for you. You can use my referral link to get an extra $100 to spend on your servers in 60 days for free.

Register a new domain and point its DNS A records to your VPS IP. You can also register a domain and point its ns1 and ns2 nameservers to pwndrop instance IP - it will automatically respond with valid DNS A replies.

  1. Registered domain name pointing to pwndrop instance IP as a DNS A records or as a nameserver.
  2. Server with at least 512 MB RAM.

If you want to set up pwndrop without a domain, check below how to set up a local instance, which will not auto-generate HTTPS certificates.

Installation

Make sure there aren't any DNS or HTTP(S) servers running before you attempt to install pwndrop.

Oneliner

I do not recommend running oneliners, before downloading and checking the script code, but if you are really in a hurry, here it is:

curl https://raw.githubusercontent.com/kgretzky/pwndrop/master/install_linux.sh | sudo bash

This will download the latest amd64 release binary and fully install a daemon running in a background.

From binary

First you need to download the release package you want from: https://github.com/kgretzky/pwndrop/releases

Then do the following (this performs same actions to the oneliner):

tar zxvf pwndrop-linux-amd64.tar.gz
./pwndrop stop
./pwndrop install
./pwndrop start
./pwndrop status

From source code

First of all, make sure you have installed GO with version at least 1.13: https://golang.org/doc/install

Then do the following:

sudo apt-get -y install git make
git clone https://github.com/kgretzky/pwndrop
cd pwndrop
make
make install

Quickstart

Make sure the pwndrop is running.

  1. Open the secret URL to authorize your browser: https://yourdomain.com/pwndrop (this is a default value; make sure to use the secret path, you've pre-configured)
  2. Open the admin panel URL in your browser: https://yourdomain.com/ (since you've authorized your browser, you will now see an admin panel login page)
  3. Create your admin account or login.
  4. Click the configuration cog in top-left corner and make sure you change the secret path to something other than /pwndrop.

You're good to go!

Running from CLI

You don't have to install pwndrop as a daemon and you can run it straight from the console.

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

Configuration

On first launch, pwndrop, by default, will create a new configuration file pwndrop.ini in the same directory as an executable. You can later modify it or supply your own, for example to pre-configure pwndrop before the installation to automate the deployment of a tool even better.

Here is an example config file with all available config variables with commentary:

[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)

If you want to pre-configure your pwndrop instance before deployment using any of the installation scripts, put your configuration file at /usr/local/pwndrop/pwndrop.ini and it will be parsed the moment pwndrop daemon is first executed.

Credits

Huge thanks to @jaredhaight for inspiring me to learn Vue, with his Faction C2 framework!

Also much thanks to all the people who gave me pre-release feedback and supported me with their opinions on the tool!

License

pwndrop is made by Kuba Gretzky (@mrgretzky) and it's released under GPL3 license.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].