前言
之前在一个项目中遇到了一个渗透环境,只能使用工具代理远程访问内网,于是便接触了FRP这款内网穿透工具,通过内网反向代理进行远程渗透测试。这篇文章就简单介绍如何实现FRP反向代理渗透,作为个人笔记方便以后查阅,也分享给大家提供参考。
0x01 工具简介
FRP 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议。通过在具有公网 IP 的节点上部署 FRP 服务端,可以轻松地将内网服务穿透到公网。
- 项目地址:https://github.com/fatedier/frp/
0x02 模拟场景
使用一台工作电脑(处于外网),对一个处于内网的系统进行渗透测试。但是这两个处于不互通的网段,唯一的共同点就是都可以访问互联网。
如果直接将内网系统绑定到服务器的端口上进行访问,那么无疑是将内网系统暴露于公网之上,是非常不安全的。
为了安全性考虑,可以通过一个加密访问的代理服务,实现两个网段的互通。使用一台在公网上的ip服务器,对这两个不互通的网段进行流量中转,使它们能够进行间接性互通访问。
- 云服务器(对两个不互通的网段流量进行中转)
- 内网主机(存在web系统,不能被外网访问)
- 外网主机(开启中转代理,访问内网系统)
0x03 服务器操作
首先,需要自己准备一台有公网IP的服务器,然后将FRP下载到服务器上,进入到FRP文件夹下,修改配置文件 frps.ini
如下:
[common]
bind_addr = 0.0.0.0
bind_port = 7100 # 绑定服务器端口
token = 123456789 # 自定义的配对密钥
启动服务端FRP命令
代码语言:javascript复制./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命令
代码语言:javascript复制.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访问内网系统,以及如何使用渗透工具去远程测试内网环境的系统。至于后续怎么去挖掘系统的漏洞,想必各位师傅们心里都有一套熟练的操作了,欢迎大家一起学习交流。