前言
众所周知,frp是一款很不错的内网穿透工具,不仅配置环境简单,只需要下载相应版本进行使用即可。今天我们来分析一下这个校验规则,然后尝试利用fofa搜索引擎,寻找不曾设置密码的,再想能不能写一个工具去批量验证frps有没有密码,以及爆破frps的token。
frpc请求分析
环境:
服务器:kali 192.168.222.128
客户端:192.168.222.1
在不使用token的情况下。直接用wireshark抓取frpc和frps的连接数据包,前三个数据包就是经典的TCP三次握手。从第四个包到第六个包可以看出来frpc和frps应该是用的一个私有协议的认证。主要的数据位于第六个数据包中,从数据包的长度就可以看出来!
![图片[1]-利用搜索引擎,白嫖FRP服务器-渗透云记 - 专注于网络安全与技术分享](https://b.encenc.com/wp-content/uploads/2023/07/d2b5ca33bd180201.png)
frpc会向frps传递frpc的版本以及系统架构时间戳和key等信息。
模拟frpc发包
直接使用简单暴力的办法把四到六组数据包中的tcp payload拿出来用用socket发送就行了。
import socket
import binascii
host="192.168.200.132"
port=7000
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect((host,port))
hex1="000100010000000100000000"
hex2="000000000000000100000094"
hex3="6f000000000000008b7b2276657273696f6e223a22302e34392e30222c226f73223a2277696e646f7773222c2261726368223a22616d643634222c2270726976696c6567655f6b6579223a223135393565343431616433393631333739373663633362343733366536386532222c2274696d657374616d70223a313638393431343439352c22706f6f6c5f636f756e74223a317d"
str=binascii.unhexlify(hex1)
s.send(str)
str=binascii.unhexlify(hex2)
s.send(str)
str=binascii.unhexlify(hex3)
s.send(str)
从frps可以看出来连接成功了。
![图片[2]-利用搜索引擎,白嫖FRP服务器-渗透云记 - 专注于网络安全与技术分享](https://b.encenc.com/wp-content/uploads/2023/07/d2b5ca33bd181448.png)
frps返回分析
第七个数据包返回了一个ACK的数据包,暂时不知道是干啥用的。从第八到第十个数据包长度来看主要信息应该在第十组数据包中。数据包如下。返回的数据中主要包括了frps的版本等信息。第八和第九个数据包中返回的tcp payload 长度为12,第十组长度为88
![图片[3]-利用搜索引擎,白嫖FRP服务器-渗透云记 - 专注于网络安全与技术分享](https://b.encenc.com/wp-content/uploads/2023/07/d2b5ca33bd181601.png)
使用recv接收收三次数据包即可
s.recv(12)
s.recv(12)
resp=s.recv(88)
![图片[4]-利用搜索引擎,白嫖FRP服务器-渗透云记 - 专注于网络安全与技术分享](https://b.encenc.com/wp-content/uploads/2023/07/d2b5ca33bd111629.png)
再把frps设置token来试试。
![图片[5]-利用搜索引擎,白嫖FRP服务器-渗透云记 - 专注于网络安全与技术分享](https://b.encenc.com/wp-content/uploads/2023/07/d2b5ca33bd111825.png)
![图片[6]-利用搜索引擎,白嫖FRP服务器-渗透云记 - 专注于网络安全与技术分享](https://b.encenc.com/wp-content/uploads/2023/07/d2b5ca33bd111832.png)
所以扫描未授权直接判断error是否为空就行了!
测试脚本
已经添加多线程,直接将url保存为json格式即可,
弱口令破解函数,需要可以自行添加
爆破的思路就是密码和时间戳拼接然后计算md5,将计算出来的md5当作PrivilegeKey,然后发送到服务器进行认证!










请登录后查看评论内容