搜索
查看: 5745|回复: 1

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

[复制链接]

714

主题

354

回帖

2669

积分

管理员

本论坛第一帅

积分
2669

热心会员推广达人宣传达人突出贡献优秀版主荣誉管理论坛元老

QQ
发表于 2020-7-8 22:43:58 | 显示全部楼层 |阅读模式 来自 甘肃
[md]前面几期的文章中说过,如何利用花生壳等工具搭建内网映射。实现外网访问我们的内网,但是由于花生壳等软件不稳定而且慢最重要的是还有点小贵。由于笔者运维着几天服务器,就想着利用 `frp` 搭建内网穿透。
![4168519372.jpg](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/ ... _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
# 下面这句开头必须要有,表示配置的开始
[common]
# 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 端口
配置如下:

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

[ssh]
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

```
[router-web]
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/
[/md]
4168519372.jpg
有志者,事竟成,破釜沉舟,百二秦关终属楚. 苦心人,天不负, 卧薪尝胆 ,三千越甲可吞吴
回复

使用道具 举报

714

主题

354

回帖

2669

积分

管理员

本论坛第一帅

积分
2669

热心会员推广达人宣传达人突出贡献优秀版主荣誉管理论坛元老

QQ
 楼主| 发表于 2020-7-8 22:54:12 | 显示全部楼层 来自 甘肃
来说说优点和缺点把!
优点:速度快,稳定,想开几个节点就开几个,带有web管理面板。
缺点:需要购买vps服务器。没钱!!!{:9020:}
有志者,事竟成,破釜沉舟,百二秦关终属楚. 苦心人,天不负, 卧薪尝胆 ,三千越甲可吞吴
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表