通过FRP实现内网渗透
发表时间:2020-10-19
发布人:葵宇科技
浏览次数:91
文章目录
- 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 的作用
- 利用处于内网或防火墙后的机器,对外网环境提供
http
或https
服务。 - 对于
http
,https
服务支持基于域名的虚拟主机,支持自定义域名绑定,使多个域名可以共用一个 80 端口。 - 利用处于内网或防火墙后的机器,对外网环境提供
tcp
和udp
服务,例如在家里通过ssh
访问处于公司内网环境内的主机。
2、准备环境
(1)实现功能
- 外网通过ssh访问内网机器
- 自定义绑定域名访问内网web服务
(2)配置前准备
- 公网服务器1台,这里准备了阿里云的服务器。
- 内网服务器1台(我这里演示的是
linux
环境,win10
上面vmware15
安装的centos7
) - 公网服务器绑定域名1个(若需要自定义绑定域名访问内网
web
服务,否则可以不用) - 内网服务器部署一个
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==。