全国 【切换城市】欢迎您来到装修百科!
关注我们
我要装修

“调制解调器遭入侵后,我调查发现了大漏洞!”

发布:2024-07-20 浏览:39

核心提示:本文作者通过偶然间发现了网络上存在的一个漏洞,顺藤摸瓜,有了一些意外的发现。原文链接:。我加载了这个页面,本以为会看到 API 路径,然而……一片空白。由于某种原因导致页面未能加载。我检查了网络流量,似乎在尝试加载任何静态资源时出现了一个无限重定向循环:看起来页面的静态资源(.png、.js、.css)的加载请求都是通过基本URI路由的,而不是通过反向代理API主机。这意味着,静态资源的代理存在某种规则,因此我更改了扩展名:确认遇到.js 扩展名,请求会被路由到原主机后,我们需要找到一种方法,从 API

本文作者通过偶然间发现了网络上存在的一个漏洞,顺藤摸瓜,有了一些意外的发现。
原文链接:。
我加载了这个页面,本以为会看到 API 路径,然而……一片空白。
由于某种原因导致页面未能加载。
我检查了网络流量,似乎在尝试加载任何静态资源时出现了一个无限重定向循环:看起来页面的静态资源(.png、.js、.css)的加载请求都是通过基本URI路由的,而不是通过反向代理API主机。
这意味着,静态资源的代理存在某种规则,因此我更改了扩展名:确认遇到.js 扩展名,请求会被路由到原主机后,我们需要找到一种方法,从 API 反向代理加载资源,但又不触发路由静态文件的规则条件。
由于请求需要通过代理,所以最简单的方法是检查是否存在任何可以在传输中“丢弃”的字符。
从反向代理 API 加载静态资源为了测试这一点,我使用了 Burp 的 Intruder,挨个试URL末尾的字符:从%00到%FF。
大约 30 秒后,我获得了200 OK 的响应,URL末尾的字符为%2f(/的编码):只需在.js 扩展名后面加上%2f,我们就可以加载 JS 文件。
我使用 Burp 的匹配和替换功能编写了一个规则,为所有静态资源添加了%2f,然后重新加载了页面。
然后,Swagger 路径就顺利加载了。
我使用相同的技巧加载了所有其他 API 端点的 Swagger 文档。
总共有大约 700 个不同的 API 调用,每个 API 的调用数量如下:快速浏览之后,我发现以下 API 拥有的与硬件交互和访问客户账户的功能最多:我复制了注册网站的 HTTP 请求,并运行了一个 Intruder 脚本来访问每一个 GET 端点,检查是否存在未经身份验证即可访问的 API 端点。
返回的结果非常有趣。
有一半端点返回了授权错误,而另一半则返回了 200 OK 的 HTTP 响应。
意外发现 Cox 后端 API可以绕过授权在利用Intruder扫描了所有 API 端点后,我快速检查了一下是否存在任何有趣的响应。
以下"profilesearch"端点有一个有趣的 HTTP 响应,似乎是一个空搜索返回了一个空 JSON 对象:检查Javascript代码,似乎我们需要在 URI 中添加一个参数来搜索配置文件。
于是我在 URI 中输入了 test,得到了以下响应:无效的用户令牌?可我刚才还能访问这个端点?我删除了URI中的test,并重新发送了请求。
又一个授权错误!由于某种原因,现在原始的端点没有参数时会返回授权错误,但我在运行 intruder 时可以直接访问这个端点。
我检查了一遍,并确认了 intruder 和我后来发送的请求之间没有发生任何变化。
我又发了一遍请求,但令人惊讶的是,这一次返回了 200 OK 和来自 intruder 的 JSON 响应!到底怎么回事?似乎这个端点有时会返回授权错误,有时又说请求成功。
为了测试实际的搜索查询能否重现这个问题,我在 URI 中写入了 cox 并重新发送了 2~3 次请求,直到看到以下响应:我的天!这似乎是 Cox 商业客户的个人资料。
虽然没有太高的期待,但我将单词 "cox" 替换为 "fbi",想看看能否真的提取客户数据:不会吧?上面的响应包含了几个 FBI 办公室的真实地址,他们是 Cox 的商业客户。
管理客户搜索 API 请求真的成功了。
这可不太妙!以上,我已确认只需简单地重复发送 HTTP 请求,就可以绕开 API 端点的授权,而且可供使用的API请求有700多个。
下面,我们来试试看真正的影响力。
确认我们可以访问任何人的设备我回顾了入侵扫描的结果,现在我知道只需重复发送请求就可以绕过授权。
为了弄清楚是否可以利用这个漏洞黑掉我的调制解调器,我需要知道这个 API 是否拥有住宅网络的访问控制级权限。
Cox 提供了住宅服务和商业服务,但我猜测底层 API 实际上拥有两者的访问权限。
接着,我提取了一个看似很简单的请求,这个请求接受一个 macAddress 参数,我想通过它测试能否通过 API 访问我的调制解调器。
这是一个 GET 请求,可用于检索调制解调器的 IP 地址,需要一个 macAddress 参数。
我登录到 Cox,获取了自己的 MAC 地址,然后一遍又一遍地发送 HTTP 请求,直到返回 200 OK:居然真的成功了!我通过 Cox Business 网站 API 访问了自己的设备!这意味着,我们可以利用这个网站上运行的任何API来与设备通信。
Cox 为几百万客户提供服务,而我可以利用这个 API 直接通过 MAC 地址与任何人的设备进行通信。
接下来我需要搞清楚的问题是,我们能否通过某人的账号ID访问他们的硬件MAC地址。
我在 Swagger 列表中找到了一个端点accountequipment/services/accountequipment/v1/equipments,然后使用我的账号ID运行Burp Repeater,返回信息如下:成功了!HTTP 响应返回了我的设备信息。
访问并更新Cox Business的客户账号为了测试我是否可以利用这个漏洞来访问和修改商业客户的账号,我找到了一条可以通过电子邮件查询客户的 API 请求。
我发送的HTTP请求以及获得的响应如下:另外,我还发送了一条类似的POST账户更新请求,也成功了。
这证实了我们确实可以读取和写入商业账号。
到此为止,我已经证明我们可以:搜索客户,并使用他们的姓名检索商业账户的个人身份信息 ;检索连接到客户账号的硬件的MAC地址;通过API,针对MAC地址运行命令。
下面,我们来查找一些真的能够写入设备的API端点,并模拟黑客执行代码。
通过泄露的加密密钥覆盖任何设备的设置我又查看了一遍 swagger 文档,发现每个硬件修改请求(例如更新设备密码)都需要一个名为 encryptedValue 的参数。
如果我能找到生成这个值的方法,就能演示如何写入调制解调器,进而远程执行代码。
为了调查能否生成这个 encryptedValue 参数,我必须深入研究网站的 Javascript,找出签名方式。
追踪了encryptedValue参数之后,我发现了以下两个函数:这两个函数都接受仅存在于运行时的变量,所以最简单的调用这两个函数的方法是找到调用它们的用户界面。
经过一番搜索后,我发现在注册账户时设置的4位个人识别码使用了相同的函数加密。
我在调用encryptWithSaltAndPadding函数的地方设置了断点,然后按下了回车。
此时,我已经设置了断点,而且还掌握了函数的上下文中,接下来我只需将函数粘贴到控制台,并运行任何我想要的代码。
为了验证这种方法确实可行,我复制了POST请求中发送的个人识别码的加密值,并将其传递给解密函数。
果然不出我所料。
现在唯一的问题是获取设备的加密值。
我询问了一圈,找到了一个做托管服务的朋友,而且他们使用的是Cox Business。
他给了我一个账号的登录信息,我看到身份验证结束后,有一个HTTP响应中包含一个加密值参数。
我复制了这个值,并传递给了解密函数:看起来这个加密参数包含了MAC地址,还有一个账号ID和一些额外的参数。
如果这个API通过某种验证机制检查MAC地址是否与账户 ID 匹配,那么利用这个漏洞的难度就会加剧。
所以,我展开了进一步的调查。
在任何调制解调器上执行命令为了检查这个API是否会验证账号ID与MAC地址匹配,我尝试使用垃圾数据签署“encryptedValue”字符串,只保留正确的MAC地址,比如123456789012;1234567;123456789;1;f4:c1:14:70:4d:ac;ANYTHING。
上述参数中唯一有效的是设备序列号。
如果此请求有效,则意味着我可以在 API 中使用不匹配账户 ID 的“encryptedValue”参数。
我发送了请求,得到了与上面完全相同的 HTTP 响应!这证明我们不需要任何额外的参数,只需知道 MAC 地址(我们可以查询客户姓名、获取账户 UUID,然后通过 UUID 获取所有连接的设备),就可以查询任何硬件设备。
到此为止,我们建立了一条完整的攻击链。
我编写了以下 HTTP 请求,作为概念验证,更新我自己的设备的 MAC 地址 SSID:成功了吗?我只获得了一个空的 200 OK 响应。
我尝试重新发送 HTTP 请求,但请求超时了。
我的网络掉线了。
一定是这个更新请求重置了我的设备。
大约 5 分钟后,我的网络重启了。
SSID 名称已更新为“Curry”。
也就是说,我可以利用这个漏洞,对任何人的设备进行读写操作。
这表明我们确实可以通过这个API调用更新设备的配置。
这意味着,黑客可以通过这个API来覆盖配置设置,访问路由器,并在设备上执行命令。
此时此刻,我们拥有的权限接近ISP技术支持,而且我们可以利用这些访问权限,通过这些API访问数百万台Cox设备中的任何一个。
我通过Cox的网页联系了他们,并分享了漏洞的详细信息。
他们在六小时内关闭了暴露的 API 调用,然后开始解决授权漏洞。
第二天,我再也无法重现任何漏洞了。
影响本文展示了黑客入侵的一种方式,一个陌生的外部攻击者可以执行命令并修改数百万调制解调器的设置,访问任何商业客户的个人身份信息,并获取与ISP技术支持团队相同的权限。
Cox 是美国最大的私营宽带提供商,第三大有线电视提供商,以及第七大电话运营商。
他们拥有数百万客户,是十个州内最受欢迎的 ISP。
黑客入侵的具体流程如下:利用姓名、电话号码、电子邮件地址或账号,通过公开的API搜索Cox的商业客户。
通过第一步查询返回的UUID检索账号的身份信息,包括设备的MAC地址、电子邮件、电话号码和地址。
查询客户的硬件MAC地址,获取WiFi密码和连接的设备。
执行任意命令,更新任何设备属性,并控制受害者账号。
Cox有700多个公开的API,其中许多API都提供了管理功能(例如查询调制解调器的连接设备)。
每个API都存在相同的权限问题,即黑客重复发送HTTP请求就可以运行未经授权的命令。
由 CSDN 和 Boolan 联合主办的「2024 全球软件研发技术大会(SDCon)」将于 7 月 4 -5 日在北京威斯汀酒店举行。
由世界著名软件架构大师、云原生和微服务领域技术先驱 Chris Richardson 和 MIT 计算机与 AI 实验室(CSAIL)副主任,ACM Fellow Daniel Jackson 领衔,华为、BAT、微软、字节跳动、京东等技术专家将齐聚一堂,共同探讨软件开发的最前沿趋势与技术实践。

  • 收藏

分享给我的朋友们:

上一篇:「网络安全」网络设备篇(12)——调制解调器(网络的调制解调器存在问题怎么办) 下一篇:天燃气热水器选购注意什么 天燃气热水器的禁忌是什么

一键免费领取报价清单 专享六大服务礼包

装修全程保障

免费户型设计+免费装修报价

已有312290人领取

关键字: 装修百科 装修咨询 装修预算表

发布招标得免费设计

申请装修立省30%

更多装修专区

点击排行