白帽故事 · 2024年9月3日 0

利用 SQL 注入绕过机场安检

前言

和许多人一样,人们通常在机场安检队伍中等待不少时间,但是在机场安检处你如果稍加留意,会看到一个名为“已知机组人员” (KCM) 的特殊通道, KCM 是一项 TSA (运输安全管理局)计划,允许飞行员和空乘人员快速通过安检。

KCM 流程相当简单:员工使用专用通道并出示其 KCM 条形码或向 TSA 代理提供其员工编号和航空公司,当 TSA 的电脑验证航空公司的就业状况时,需要出示各种形式的身份证件,如果成功,员工无需任何检查即可顺利通过安检。

驾驶舱访问也存在类似的系统,被称为驾驶舱访问安全系统(CASS)。大多数飞机的驾驶舱内至少有一个折叠座椅,可以坐在飞行员后面。

当飞行员需要出差或旅行时,他们不可能总是能够坐在收费的座位上,因此也可以使用折叠座椅来替代。

CASS 允许航班的登机口工作人员验证折叠座使用人员是否是经过授权的飞行员。

然后,登机口工作人员可以通知航班机组人员,该折叠式座椅已通过 CASS 认证。

就业状况检查是这些流程中最关键的组成部分,如果此人目前不在航空公司工作,则表示他们没有接受背景调查,因此不会允许他们绕过安全检查或进入驾驶舱。

该流程还负责返回机组人员的照片,以确保正确的人员被授权访问。

那么,当每家航空公司可能使用不同的系统来存储员工信息时,又是如何运作的呢?

这就是今天故事开始的地方…

ARINC

ARINC (柯林斯航空航天公司的子公司)似乎与 TSA 签订了运营已知机组人员系统的合同。

ARINC 运营着一些核心组件,包括供飞行员和空乘人员检查其 KCM 状态的在线网站,以及用于在不同航空公司之间传递授权请求的 API。

每家航空公司似乎都运行自己的授权系统来参与 KCM 和 CASS,并与 ARINC 的“枢纽”进行交互。

TSA 和航空公司可以向 ARINC 发送CockpitAccessRequest和CrewVerificationRequest等请求,ARINC 会将其路由到相应航空公司的系统并接收响应。

目前有77 家航空公司参与 KCM,虽然较大的航空公司可能已经建立了自己的系统,但较小的航空公司如何响应这些参与 KCM 或 CASS 的请求呢?

FlyCASS.com

在寻找实际运行授权系统的供应商时,研究人员发现了一个名为FlyCASS的网站,该网站向小型航空公司提供基于网络的 CASS 界面。

出于好奇,研究人员注意到每家航空公司都有自己的登录页面,例如国际航空运输公司 (8C) 的登录页面为/ati 。

由于只有一个登录页面,研究人员认为可能很难已经有所突破。

但为了“彻底死心”,研究人员尝试在用户名中使用单引号作为 SQL 注入测试,于是神奇的一幕“亮瞎”了所有人:

file

居然存在 SQL 注入!通过sqlmap可以迅速的确认该漏洞,同时使用用户名' or '1'='1和密码') OR MD5('1')=MD5('1 ,还能够以 Air Transport International 的管理员身份登录 FlyCASS!

KCM 和 CASS 管理员

事实证明,FlyCASS 还为其参与的航空公司运营 KCM 和 CASS。

既然可以使用国际航空运输公司的管理员登录,那么就能够管理与其相关的飞行员和空乘人员的列表。

更令人惊讶的是,无需进一步的检查或身份验证就可以向航空公司添加新员工。

作为航空公司的管理员,研究人员能够将任何人添加为 KCM 和 CASS 的授权用户。

file

为了测试是否可以添加新员工,研究人员使用选择了测试照片创建了一个名为Test TestOnly的员工,并授权其可以访问 KCM 和 CASS。

然后,使用查询功能来检查新员工是否获得授权,测试用户顺利获准使用 KCM 和 CASS:

file

这是一个严重的问题,任何具备 SQL 注入基本知识的人都可以登录该站点,并可以添加任意用户到 KCM 和 CASS,从而绕过安检,进入商业客机的驾驶舱。

研究人员决定第一时间上报该漏洞。

漏洞披露

4 月 23 日,研究人员向国土安全部报告了该问题,国土安全部很快确认了这个问题,并确认“正在非常认真地对待这个问题”。

FlyCASS 随后在 KCM/CASS 中被禁用,随后似乎也修复了以上问题。

不幸的是,国土安全部并没有与研究人员合作,而是停止做出回应,运输安全管理局新闻办公室就该漏洞发表了错误声明,否认了研究人员的发现。

TSA 新闻办公室在一份声明中表示,该漏洞无法用于访问 KCM 检查点,因为 TSA 在向新会员发放 KCM 条形码之前会启动审查流程。

但是,使用 KCM 检查站并不需要 KCM 条形码,因为 TSO 可以手动输入航空公司员工 ID。

在研究人员向 TSA 通报此事后,他们删除了网站上提到的手动输入员工 ID 的部分,同时对于研究人员的指正依然没有任何回应。

但研究人员已经确认,TSO 使用的界面仍然允许手动输入员工 ID。

由于该漏洞还允许编辑现有的 KCM 会员,因此攻击人员也可以更改现有注册用户的照片和姓名,这很可能会绕过对新会员可能存在的任何审查程序。

如果你能够获得未注册的 KCM 条形码,你也可以在 KCM 网站上自行将其注册到员工 ID。

时间轴

  • 2024 年 4 月 23 日:首次向 ARINC 和 FAA 披露

  • 2024 年 4 月 24 日:随后通过 CISA 向 DHS 披露

  • 2024 年 4 月 25 日:国土安全部 CISO 确认他们正在制定一项解决方案

  • 2024 年 5 月 7 日:DHS CISO 确认 FlyCASS 已与 KCM/CASS 断开连接

  • 2024 年 5 月 17 日:DHS CISO 关于 TSA 声明的后续行动(未回复)

  • 2024 年 6 月 4 日:DHS CISO 关于 TSA 声明的后续行动(未回复)

以上内容由骨哥翻译并整理。

原文:https://ian.sh/tsa