admin 发表于 2020-7-8 22:43:58

利用FRP实现内网映射和外网Shell

前面几期的文章中说过,如何利用花生壳等工具搭建内网映射。实现外网访问我们的内网,但是由于花生壳等软件不稳定而且慢最重要的是还有点小贵。由于笔者运维着几天服务器,就想着利用 `frp` 搭建内网穿透。
!(data/attachment/forum/202007/08/144845fattvv1m9zg9579o.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/300 "4168519372.jpg")

### 原理

![原理](https://blog.bbskali.cn/usr/uploads/2020/07/2161152749.jpg)
###前期准备

* VPS 服务器(必须)

- 路由器(可选)
- 树莓派(可选)

### 获取安装服务端- frps

首先到 frp 的 releases 页面获取最新版的对应 VPS 的处理器架构的压缩包
https://github.com/fatedier/frp/releases
如何知道 VPS 的处理器架构?在 VPS 上运行这个命令:

```
arch
```

如果输出 `x86_64` 则需要获取带 `linux_amd64` 的那个压缩包;
如果输出的是其他的,则在文件列表中找 Linux 的对应架构的压缩包
![](https://blog.bbskali.cn/usr/uploads/2020/07/2275816437.png)
以 x86_64 架构举例
如果获取比较慢可以到https://file.kskxs.com/?dir=frp/frp-v0.32.1这里去获取
获取后,上传到服务器并解压,或者利用下面方式解决。

```
cd /root
# 获取
wget --no-check-certificate https://github.com/fatedier/frp/releases/download/v0.33.0/frp_0.33.0_linux_amd64.tar.gz
# 解压
tar -xzvf frp_0.33.0_linux_amd64.tar.gz
# 文件夹名改成 frp,不然目录太长了不方便
mv frp_0.18.0_linux_amd64 frp
cd frp
# 确保 frps 程序具有可执行权限
chmod +x frps
```

测试 `./frps --help`
![](https://blog.bbskali.cn/usr/uploads/2020/07/91954532.png)

### 配置服务器端程序

参考以下配置文件 `frps.ini`

```bash
# 下面这句开头必须要有,表示配置的开始

# frp 服务端端口(必须)
bind_port = 7000
# frp 服务端密码(必须)
token = 12345678
# 认证超时时间,由于时间戳会被用于加密认证,防止报文劫持后被他人利用
# 因此服务端与客户端所在机器的时间差不能超过这个时间(秒)
# 默认为900秒,即15分钟,如果设置成0就不会对报文时间戳进行超时验证
authentication_timeout = 900
# 仪表盘端口,只有设置了才能使用仪表盘(即后台)
dashboard_port = 7500
# 仪表盘访问的用户名密码,如果不设置,则默认都是 admin
dashboard_user = admin
dashboard_pwd = admin
# 如果你想要用 frp 穿透访问内网中的网站(例如路由器设置页面)
# 则必须要设置以下两个监听端口,不设置则不会开启这项功能
vhost_http_port = 10080
vhost_https_port = 10443
# 此设置需要配合客户端设置,仅在穿透到内网中的 http 或 https 时有用(可选)
# 假设此项设置为 example.com,客户端配置 http 时将 subdomain 设置为 test,
# 则你将 test.example.com 解析到服务端后,可以使用此域名来访问客户端对应的 http
subdomain_host = example.com
```

到处,我们服务器端就配置完成了。
###启动 frp

```
./frps -c frps.ini
#后台运行
nohup /root/frp/frps -c /root/frp/frps.ini &
#结束
pkill frps
```

### 客户端 - frpc

获取 Windows 客户端,打开 `frpc.ini` 开始配置
###配置 SSH
这里我们开始映射路由器的 22 端口
配置如下:

```

server_addr = xxx.xxx.xxx.xxx #公网服务器IP
server_port = 7000#(和frps一致)
token = 12345678#(和frps一致)


type = tcp
local_ip = 192.168.123.1 #内网IP
local_port = 22 #内网端口
use_encryption = false
use_compression = false
remote_port = 6000 #自定义转发端口
```

配置完成后,切换到 cmd 命令
执行 `frpc.exe` 命令
![](https://blog.bbskali.cn/usr/uploads/2020/07/1010406163.png)
这时,我们可以利用 xxx.xxx.xxx.xxx:6000(xxx 为公网 IP)登录到我们的 SSH 服务器了。
![](https://blog.bbskali.cn/usr/uploads/2020/07/3310427844.png)

### 配置 http

```

type = http
local_ip = 192.168.123.1
local_port = 80
remote_port = 10080
custom_domains = xxx.xxx.xxx.xxx
```

如上,我们可以利用 `公网IP:10080` 访问路由器的登录界面
![](https://blog.bbskali.cn/usr/uploads/2020/07/3324127207.png)
需要注意的是,凡是上述的端口都需要在防火墙中开启。

### 配置路由器

上述的方法,需要我们的 pc(即客户端一直在线),但是现实中有点不允许,因为你的电脑不可能长时间开着,所以我们可以配置我们的路由器。

#### 老毛子固件配置方案

登录路由器,在 `frp` 选项中开启并配置参数即可。
![](https://blog.bbskali.cn/usr/uploads/2020/07/1039209211.png)
并在 `外部网络`——`端口转发` 添加规则即可
![](https://blog.bbskali.cn/usr/uploads/2020/07/1013074502.png)
这样,我们便不需要长期开着电脑,从而可以实现端口转发。当然本文是将所有的功能转发到路由器上,当然你可以转发到局域网内的任意一台设备上。
###生成 msf 外网 shell
因为我在路由器中直接配好了端口转发,所以无需在 kali 中配置端口转发,直接生成外网 Shell。成功得到 shell
![](https://blog.bbskali.cn/usr/uploads/2020/07/3660905956.png)

> 需要注意的是,在生成 shell 时填写的是外网的 IP 和端口,本地配置 msf 时填写的内网的 IP
本文章转载自kali博客,原文地址:https://blog.bbskali.cn/index.php/archives/2074/

admin 发表于 2020-7-8 22:54:12

来说说优点和缺点把!
优点:速度快,稳定,想开几个节点就开几个,带有web管理面板。
缺点:需要购买vps服务器。没钱!!!{:9020:}
页: [1]
查看完整版本: 利用FRP实现内网映射和外网Shell