某60内网渗透之frp实战指南2

内网渗透

文章目录


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(代理服务器)

相关推荐
丁总学Java5 分钟前
如何使用 maxwell 同步到 redis?
数据库·redis·缓存
爱吃南瓜的北瓜13 分钟前
Redis的Key的过期策略是怎样实现的?
数据库·redis·bootstrap
一心只为学27 分钟前
Oracle密码过期问题,设置永不过期
数据库·oracle
小光学长36 分钟前
基于vue框架的宠物销售管理系统3m9h3(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。
数据库
小菜yh1 小时前
关于Redis
java·数据库·spring boot·redis·spring·缓存
Microsoft Word1 小时前
数据库系统原理(第一章 数据库概述)
数据库·oracle
华为云开源1 小时前
openGemini 社区人才培养计划:助力成长,培养新一代云原生数据库人才
数据库·云原生·开源
kejijianwen5 小时前
JdbcTemplate常用方法一览AG网页参数绑定与数据寻址实操
服务器·数据库·oracle
编程零零七5 小时前
Python数据分析工具(三):pymssql的用法
开发语言·前端·数据库·python·oracle·数据分析·pymssql
高兴就好(石8 小时前
DB-GPT部署和试用
数据库·gpt