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

相关推荐
Json_181790144802 分钟前
电商拍立淘按图搜索API接口系列,文档说明参考
前端·数据库
煎饼小狗13 分钟前
Redis五大基本类型——Zset有序集合命令详解(命令用法详解+思维导图详解)
数据库·redis·缓存
永乐春秋30 分钟前
WEB-通用漏洞&SQL注入&CTF&二次&堆叠&DNS带外
数据库·sql
打鱼又晒网1 小时前
【MySQL】数据库精细化讲解:内置函数知识穿透与深度学习解析
数据库·mysql
大白要努力!1 小时前
android 使用SQLiteOpenHelper 如何优化数据库的性能
android·数据库·oracle
tatasix2 小时前
MySQL UPDATE语句执行链路解析
数据库·mysql
南城花随雪。2 小时前
硬盘(HDD)与固态硬盘(SSD)详细解读
数据库
儿时可乖了2 小时前
使用 Java 操作 SQLite 数据库
java·数据库·sqlite
懒是一种态度2 小时前
Golang 调用 mongodb 的函数
数据库·mongodb·golang
天海华兮2 小时前
mysql 去重 补全 取出重复 变量 函数 和存储过程
数据库·mysql