Frp某场景下实现多层代理
注:由于传播、利用本文章所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,本文作者不为此承担任何责任,一旦造成后果请自行承担!
目录
frp简介
frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。
部分配置参数说明
frps:
[common]
bind_addr = 0.0.0.0 # 服务端监听地址
bind_port = 7000 # 服务端监听端口,默认7000
auth_token = xxxxxxxx # 验证凭据
# 启用dashboard 服务,可以在浏览器上访问vps的端口
dashboard_port = 7000
dashboard_user = admin
dashboard_pwd = admin123
frpc:
[common]
server_addr = x.x.x.x # 连接的服务器IP地址
server_port = 7000 # 连接的服务器端口
[http_proxy]
type = tcp # 连接类型为tcp
local_ip = x.x.x.x # 本地ip
local_port = 9999 # 本地监听端口
remote_port = 9999 # 开启frps服务器的端口,攻击者连接此端口可实现流量转发
use_encryption = true #启⽤加密,默认不加密
plugin = socks5 # 使⽤插件socks5代理
实验场景
实验场景
第一层网络可出网,对外开放端口无限制
第二层网络双网卡,不可出网
第三层网络单网卡,不可出网
实验环境
攻击机:
VPS:192.168.1.130
攻击机:192.168.1.129
第一层受害机:
web1:192.168.1.128、192.168.52.10
第二层网络受害机:
内网区域1:192.168.52.30、192.168.93.20
第三层网络受害机:
内网区域2:192.168.93.40
实验步骤
第一层隧道
假设我们拿到 web1主机权限(ssh、rdp、web等),同时发现该主机可访问外网,且没有端口限制(相当于不是映射单一端口出去),除此之外,其存在第二网卡,网段为192.168.52.0/24,攻击机是无法直接访问到这个网段的。这里对web1机器和vps上传frp工具,配置如下
VPS配置frps做服务端监听
frps.ini配置如下:
[common]
bind_addr = 192.168.1.130 #设置监听地址
bind_port = 7000 #设置客户端连接端口
web机器配置frpc做客户端
frpc.ini 配置如下
[common]
server_addr = 192.168.1.130 #frpsIP
server_port = 7000 #frps端口
[http_proxy]
type = tcp #协议
local_ip = 192.168.52.10 #本地IP
remote_port = 9999 #建立连接后要服务器开启的监听端口
plugin = socks5 #指明socks5
local_port = 9999 #指定本地端口,不指定为全端口代理
启动frp服务端和客户端:
VPS:
web1:
至此,frp服务端和客户端连接建立。测试下隧道是否有用,下面操作在攻击机上进行:
配置proxifier:
测试下和192.168.52.0/24网段的连通性,第一层隧道搭建完成
第二层隧道
假设我们通过第一层隧道访问到第二层网络主机,并且拿下第二层网络主机192.168.52.30的权限,之后发现其还有第二个网卡,网段为192.168.93.0/24。但现在我们的隧道只能到达192.168.52.0/24,故搭建第二层隧道时,第一层网络主机web1既是客户端也是服务端,第二层网络区域1主机192.168.52.30为客户端,服务端为web1 192.168.52.10
保持原有配置,新增如下配置:
web1配置frps做服务端监听
frps.ini配置如下:
[common]
bind_addr = 192.168.52.10 #设置监听地址
bind_port = 7000 #设置客户端连接端口
第二层区域主机配置frpc做客户端
frpc.ini 配置如下
[common]
server_addr = 192.168.52.10 #frpsIP
server_port = 7000 #frps端口
[http_proxy]
type = tcp #协议
local_ip = 192.168.93.20 #本地IP
remote_port = 8888 #建立连接后要服务器开启的监听端口
plugin = socks5 #指明socks5
local_port = 8888 #指定本地端口,不指定为全端口代理
启动frps服务端和frpc客户端
web1(服务端):
第二层区域主机(客户端):
至此,第二层隧道frp服务端和客户端连接建立。测试下隧道是否有用,下面进行代理配置:
配置proxifier:
此时有两条proxy server,要想达到多层代理效果,故这里需要开启代理链
至此,多层代理隧道搭建完成,测试隧道是否生效
至此,在此场景下多层隧道的搭建成功,再有多层网络配置原理也差不多。
更多推荐
所有评论(0)