FRP 反向代理渗透
阅读原文时间:2023年07月08日阅读:5

前言

之前在一个项目中遇到了一个渗透环境,只能使用工具代理远程访问内网,于是便接触了FRP这款内网穿透工具,通过内网反向代理进行远程渗透测试。这篇文章就简单介绍如何实现FRP反向代理渗透,作为个人笔记方便以后查阅,也分享给大家提供参考。

0x01 工具简介

FRP 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议。通过在具有公网 IP 的节点上部署 FRP 服务端,可以轻松地将内网服务穿透到公网。

0x02 模拟场景

使用一台工作电脑(处于外网),对一个处于内网的系统进行渗透测试。但是这两个处于不互通的网段,唯一的共同点就是都可以访问互联网。

如果直接将内网系统绑定到服务器的端口上进行访问,那么无疑是将内网系统暴露于公网之上,是非常不安全的。

为了安全性考虑,可以通过一个加密访问的代理服务,实现两个网段的互通。使用一台在公网上的ip服务器,对这两个不互通的网段进行流量中转,使它们能够进行间接性互通访问。

  • 云服务器(对两个不互通的网段流量进行中转)
  • 内网主机(存在web系统,不能被外网访问)
  • 外网主机(开启中转代理,访问内网系统)

0x03 服务器操作

首先,需要自己准备一台有公网IP的服务器,然后将FRP下载到服务器上,进入到FRP文件夹下,修改配置文件 frps.ini 如下:

[common]
bind_addr = 0.0.0.0
bind_port = 7100     # 绑定服务器端口
token = 123456789    # 自定义的配对密钥

复制

启动服务端FRP命令

./frps -c ./frps.ini

复制

注意:服务器上相对应的端口7100要对外开放,如果服务器上安装了宝塔,也必须要在宝塔上设置下开放端口。

0x04 客户端操作

在内网任意一台主机上也需要下载FRP文件,进入FRP文件夹下,修改配置文件 frpc.ini 如下:

[common]
server_addr = x.x.x.x # 服务器的IP
server_port = 7100    # 服务器的绑定端口
token = 123456789     # 服务器的配对密钥

[http_proxy]
type = tcp
remote_port = 9876    # 服务器的另一个端口
plugin = http_proxy   # 设置为http代理

复制

启动客户端FRP命令

.\frpc.exe -c ./frpc.ini

复制

注意:不是内网主机,是服务器上相对应的端口9876也要对外开放。如果服务器上安装了宝塔,也必须要在宝塔上设置下开放端口。

0x05 代理访问内网

当服务器与内网主机都开启FRP后,在工作电脑(处于外网)的浏览器中设置服务器的frp_http代理

注意:浏览器设置代理ip为服务器的公网ip,以及端口为9876

然后就可以直接远程访问内网的web系统了

0x06 Burp 代理抓包

做渗透测试的话,抓取数据包是必不可少的步骤,接下来介绍如何用Burp抓取访问内网web系统的数据包。

首先,设置Burp的下游代理,监听本地的8080端口

然后,设置Burp的上游代理,内容为服务器上的公网ip和9876端口

之后,在浏览器中设置代理,与Burp的下游代理一致

最后,就可以使用Burp进行抓取数据包了。

0x07 AWVS 代理扫描

同样,渗透测试也必须要对内网系统进行扫描测试,可以用到的扫描器有很多,例如常见的AWVS、Nessus、AppScan等等。

以 AWVS 10.5 为例,设置AWVS的代理,内容为服务器的公网ip和9876端口

设置完代理后,就可以对内网web站点进行渗透扫描了

0x08 SQLmap 代理测试

当扫描器扫出来SQL注入点后,或者自己对于其他可疑注入点进行测试验证,可以利用SQLmap工具进一步验证结果的准确性。

sqlmap 可以使用 --proxy 参数,设置为服务器代理对目标系统进行测试

python sqlmap.py -u "http://192.168.31.177/labs/num_sql.php?id=2" -p "id" --proxy "http://x.x.x.x:9876"

复制

总结

综上所述,这篇文章总结了如何使用FRP访问内网系统,以及如何使用渗透工具去远程测试内网环境的系统。至于后续怎么去挖掘系统的漏洞,想必各位师傅们心里都有一套熟练的操作了,欢迎大家一起学习交流。