1、扫描工具的测试,记录请求记录。
2、托管远程下载服务,下载测试工具、shellcode等数据。
3、托管远程上传服务器,回传测试数据。
1、能够添加授权功能,防止未授权访问导致数据泄漏。
2、能够支持Curl、Wget等常见工具的上传和下载。
3、默认不开启目录浏览功能,防止绕过授权后,目录下所有数据泄漏。
4、打包运行、没有依赖、稳定运行,不容易崩溃。
5、支持中断继续上传、中断继续下载等功能。
6、能够兼容curl、wget程序的上传下载功能。
# Python >= 2.4
python -m SimpleHTTPServer 8000
# Python 3.x
python -m http.server 8000
import os
import time
from flask import Flask, request, send_file
ROOT_PATH = os.path.abspath(os.path.dirname(__file__))
BASE_PATH = None
basic_path = BASE_PATH if BASE_PATH else ROOT_PATH
upload_path = os.path.join(basic_path, 'uploads')
download_path = os.path.join(basic_path, 'download')
AUTH_PARAM = "auth" # 自定义认证参数
AUTH_CUSTOMS = "passpass" # 自定义认证参数值
AUTH_DEFAULT = time.strftime("%Y%m%d%H")
app = Flask(__name__)
def auth_check(request_context):
request_auth_info = str(request_context.args.get(AUTH_PARAM))
print(f"auth_info: {request_auth_info} <-> AUTH_PARAM:{AUTH_PARAM} <-> AUTH_VALUE:{AUTH_CUSTOMS} <-> AUTH_DEFAULT:{AUTH_DEFAULT}")
return request_auth_info == AUTH_DEFAULT if AUTH_CUSTOMS is None else request_auth_info == AUTH_CUSTOMS
@app.route("/download/<filename>", methods=["GET"])
def download_file(filename):
try:
# 获取查询参数
if not auth_check(request):
return "Unauthorized", 401
# Download ing
if not os.path.exists(download_path):
os.makedirs(download_path)
file_path = os.path.join(download_path, filename)
return send_file(file_path, as_attachment=True)
except Exception as e:
# return str(e)
return "error"
@app.route('/upload', methods=["GET","POST"])
def upload_file():
try:
if not auth_check(request):
return "Unauthorized", 401
# Download ing
if not os.path.exists(upload_path):
os.makedirs(upload_path)
if 'file' not in request.files:
return "No file part"
file = request.files['file']
if file.filename == '':
return "No selected file"
if file:
filename = os.path.join(upload_path, file.filename)
file.save(f"{filename}.{time.time()}")
return "File Uploaded success!"
else:
return "File Uploaded failure!"
except Exception as e:
# return str(e)
return "error"
if __name__ == "__main__":
app.run(host="0.0.0.0", port=8888)
AUTH_PARAM = "auth"
AUTH_CUSTOMS = "passpass"
# curl 下载
curl http://127.0.0.1/download/xxx?auth=passpass -o xxx
# 上传
curl -X POST -F '[email protected]' http://example.com/upload?auth=passpass
curl -F "[email protected]" http://example.com/upload?auth=passpass
UpDownFile是@jan-bar使用Go编写的简易上传下载文件服务器,经过这几天不断地Issue,目前已经很适合渗透测试小伙们的体质。
1、完美支持Curl、wget等常见工具的断点上传和断点下载。
2、-auth参数 支持http base 认证
3、-deny参数 支持关闭目录浏览功能
下载安装
# 项目地址
jan-bar/UpDownFile: 简易上传下载文件服务器
https://github.com/jan-bar/UpDownFile
# 安装
go install github.com/jan-bar/UpDownFile@latest
# 编译 需要Go 1.22
build.bat
常用命令
# 启动服务
upDownFile.exe -s :8080
# 启动认证服务 且关闭目录浏览 (建议)
upDownFile.exe -s :8080 -auth "user:pass" -deny
# 下载文件
# upDownFile cli 下载
upDownFile cli -c -auth "user:pass" -o example.txt "http://xxx/example.txt"
# curl等程序下载
wget --user "user" --password "pass" --content-disposition "http://xxxx/example.txt"
curl -u "user:pass" -C - -OJ "http://xxxx/example.txt"
# 上传文件
# upDownFile.exe cli 上传
upDownFile.exe cli -c -auth "user:pass" -d @example.txt "http://xxxx/example.txt"
# curl等程序上传
curl -u "user:pass" -C - -T example.txt "https://xxxx/example.txt"
服务端启动时,会输出常用的命令和参数值,更多使用方式可以查看ReadMe文件。
在学习本文技术或工具使用前,请您务必审慎阅读、充分理解各条款内容。
1、本团队分享的任何类型技术、工具文章等文章仅面向合法授权的企业安全建设行为与个人学习行为,严禁任何组织或个人使用本团队技术或工具进行非法活动。
2、在使用本文相关工具及技术进行测试时,您应确保该行为符合当地的法律法规,并且已经取得了足够的授权。如您仅需要测试技术或工具的可行性,建议请自行搭建靶机环境,请勿对非授权目标进行扫描。
3、如您在使用本工具的过程中存在任何非法行为,您需自行承担相应后果,我们将不承担任何法律及连带责任。
4、本团队目前未发起任何对外公开培训项目和其他对外收费项目,严禁任何组织或个人使用本团队名义进行非法盈利。
5、本团队所有分享工具及技术文章,严禁不经过授权的公开分享。
如果发现上述禁止行为,我们将保留追究您法律责任的权利,并由您自身承担由禁止行为造成的任何后果。
END
如您有任何投稿、问题、需求、建议
请NOVASEC公众号后台留言!
或添加 NOVASEC 联系人
感谢您对我们的支持、点赞和关注
加入我们与萌新一起成长吧!
本团队任何技术及文件仅用于学习分享,请勿用于任何违法活动,感谢大家的支持!!