目录
0、前言
FRP是比较老牌的也是比较流行的反向代理、内网穿透软件。FRP用途和使用场景可以看官方文档,或下面的场景介绍。
官网介绍:frp is a fast reverse proxy that allows you to expose a local server located behind a NAT or firewall to the Internet. It currently supports TCP and UDP, as well as HTTP and HTTPS protocols, enabling requests to be forwarded to internal services via domain name.
frp是一种快速反向代理,允许您将位于NAT或防火墙后面的本地服务器暴露给Internet。它目前支持TCP和UDP,以及HTTP和HTTPS协议,使请求能够通过域名转发到内部服务。
1、场景介绍
今天借着proxifier和一个复杂一点的场景测试一下frp的基础功能和多级代理功能。其实我在某视频网站发过一次视频,由于水平有限没多少播放量,而且时间长了自己都忘了某些细节,所以今天用文字记录一下。
下图是测试场景,比如渗透测试过程中黑客利用了S1对外映射的某Web服务的漏洞,通过该漏洞上传了webshell,控制了S1。这时候就想通过其他方式连接该服务器,比如3389端口,或者把S1当成跳板来进行横向渗透S2。这种情况下就可以使用frp最基础的功内网穿透。
这个功能可以想象成把内网中的端口通过隧道主动送到互联网拥有公网IP地址的服务器上,这时候连接这个VPS的某端口实际就是连接S1的某端口。
socks代理的功能可以认为S1把自己的某个端口运行代理然后主动送到VPS上,把相关软件的代理设置为VPS的相应端口就可以进行内网的扫描和横向跳转。
再来点复杂的需求,根据上图,比如客户内部有一台S2, S2有双网卡,另一个网卡连接更为私密的网络。假如防火墙上对S2流量进行了双向阻断,也就是说S2没有对外映射也不能出网。我们想攻击S2并把S2当成跳板再去攻击S3,所以不能反向代理S2的端口,就需要用到多级代理,就是先通过一级代理S1连接到S2,再通过二级代理S2连接到S3。下面逐步实现这个需求。
2、环境准备
2.1 下载frp
目前版本0.58.1,现在版本不再支持win7,而且配置文件由原来的ini变成了toml。
linux 64位:
https://github.com/fatedier/frp/releases/download/v0.58.1/frp_0.58.1_linux_amd64.tar.gz
win 64位:
https://github.com/fatedier/frp/releases/download/v0.58.1/frp_0.58