frp内网穿透

frp内网穿透

前置

学习中经常用到kali,但是公网服务器并没有安装kali镜像,本地只安装了kali虚拟机,而msf渗透时常常需要反弹shell到kali中,但内网中的kali并没有公网IP地址,因而可以通过frp工具将内网中的服务映射到公网IP地址的端口中

frp 是一个高性能的反向代理应用,采用C/S架构(客户端/服务端),通过简单的配置能够将客户端中的tcp, udp, http, https 等协议隐射到服务端相应端口上,通过访问服务端对应的端口即能够访问到客户端对应的服务。
frp实现效果大致如下,通过访问公网服务器的某个端口即可访问到内网服务器中的某个服务
image-20240405214341242

为了完成frp内外穿透,你需要准备好如下资源/工具

  • 公网服务器,这里我用的是CentOS7.6
  • frp服务端/客户端工具,github下载
  • 内网服务器或本机,这里我用的是kali2020虚拟机

开始配置

服务端

将frp文件上传到公网服务器 我这里是使用的Winscp

我这里上传的是gz压缩文件

直接解压

tar -zxvf frp_0.44.0_linux_amd64.tar.gz

image-20240405223636139

ok

然后需要修改配置文件

# 进入目录
cd frp_0.33.0_linux_amd64/

# 打开配置文件
vi frps.ini

打开后是这样的:

image-20240405225051611

将文件内容修改为如下:

[common]
# 一、服务器的基本配置部分
# 7000 是FRP服务端口,可以改
bind_port = 7000
# dashboard_user和dashboard_pwd是FRP网页版管理员用户名密码,可以改。
dashboard_user = admin
dashboard_pwd = frpadmin@2022
# 7500 是网页版管理端口:可以通过 http://服务器ip:7500登陆
dashboard_port = 7500
# 服务器和客户机之间的心跳连接
heartbeat_timeout = 30
#token设置,需要和客户端一致,客户端与服务端通过token进行认证,建议满足复杂度要求
token=frpToken@admin2022

# 二、添加的映射端口
[common]
# FRP服务器的公网ip
server_addr = 【这里写自己的公网服务器地址】
#例如:server_addr = 1.1.1.1

# FRP服务器的,服务端口,这个可以改,不过客户端的也要一起改才行。
server_port = 7000


# 三、转发端口:[test01]、[test02] 这些没有任何意义,就是大致描述这个端口作用。
# 每增加一个转发端口,复制下面的两行,然后将[]里面的和vhost_http_port_03改了就行了。
#[test01]
#vhost_http_port = 9001

#[test02]
#vhost_tcp_port = 1315
#转发端口配置,实际测试这里影响不大,主要取决于客户端的配置
vhost_http_port = 9001
vhost_ssh_port = 9002
vhost_tcp_port = 9003

[common]
bind_port = 7000
dashboard_user = admin
dashboard_pwd = frpadmin@2022
dashboard_port = 7500
heartbeat_timeout = 30
token=frpToken@admin2022
[common]
server_addr = 124.223.91.44
server_port = 7000
vhost_http_port = 9001
vhost_ssh_port = 9002
vhost_tcp_port = 9003

esc 然后:wq 保存并退出

image-20240405232528251

配置好后运行文件

./frps -c ./frps.ini

image-20240405232610629

7500端口就是frp的网页管理端口,可以访问(账号密码在配置文件中)

客户端

同样的方式将frp工具上传到kali虚拟机中,这里要确保kali是能够正常联网的,同样用tar命令解压,配置frpc.ini文件如下:

更服务端的操作一样

# 客户端配置
[common]
server_addr = 【这里写自己的公网服务器地址】
#例如:server_addr = 1.1.1.1
server_port = 7000 #frp服务端口要和服务端设定的一致
token = frpToken@admin2022 #token要和服务端一致



# 配置http服务,可用于小程序开发、远程调试等,如果没有可以不写下面的
[web]
type = http
local_ip = 0.0.0.0
local_port = 80 #本地需要映射的端口
custom_domains = 【这里写自己的公网服务器地址】
remote_port = 9001 #映射到服务端的端口

#kali ssh
[ssh]
type = tcp
local_ip = 0.0.0.0
local_port = 22
custom_domains = 【这里写自己的公网服务器地址】
remote_port = 9002

#tcp msfconsole
[tcp]
type = tcp
local_ip = 0.0.0.0
local_port = 9003
custom_domains = 【这里写自己的公网服务器地址】
remote_port = 9003

image-20240405235232663

这样应该就可以了