通过FRP实现内网渗透 - 新闻资讯 - 云南小程序开发|云南软件开发|云南网站建设-昆明葵宇信息科技有限公司

159-8711-8523

云南网建设/小程序开发/软件开发

知识

不管是网站,软件还是小程序,都要直接或间接能为您产生价值,我们在追求其视觉表现的同时,更侧重于功能的便捷,营销的便利,运营的高效,让网站成为营销工具,让软件能切实提升企业内部管理水平和效率。优秀的程序为后期升级提供便捷的支持!

您当前位置>首页 » 新闻资讯 » 技术分享 >

通过FRP实现内网渗透

发表时间:2020-10-19

发布人:葵宇科技

浏览次数:77

文章目录

  • 1、FRP 的作用
  • 2、准备环境
  • 3、搭建 FRP
    • 3.1、服务端
      • 3.1.1、服务端搭建
      • 3.1.2、服务端文件配置
      • 3.1.3、服务端启动
    • 3.2、客户端
      • 3.1.1、客户端搭建
      • 3.1.2、客户端文件配置
      • 3.1.3、客户端启动
  • 4、知识补充
    • 4.1、'>/dev/null 2>&1' 是什么意思?

1、FRP 的作用

  1. 利用处于内网或防火墙后的机器,对外网环境提供 httphttps 服务。
  2. 对于 httphttps 服务支持基于域名的虚拟主机,支持自定义域名绑定,使多个域名可以共用一个 80 端口。
  3. 利用处于内网或防火墙后的机器,对外网环境提供 tcpudp 服务,例如在家里通过 ssh 访问处于公司内网环境内的主机。

2、准备环境

(1)实现功能

  1. 外网通过ssh访问内网机器
  2. 自定义绑定域名访问内网web服务

