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

相关推荐
独行soc1 小时前
#渗透测试#漏洞挖掘#红蓝攻防#护网#sql注入介绍08-基于时间延迟的SQL注入(Time-Based SQL Injection)
数据库·sql·安全·渗透测试·漏洞挖掘
White_Mountain1 小时前
在Ubuntu中配置mysql,并允许外部访问数据库
数据库·mysql·ubuntu
Code apprenticeship1 小时前
怎么利用Redis实现延时队列?
数据库·redis·缓存
百度智能云技术站1 小时前
广告投放系统成本降低 70%+,基于 Redis 容量型数据库 PegaDB 的方案设计和业务实践
数据库·redis·oracle
装不满的克莱因瓶1 小时前
【Redis经典面试题六】Redis的持久化机制是怎样的?
java·数据库·redis·持久化·aof·rdb
梦想平凡3 小时前
PHP 微信棋牌开发全解析:高级教程
android·数据库·oracle
TianyaOAO3 小时前
mysql的事务控制和数据库的备份和恢复
数据库·mysql
Ewen Seong3 小时前
mysql系列5—Innodb的缓存
数据库·mysql·缓存
码农老起4 小时前
企业如何通过TDSQL实现高效数据库迁移与性能优化
数据库·性能优化
夏木~5 小时前
Oracle 中什么情况下 可以使用 EXISTS 替代 IN 提高查询效率
数据库·oracle