-
漏洞简介
- 漏洞描述
英特尔通过其 vPro 商务处理器平台提供了 IntelActive Management Technology(AMT)技术,这项技术能让IT管理人员远程管理和修复PC、工作站和服务器。
这项预设的功能使用基于Web的控制页面,通过远程端口16992和16993让管理员远程管理系统。为防止功能被未授权的用户滥用,AMT服务会使用HTTP摘要认证和Kerberos验证机制。权限提升漏洞出现在web控制界面的认证用户环节。
-
- 影响范围
第一代 Core family: 6.2.61.3535
第二代 Core family: 7.1.91.3272
第三代Core family: 8.1.71.3608
第四代Core family: 9.1.41.3024 and 9.5.61.3012
第五代Core family: 10.0.55.3000
第六代Core family: 11.0.25.3001
第七代Core family: 11.6.27.3264
-
- 漏洞原理
-
- 环境搭建
在fofa、shodan等平台上搜索 port:16992,选择测试目标
1、用户发起登录请求,服务器给予响应(nonce、http方法和请求的URL),随即,用户在登录界面输入用户名、密码,客户端发送字符串(user_response),该字符串是由用户名、密码、nonce值、http方法以及请求的url生成的hash值。
2、服务器端也会通过数据库中的用户名密码计算一个类似的加密字符串(computed_response)。服务器使用strncmp()函数对两个字符串进行比较,如果二者相符就会让用户登陆Intel AMT Web界面。
3、Intel AMT漏洞的出现就是由于调用了strncmp()函数:
if(strncmp(computed_response,user_response, response_length)) exit(0x99);
在此函数中,对user_response和computed_response的值进行比较,要认证成功,变量user_response的值必须等于computed_response,因此无论长度如何,strncmp()函数的返回值必须为0,方表示验证成功。
但是写这段代码的程序员错把本应是computed_response的长度写成了user_response的长度,放到了strcmp()函数中。
4、因此,将user_response值清空,即发送空响应,将没有字节被检查,strncmp()返回零,表明验证成功。因而,空的响应字符串被认为有效而被执行,从而绕过密码核实机制,登录管理界面。
-
- 开始验证
选择一个测试目标:
尝试登陆,输入用户名密码admin/admin,并开启burpsuite抓包
然后,清空response的值,并点击forward放过抓包,便可以以管理员权限登陆intel amt web界面
接下来,点击User Accounts,继续开启抓包,并清空response值后forward
成功跳转至用户修改界面,可以选择修改admin密码,或者删除用户,添加新用户等,这里以添加新用户做演示,目前的操作都需要经过抓包清空response值再放过才可以
点击New,继续抓包清空response再forward
可以随意创建一个用户,设置权限,输入密码,强度需要高一些
继续抓包清空response再forward
接下来便可以用刚创建的用户登陆
复现成功
关闭amt服务,升级固件
后期利用:
可以下载ManageabilityDeveloperToolKit,它是intel amt 管理工具,官网链接如下:
下载后,点击Manageability Automation Tool
右键点击添加主机,输入主机ip,添加的用户名和密码
可以右键Manager Computer
等待连接,然后便可以对目标主机进行远程操作等
声明:仅做验证,未非法访问数据,且该测试目标为外网主机。