pwndrop 是一个可自行部署的文件托管服务,用于发送红队测试负载,或通过 HTTP 和 WebDAV 安全地分享你的私人文件。
如果你曾经需要快速搭建一个 nginx/apache 服务器来托管文件,却对 python -m SimpleHTTPServer 的限制感到不满,那么 pwndrop 绝对适合你!
使用 pwndrop,你可以:
其主要目标是让文件分享变得尽可能简单直观,同时实现额外的功能以辅助红队评估。
pwndrop 的前端使用纯 Vue.js + Bootstrap 开发,没有 npm 或 webpack 依赖。后端通过 GO 语言提供 REST API 并管理本地数据库。
如果你想了解如何使用 pwndrop,或者想知道最近版本中实现了哪些新功能,请务必查看我博客上的文章:
看看 Luke Turvey (@TurvSec) 制作的精彩视频,它全面讲解了如何开始使用 pwndrop。
如果你还没有要部署的服务器,我强烈推荐 Digital Ocean。最便宜的 $5/月 Debian 9 服务器,拥有 25GB 存储空间,对你来说会非常有用。你可以使用我的推荐链接 在 60 天内免费获得额外 $100 用于服务器。
注册一个新域名,并将其 DNS A 记录指向你的 VPS IP。你也可以注册一个域名,并将其 ns1 和 ns2 名称服务器指向 pwndrop 实例的 IP——它会自动响应有效的 DNS A 回复。
如果你想在没有域名的情况下设置 pwndrop,请查看下面如何设置本地实例,该实例不会自动生成 HTTPS 证书。
在尝试安装 pwndrop 之前,请确保没有任何 DNS 或 HTTP(S) 服务器正在运行。
我不建议在下载并检查脚本代码之前执行一行命令,但如果你真的很着急,可以这样:
curl https://raw.githubusercontent.com/kgretzky/pwndrop/master/install_linux.sh | sudo bash
这将下载最新的 amd64 发布二进制文件,并在后台完全安装一个守护进程。
首先,你需要从 https://github.com/kgretzky/pwndrop/releases 下载你想要的发布包。
然后执行以下操作(这与一行命令执行的操作相同):
tar zxvf pwndrop-linux-amd64.tar.gz
./pwndrop stop
./pwndrop install
./pwndrop start
./pwndrop status
首先,确保你已经安装了版本至少为 1.13 的 GO:https://golang.org/doc/install
然后执行以下操作:
sudo apt-get -y install git make
git clone https://github.com/kgretzky/pwndrop
cd pwndrop
make
make install
确保 pwndrop 正在运行。
https://yourdomain.com/pwndrop(这是默认值;请确保使用你预配置的秘密路径)https://yourdomain.com/(由于你已经授权了浏览器,现在将看到管理面板登录页面)/pwndrop 以外的其他值。一切就绪!
你不需要将 pwndrop 作为守护进程安装,可以直接从控制台运行它。
usage: pwndrop [start|stop|install|remove|status] [-config <config_path>] [-debug] [-no-autocert] [-no-dns] [-h]
守护进程管理:
start : 启动守护进程
stop : 停止守护进程
install : 使用可用的系统管理器(支持 systemd、systemv 和 upstart)安装守护进程
remove : 卸载守护进程
status : 检查已安装守护进程的状态
参数:
-config : 指定配置文件的自定义路径(默认为可执行文件所在目录下的 'pwndrop.ini')
-debug : 启用调试输出
-no-autocert : 禁用从 LetsEncrypt 自动获取 TLS 证书;当你希望通过 IP 和/或本地网络连接时很有用
-no-dns : 不在 UDP 53 端口运行 DNS 服务器;如果你不想将 pwndrop 用作名称服务器,请使用此选项
-h : 使用帮助
首次启动时,pwndrop 默认会在可执行文件所在目录下创建一个新的配置文件 pwndrop.ini。你可以稍后修改它,或者提供你自己的配置文件,例如在安装前预配置 pwndrop 以更好地自动化工具部署。
以下是一个示例配置文件,包含所有可用的配置变量及注释:
[pwndrop]
listen_ip = "190.33.86.22" # pwndrop 实例的外部 IP(如果要使用名称服务器功能,必须设置)
http_port = 80 # HTTP 和 WebDAV 的监听端口
https_port = 443 # HTTPS 的监听端口
data_dir = "./data" # 数据存储的目录路径(相对路径相对于可执行文件目录)
admin_dir = "./admin" # 管理面板文件的目录路径(相对路径相对于可执行文件目录)
[setup] # 可选:如果想预配置 pwndrop,可以添加(首次运行后该部分将从配置文件中删除)
username = "admin" # 管理员帐户的用户名
password = "secretpassword" # 管理员帐户的密码
redirect_url = "https://www.somedomain.com" # 当访问者提供的路径未指向任何共享文件时,将重定向到的 URL(留空则返回 404)
secret_path = "/pwndrop" # 秘密 URL 路径,访问后允许你的浏览器访问管理面板的登录页面(请确保更改默认值)
如果你想在使用任何安装脚本部署之前预配置 pwndrop 实例,请将你的配置文件放在 /usr/local/pwndrop/pwndrop.ini 中,它将在 pwndrop 守护进程首次执行时被解析。
非常感谢 @jaredhaight 通过他的 Faction C2 框架激励我学习 Vue!
也非常感谢所有在预发布阶段提供反馈并支持我意见的人!
pwndrop 由 Kuba Gretzky (@mrgretzky) 制作,并基于 GPL3 许可证发布。