注:由于传播、利用本文章所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,本文作者不为此承担任何责任,一旦造成后果请自行承担!

目录

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,要想达到多层代理效果,故这里需要开启代理链

 

 

 至此,多层代理隧道搭建完成,测试隧道是否生效

 

 至此,在此场景下多层隧道的搭建成功,再有多层网络配置原理也差不多。

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