
Upload Bypass 是一个简单的工具,旨在帮助渗透测试人员和漏洞猎人测试文件上传机制。它利用多种赏金漏洞技术来简化识别和利用漏洞的过程,确保对 Web 应用程序进行全面评估。

此工具在 OSCP 考试中被限制使用!
适用于真实世界的渗透测试。此模式将上传无害文件,不会尝试利用目标。
新增 - 如果提供了上传文件的目标文件夹,程序将确定上传的示例文件是否被渲染。 例如,如果你选择了 PHP,程序将尝试确定 echo 命令是否被执行并成功渲染,如果是,它将建议进入交互式 shell。
适用于你想利用目标并上传交互式 Web shell 的情况(如果提供了上传目录),它将使用随机 UUID 上传文件,使模糊测试更难猜测。
适用于反恶意软件存在性测试。向系统上传 Eicar(反恶意软件测试文件),如果用户指定了上传文件的位置,程序将检查文件是否成功上传并存在于系统中,以确定系统是否存在反恶意软件。
查看 lib 目录中的 config.py,你可以添加新的扩展名、MIME 类型、Magic Bytes,配置 HTTP/HTTPS 协议的使用等。
要添加新模块,只需在 modules.py 中添加一个具有所需功能的函数,然后将该函数名称添加到 config.py 中的 "active_modules" 列表中。
要添加新的文件扩展名,请将 sample.{ext} 文件添加到 assets/sample_files 目录,然后将扩展名及其 MIME 类型/Magic Bytes 添加到 config.py。
git clone https://github.com/sAjibuu/Upload_Bypass.git
pip install -r requirements.txt
sudo docker pull sajibuu/upload_bypass
sudo docker build -t sajibuu/upload_bypass .
sudo docker run -v $(pwd)/request:/Upload_Bypass/{your_request_file} -it sajibuu/upload_bypass -r request -s 'file was uploaded successfully' -E php -e
确保在所有接口上监听 8080 端口!
sudo docker run -v $(pwd)/request:/Upload_Bypass/{your_request_file} -it sajibuu/upload_bypass -r request -s 'file was uploaded successfully' -E php -e -p http://{docker_interface_IP}:8080
该工具在以下情况下无法正常工作:
请注意,使用 Upload Bypass 以及由此产生的任何行为均由您自行承担风险。该工具仅用于教育和测试目的。Upload Bypass 的开发者不对因使用该工具而导致的任何滥用、损坏或非法活动负责。
该程序仅适用于由代理工具(如 Burp Suite 和 ZAP OWASP)生成的请求文件。
在从所使用的代理(例如 Burp Suite)保存请求文件之前,请将以下参数值替换为相应的标记:
文件内容: *data*
示例:将图片二进制数据替换为字符串 *data*
文件名: *filename*
示例:将包含扩展名的文件名替换为字符串 *filename*
Content-Type 标头: *mimetype*。
示例:将文件的内容类型(MIME 类型)替换为字符串 *mimetype*
在 JSON 请求中的样子:

在 multipart 数据请求中的样子:

Usage: Upload Bypass [OPTIONS]
Options:
-h, --help 打印帮助(通过 '--help' 查看更多信息)
-U, --usage 打印如何保存请求文件的说明。
-v, --version 打印版本
必需参数:
-r, --request_file <REQUEST_FILE> 提供要处理的请求文件
-E, --extension <EXTENSION> 要检查的禁止扩展名(例如:php)
-A, --allowed <EXTENSION> 允许的扩展名(例如:jpeg) - 可选 - 如果未设置,程序将自动检测扩展名
仅从以下选项中选择一个:
-s, --success <MESSAGE> 提供文件上传成功时的成功消息(例如:File was uploaded successfully)
-f, --failure <MESSAGE> 提供文件上传失败时的失败消息(例如:File is not allowed!)
-S, --status_code <STATUS_CODE> 提供成功上传的状态码(例如:200)
模式设置:
-d, --detect 上传无害示例文件(适用于真实的渗透测试)
-e, --exploit 测试时上传 Web Shell 文件
-a, --anti_malware 测试时上传反恶意软件测试文件(Eicar)
I. 如果与 -E 标志一起使用,程序将使用 Eicar 字符串以及所选的扩展名进行测试
II. 如果未使用 -E 标志,程序将使用 Eicar 字符串和 com 扩展名进行测试
模块设置:
-l, --list 列出所有模块
-i, --include_only <MODULES> 仅包含要测试的模块(例如:extension_shuffle, double_extension)
-x, --exclude <MODULES> 排除模块(例如:svg_xxe, svg_xss)
请求设置:
--base64 使用 Base64 算法编码文件数据
--allow_redirects 跟随重定向
-P, --put 对请求使用 HTTP PUT 方法(默认为 POST)
-Pa, --patch 对请求使用 HTTP Patch 方法(默认为 POST)
-R, --response 将响应打印到屏幕
-c, --continue 继续测试所有文件,即使某些上传已成功
-t, --time_out <NUM> 设置请求超时时间(默认为 8)
-rl, --rate_limit <NUMBER> 设置速率限制,在每次请求之间添加延迟(毫秒)
代理设置:
-p, --proxy <PROXY> 用于请求的代理(例如:http(s)://host:port, socks5(h)://host:port)
-k, --insecure 不验证 SSL 证书
--burp_http 设置 --proxy 为 127.0.0.1:8080 并设置 --insecure 为 true(用于 HTTP 请求)
--burp_https 设置 --proxy 为 127.0.0.1:8080 并设置 --insecure 为 false(用于 HTTPS 请求)
可选设置:
-D, --upload_dir <UPLOAD_DIR> 提供 Web Shell 应上传到的远程路径(例如:/uploads)
-o, --output <OUTPUT_PATH> 输出文件以写入结果 - 默认为当前目录(例如:~/Desktop/results.txt)
--debug <NUM> 调试模式 - 将堆栈跟踪错误打印到屏幕并保存到文件(例如:--debug 1)
I. 级别 1 - 仅保存堆栈跟踪错误(默认)。
II. 级别 2 - 保存堆栈跟踪错误以及用户参数和请求文件。
恢复设置:
--resume <STATE_FILE> 从中恢复部分完成扫描的状态文件
更新设置:
-u, --update 将程序更新到最新版本
python upload_bypass.py -r test -s 'File uploaded successfully' -E php -D /uploads --burp --detect
python upload_bypass.py -r test -s 'File uploaded successfully' -E php -D /uploads --burp --exploit
python upload_bypass.py -r test -s 'File uploaded successfully' -E php -D /uploads --burp --anti_malware
如果你遇到问题,请使用调试模式并将标志值设为 2,然后与我分享(调试文件会保存用户提供的参数、请求文件和堆栈跟踪错误)。如果文件包含敏感信息,你可以使用标志值 1,它仅将堆栈跟踪错误保存到文件中。
如果你想为我的代码做出贡献,请明确说明你添加了什么内容以及原因,并确保在提交合并请求之前进行多次测试。