(2)配置前准备

  1. 公网服务器1台,这里准备了阿里云的服务器。
  2. 内网服务器1台(我这里演示的是 linux 环境,win10 上面 vmware15 安装的 centos7
  3. 公网服务器绑定域名1个(若需要自定义绑定域名访问内网 web 服务,否则可以不用)
  4. 内网服务器部署一个 web 服务,可以用 tomcat 模拟,这里就不演示了

3、搭建 FRP

? 公网服务器与内网服务器都需要下载 frp 进行安装,这里以 frp_0.34.1_linux_amd64.tar.gz 下载为例。

  • 下载地址:https://github.com/fatedier/frp/releases
  • 开发文档:https://gofrp.org/docs/

3.1、服务端

服务端:这里表示的是阿里云的服务器


3.1.1、服务端搭建

# 1.创建文件夹(看需求)
[topcloud@alihadoop opt]$ sudo mkdir software

# 2.更改文件夹所属用户和组(看需求)
[topcloud@alihadoop opt]$ sudo chown topcloud:topcloud software/

# 3.下载 FRP
[topcloud@alihadoop software]$ wget https://github.91chifun.workers.dev//https://github.com/fatedier
/frp/releases/download/v0.34.1/frp_0.34.1_linux_amd64.tar.gz

# 4.查看是否下载完成
[topcloud@alihadoop software]$ ls
frp_0.34.1_linux_amd64.tar.gz

# 5.解压 frp 文件
[topcloud@alihadoop software]$ tar -zxvf frp_0.34.1_linux_amd64.tar.gz

# 6.移动文件夹
[topcloud@alihadoop software]$ mv frp_0.34.1_linux_amd64 /opt/module/frp

# 7.查看 frp 文件
# frps:服务端所需要的
# frpc:客户端所需要的
[topcloud@alihadoop software]$ ll /opt/module/frp/
total 22608
-rwxrwxr-x 1 topcloud topcloud  9908224 Sep 30 15:38 frpc
-rw-rw-r-- 1 topcloud topcloud     7928 Sep 30 15:44 frpc_full.ini
-rw-rw-r-- 1 topcloud topcloud      126 Sep 30 15:44 frpc.ini
-rwxrwxr-x 1 topcloud topcloud 13205504 Sep 30 15:38 frps
-rw-rw-r-- 1 topcloud topcloud     4928 Sep 30 15:44 frps_full.ini
-rw-rw-r-- 1 topcloud topcloud       26 Sep 30 15:44 frps.ini
-rw-rw-r-- 1 topcloud topcloud    11358 Sep 30 15:44 LICENSE
drwxrwxr-x 2 topcloud topcloud       88 Sep 30 15:44 systemd

# 8.删除客户端的文件(可以不删,主要是为了避免操作时修改错了文件)
[topcloud@alihadoop frp]$ rm -rf frpc*

# 9.查看是否删除了
[topcloud@alihadoop frp]$ ll
total 12920
-rwxrwxr-x 1 topcloud topcloud 13205504 Sep 30 15:38 frps
-rw-rw-r-- 1 topcloud topcloud     4928 Sep 30 15:44 frps_full.ini
-rw-rw-r-- 1 topcloud topcloud       26 Sep 30 15:44 frps.ini
-rw-rw-r-- 1 topcloud topcloud    11358 Sep 30 15:44 LICENSE
drwxrwxr-x 2 topcloud topcloud       88 Sep 30 15:44 systemd

3.1.2、服务端文件配置

[common]
#与客户端绑定的进行通信的端口
bind_port = 7000

#访问客户端web服务自定义的端口号
vhost_http_port = 6081

3.1.3、服务端启动

  • 前台启动方式(推荐后台启动方式)
[root@alihadoop frp]# ./frps -c ./frps.ini
  • 后台启动方式
# 进入 frp 所在的目录,然后使用以下命令
# nohup 和 & 常一起使用,"nohup 命令 &":用于后端启动
[root@alihadoop frp]# nohup ./frps -c ./frps.ini >/dev/null 2>&1 &
[1] 1363
  • 服务端启动查看
[root@alihadoop frp]# netstat -ntlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:5355            0.0.0.0:*               LISTEN      1029/systemd-resolv 
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1067/sshd           
tcp6       0      0 :::5355                 :::*                    LISTEN      1029/systemd-resolv 
tcp6       0      0 :::7000                 :::*                    LISTEN      1363/./frps         
tcp6       0      0 :::6081                 :::*                    LISTEN      1363/./frps

3.2、客户端

客户端:这里表示的是内网服务器


3.1.1、客户端搭建

# 前面步骤与服务端搭建一致

# 8.删除服务端的文件(可以不删,主要是为了避免操作时修改错了文件)
[topcloud@hadoop103 frp]$ rm -rf frps*

# 9.查看是否删除了
[topcloud@hadoop103 frp]$ ll
total 12920
-rwxrwxr-x 1 topcloud topcloud 13205504 Sep 30 15:38 frpc
-rw-rw-r-- 1 topcloud topcloud     4928 Sep 30 15:44 frpc_full.ini
-rw-rw-r-- 1 topcloud topcloud       26 Sep 30 15:44 frpc.ini
-rw-rw-r-- 1 topcloud topcloud    11358 Sep 30 15:44 LICENSE
drwxrwxr-x 2 topcloud topcloud       88 Sep 30 15:44 systemd

3.1.2、客户端文件配置

[common]
#公网服务器ip
server_addr = 47.114.110.230
#与服务端bind_port一致
server_port = 7000
 
[ssh]
#连接协议
type = tcp
#内网服务器ip
local_ip = 192.168.10.102
#ssh默认端口号,代理服务器的端口
local_port = 22
#自定义的访问内部ssh端口号
remote_port = 6102
 
#公网访问内部web服务器以http方式
[web]
#访问协议
type = http
#内网web服务的端口号
local_port = 8081
#所绑定的公网服务器域名,一级、二级域名都可以
custom_domains = lin.topcloud.com

若想连接到多个局域网内的客户端,可以配置 [sshXXX],如下所示

#公网通过ssh访问内部服务器,
[ssh103]
#连接协议
type = tcp
#内网服务器ip
local_ip = 192.168.10.103
#ssh默认端口号,代理服务器的端口
local_port = 22
#自定义的访问内部ssh端口号
remote_port = 6103

3.1.3、客户端启动

  • 前台启动方式(推荐后台启动方式)
[topcloud@hadoop103 frp]# ./frpc -c ./frps.ini
  • 后台启动方式
# 进入 frp 所在的目录,然后使用以下命令
# nohup 和 & 常一起使用,用于后端启动
[topcloud@hadoop103 frp]# nohup ./frpc -c ./frpc.ini >/dev/null 2>&1 &
[1] 1688
  • 启动查看
[topcloud@hadoop103 frp]$ ps -ef | grep 1688
topcloud   1688   1600  2 15:44 pts/0    00:00:00 ./frpc -c ./frpc.ini
topcloud   1699   1600  0 15:44 pts/0    00:00:00 grep --color=auto 1688

4、知识补充

4.1、’>/dev/null 2>&1’ 是什么意思?

  • >:用于重定向
  • /dev/null:是一个黑洞,任何发送的数据都将被丢弃
  • '2':是标准错误的文件描述符
  • >:用于重定向
  • &:是文件描述符的符号(没有它,以下 1 将被视为文件名)
  • 1:是标准输出的文件描述符

0 15:44 pts/0 00:00:00 grep --color=auto 1688


# 4、知识补充

## 4.1、'>/dev/null 2>&1' 是什么意思?

* `>`:用于重定向
* `/dev/null`:是一个黑洞,任何发送的数据都将被丢弃
* `'2'`:是标准错误的文件描述符
* `>`:用于重定向
* `&`:是文件描述符的符号(没有它,以下 1 将被视为文件名)
* `1`:是标准输出的文件描述符

因此 `>/dev/null 2>&1` 将程序的输出重定向到 `/dev/null`。包括 ==Standard Error== 和 ==Standard Out==。

相关案例查看更多