渗透测试之利用socks工具实现内网穿透-frp的使用
1、frp介绍
1、frp简介
frp是一款高性能的反向代理应用,专注于内网穿透。它支持多种协议,包括TCP、UDP、HTTP、HTTPS等,并且具备P2P通信功能。使用frp,您可以安全、便捷地将内网服务暴露到公网,通过拥有公网IP的节点进行中转。
2.frp工作原理
frp主要由两个组件组成:客户端(frpc)和服务端(frps)。通常情况下,服务端部署在具有公网IP地址的机器上,而客户端部署在需要穿透的内网服务所在的机器上。由于内网服务缺乏公网IP地址,因此无法直接被非局域网内的用户户访问。用户通过访问服务端的frps,frp负责根据请求的端口或其他信息将请求路由到相应的内网网机器,从而实现通信
3.frp代理
在frp中,一个代理对应一个需要公开访问的内网服务。一个客户端可以同时配置多个代理,以满足不同的需求。
4.frp代理类型
frp支持多种代理类型,以适应不同的使用场景。以下是一些常见见的代理类型:
·TCP:提供纯粹的TCP端口映射,使服务端能够根据不同的端口将请求路由到不同的内网服务。
·UDP:提供纯粹的UDP端口映射,与TCP代理类似,但用于UIDP流量。
·HTTP:专为HTTP应用设计,支持修改Host Header和增加鉴权等额外功能
·HTTPS:类似于HTTP代理,但专门用于处理HTTPS流量。
·STCP:提供安全的TCP内网代理,要求在被访问者和访问者的机器上都部署frpc,不需要在服务端暴露端口。
·SUDP:提供安全的UDP内网代理,与STCP类似,需要在被访问者和访问者的机器上都部署
·frpc,不需要在服务端暴露端口。
·XTCP:点对点内网穿透代理,与STCP类似,但流量不需要经过服务器中转。
·TCPMUX:支持服务端TCP端口的多路复用,允许通过同一端D口访问不同的内网服务。
每种代理类型适用于不同的使用情境,您可以根据需求选择合适的代理类型来配置frp。
(配置文件不同架构不同系统是不影响的,但是程序要根据不同架构不同系统选择的)
测试场景
Frp建立socks一级代理
测试target1
1、Vps启动frps
a、查看frps配置文件
cat frps.toml
b、启动frps
./frps -c frps.toml
ps:-c 指定配置文件
2、target1启动frpc
查看frpc配置文件
cat frpc_1.toml
severaddr:服务器地址
serverport:指定了服务器监听的端口
remoteport:通过代理连接到远程服务时所使用的端口
type:类型
proxies:代理规则
proxies.plugin
:这部分是插件配置,用于扩展代理的功能。
serverPort
是 frpc 和 frps 建立 “联系” 的入口,负责初始化代理关系,不直接处理用户的业务流量转发;实际流量转发由remotePort
接入后,通过 frpc 与 frps 之间的专用数据通道完成。
ps:蚁剑查看文件时会把[[proxies]]当作内容执行不用在意,这里是启用了插件的意思(.plugin),是接受代理转发服务器的1080的数据
3、frpc客户端连接frps(执行前记得给x权限)
./frpc -c frpc_1.toml
连接成功
此时vps已经成功配置好了frp的一级代理,这个时候还要再联动一下proxychains才能访问目标二
4、更改proxychains的配置
因为我们用的socks5且设置了转发端口为1080所为我们就注释掉socks4的内容在下面添加
socks5 127.0.0.1 1080
5、用proxychains访问目标内网22网段
proxychains curl 192.168.22.22
frp建立多级代理
1、vps启动frps
同上这里就不过多演示了
2、target1启动frpc
a、查看frpc配置文件
cat frpc_11.toml
这里就是多了个把内网目标1的1091端口映射到vps的1081端口,这样访问vps的1081端口就能访问目标三这个要注意,不清楚这个的话就容易弄混
b、启动frpc客户端连接到vps上启动的frps服务端
./frpc -c frpc_11.toml
vps收到请求
c、然后再上传frps程序和配置文件到target1,chmod给程序执行权限然后启动frps服务
./frps -c frps_1/toml
d、检查服务是否启动成功
# 查看frps进程
ps -elf | grep frps# 查看frps服务监听端口
netstat -anlp | grep 7000
e、再上传frpc到target2(运行前也要赋予执行权限)
查看frpc配置文件
cat frpc_2.toml
chmod +x frpc
./frpc -c frpc_2.toml
f、检查服务连接有没有问题
# 在Target2主机查看frpc进程
ps -elf | grep frpc# 在Target1主机查看是否在1091端口启动socks代理服务
netstat -anlp | grep 1091
完整流量走向解析总结(以 VPS 访问目标三为例)
1. 初始连接建立(前置条件)
- 目标二(frpc)启动时,主动通过 目标一的 7000 端口(frps 的
serverPort
)与目标一(frps)建立控制连接,并注册代理规则(告知 frps:“我负责处理 1081 端口的流量”)。
2. VPS 访问目标三的完整路径
-
第一步:VPS 发起访问请求
VPS 根据需求选择选择端口: -
端口转发
,VPS的 1081 端口映射到目标一的1091(remotePort=1081
,对应端口转发规则)。 -
第二步:目标一(frps)处理流量
目标一的 frps 监听1081 端口,收到 VPS 流量后,根据注册的代理规则,通过已建立的控制连接(基于 7000 端口),将流量转发给目标二的 frpc。 -
第三步:目标二(frpc)处理并转发
-
流量来自 1081 端口(端口转发):目标1的 frpc 将流量转发到本地 1091 端口(
localPort=1091
),再由该端口服务转发到目标三。 -
第四步:响应回流
目标三的响应按上述路径反向返回给 VPS(目标三→目标二→目标一→VPS)。
3、各端口作用汇总
端口 | 所在机器 | 作用 |
---|---|---|
7000 | 目标一、二 | frpc 与 frps 建立控制连接的端口,用于注册代理规则、维持通信,不直接转发业务流量 |
1080 | 目标一(frps) | 对应 socks5 代理的remotePort ,接收 VPS 的 socks5 请求流量,由 frps 转发给目标二 |
1091 | 目标一(frps) | 将vps的1081端口映射到1091端口,frpc的配置规则 |
1091 | 目标二(frpc) | 接收目标一转发的 1091 端口流量,再转发到目标三 |
(开始是为了建立的是一个正向代理,先通过这个去访问测试target2,然后发现还有target3,就与target2建立webshell然后把配置改为图二的,建立反向代理映射到1091端口,这样就相当于只有vps与target2通信,然后再在target2再启动一个frpc就可以与target3通信了,如果target1的配置不改为图二则无法在target2上启动frpc与target3通信)
最后再信息收集利用target3,如果还发现其他网段存活主机就以此类推。
第一个配置文件是为了访问到22网段,第二个配置文件添加的作用是端口转发,vps的1081映射到target1的1091端口。
更多推荐
所有评论(0)