内网渗透
文章目录
frp实战指南2
实验目的
让学员通过该系统的练习主要掌握:
frp工具的常见用法
实验环境
操作机:Ubuntu(PC1),Ubuntu(PC2), Ubuntu(PC3)
实验工具
frp
实验原理
frp是一款跨平台的代理工具,分为客户端和服务端两个部分。其将需要暴露的内网主机配置成客户端,通过和服务端的连接提供端口的映射和流量的转发。在这次的实验中,我们就实战frp的服务端和客户端的配置过程,并尝试使用frp建立通道,转发连接数据。
在实验机上我们准备了frp的两种版本,服务端和客户端:
frpc :c即client,是frp的客户端。客户端是我们希望借助服务端暴露给外接访问的主机。
frps:s即server,是frp的服务端。服务端是中间的跳板机,客户端的服务借由服务端转发到外界。
frp通过读取配置文件来管理端口映射的参数和过程。客户端,我们需要明确的参数有以下几个方面:
common字段:用于定义客户端需要连接到的服务端的IP和端口。
具体服务字段:用来规定希望映射出去的本地端口(local_port)和映射到外网的相应外部端口(remote_port)。
在服务端,我们需要明确的参数有以下几个方面:bind_port字段:用来规定提供转发服务的端口。
实验内容
1、确认三台PC的IP并记录;
2、配置frp服务端,开启12345端口,监听客户端的连接请求;
3、配置frp客户端,将pc1的ssh服务通过frp服务端以socks5代理方式映射到8080端口;
4、frp服务端利用python开启一个web服务器;
5、PC3通过代理访问web站点;
frp实战指南2 实验步骤
(1)确定基本信息。
我们先在三台主机中记录清楚各台主机的IP,以确定后续使用的参数。
首先先在操作机PC3的控制台中输入ifconfig,记录下PC3的ip地址:
同样的方法,我们分别在PC1,PC2的控制台中输入ifconfig,记录下PC1和PC2的ip地址:
PC1:
PC2:
接下来请牢记,我们要使用PC3(192.168.246.20),借助PC1(192.168.246.18)来访问PC2(192.168.246.17)。
(2)查看frp工具的基本用法
在实验机上我们准备了frp的两种版本,服务端和客户端:
frpc :c即client,是frp的客户端。客户端是我们希望借助服务端暴露给外接访问的主机。
frps:s即server,是frp的服务端。服务端是中间的跳板机,客户端的服务借由服务端转发到外界。
frp通过读取配置文件来管理端口映射的参数和过程。
在客户端,我们需要明确的参数有以下几个方面:
common字段:用于定义客户端需要连接到的服务端的IP和端口。
具体服务字段:用来规定希望映射出去的本地端口(local_port)和映射到外网的相应外部端口(remote_port)。
在服务端,我们需要明确的参数有以下几个方面:
bind_port字段:用来规定提供转发服务的端口。
在这次的实验中,我们以PC3为攻击者,以PC2为frp服务端,PC1为frp的客户端。因此,我们的实验目的就是利用frp建立一个这样的通道:
PC3(操作机) ---PC2:remote_port--->PC2(frp服务端)---PC2:common_port--->PC1(frp客户端)
下面我们就来实战配置frp的服务端和客户端。
(3)服务端frp的配置
我们将PC2作为服务端。首先,我们编辑服务端的配置文件/etc/frp/frps.ini,来指定服务端所需要的参数。
我们输入:
sudo vim /etc/frp/frps.ini
按下i即可打开插入模式,然后我们输入下列文本:
bash
[common]
bind_port=12345
即,在服务端我们开启12345端口,监听客户端的连接请求。
下面,我们要开启frps,即frp的服务端。使用-c参数指定配置文件的位置:
/etc/frp/frps -c /etc/frp/frps.ini
(4)客户端frp的配置
我们将PC1作为客户端。在这一边,我们需要制定利用服务端暴露出去的本地端口,映射到的远程端口,以及服务端的IP和端口。编辑客户端的配置文件/etc/frp/frpc.ini,输入:
vim /etc/frp/frpc.ini
按下i打开插入模式,然后我们输入下列文本:
bash
[common]
service_addr=192.268.246.17
server_port=12345
[ssh]
type=tcp
remote_port=8080
plugin = socks5
上面的配置文件可以将PC1的ssh服务通过服务端frp映射到8080端口。我们来详细解读一下:
第一段common字段指定了服务端的IP和端口,而下面的ssh字段则指定了我们希望映射出去的本地服务。
type规定了映射服务的类型(tcp)
remote_port规定了映射出去的服务暴露外部访问的端口,对于上面的配置文件来说,即为23456端口
plugin规定了代理方式
然后,我们启动客户端frp:/etc/frp/frpc -c /etc/frp/frpc.ini
(5)使用frp服务
通过客户端与服务端的配合,作为操作机的PC3即可以直接透过PC1的转发访问到PC2的web服务。根据上面的配置过程的讲解,我们不难得出,此时,我们需要连接PC1的IP,配合上PC2配置文件中写入的remote_port(8080端口),即可访问到PC2的web服务(22端口)。
首先为了测试,我们在PC2上输入:python -m SimpleHTTPServer 8081
利用python起一个web服务器即可
然后我们在PC3上先输入:curl 192.168.246.17:8081
再输入:curl --socks5 192.168.246.17:8080 192.168.246.18:8081
curl命令可以发出网络请求,通过--socks5 选项可以连接到对应的socks5服务器,通过代理访问对应的web站点
发现第一次请求来自于192.168.246.20自身,而第二次请求来自于192.168.246.18(代理服务器)