利用搜索引擎,白嫖FRP服务器

前言

众所周知,frp是一款很不错的内网穿透工具,不仅配置环境简单,只需要下载相应版本进行使用即可。今天我们来分析一下这个校验规则,然后尝试利用fofa搜索引擎,寻找不曾设置密码的,再想能不能写一个工具去批量验证frps有没有密码,以及爆破frps的token。

frpc请求分析

环境:

服务器:kali 192.168.222.128

客户端:192.168.222.1

在不使用token的情况下。直接用wireshark抓取frpc和frps的连接数据包,前三个数据包就是经典的TCP三次握手。从第四个包到第六个包可以看出来frpc和frps应该是用的一个私有协议的认证。主要的数据位于第六个数据包中,从数据包的长度就可以看出来!

图片[1]-利用搜索引擎,白嫖FRP服务器-渗透云记 - 专注于网络安全与技术分享

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服务器-渗透云记 - 专注于网络安全与技术分享

frps返回分析

第七个数据包返回了一个ACK的数据包,暂时不知道是干啥用的。从第八到第十个数据包长度来看主要信息应该在第十组数据包中。数据包如下。返回的数据中主要包括了frps的版本等信息。第八和第九个数据包中返回的tcp payload 长度为12,第十组长度为88

图片[3]-利用搜索引擎,白嫖FRP服务器-渗透云记 - 专注于网络安全与技术分享

使用recv接收收三次数据包即可

s.recv(12)
s.recv(12)
resp=s.recv(88)
图片[4]-利用搜索引擎,白嫖FRP服务器-渗透云记 - 专注于网络安全与技术分享

再把frps设置token来试试。

图片[5]-利用搜索引擎,白嫖FRP服务器-渗透云记 - 专注于网络安全与技术分享
图片[6]-利用搜索引擎,白嫖FRP服务器-渗透云记 - 专注于网络安全与技术分享

所以扫描未授权直接判断error是否为空就行了!

测试脚本

已经添加多线程,直接将url保存为json格式即可,

弱口令破解函数,需要可以自行添加

爆破的思路就是密码和时间戳拼接然后计算md5,将计算出来的md5当作PrivilegeKey,然后发送到服务器进行认证!

© 版权声明
THE END
喜欢就支持一下吧
点赞5 分享
评论 共3条

请登录后发表评论

    请登录后查看评论内容