CVE-2017-5689(智能Intel产品AMT本地及远程提权漏洞)
前言
本博客只做技术研究与分享,如果有恶意使用本博客中所涉及到的技术触犯法律,本博主概不负责!
环境搭建和涉及到的安全类工具
Kali1.0.9 虚拟机一台
Burpsuite 抓包软件
Shadan注册用户一个
火狐浏览器一个
漏洞介绍
漏洞CVE-2017-5689,是英特尔一个高危提权漏洞,影响的范围包括过去7年英特尔服务器芯片的远程功能,远程攻击者可以利用漏洞来控制存在风险的PC,笔记本电脑和服务器。
漏洞的源由是英特尔通过其 vPro 商务处理器平台提供了 IntelActive Management Technology(AMT)技术,这项技术能让IT管理人员远程管理和修复PC、工作站和服务器。
这项预设的功能使用基于Web的控制页面,通过远程端口16992和16993让管理员远程管理系统。为防止功能被未授权的用户滥用,AMT服务会使用HTTP摘要认证和Kerberos验证机制。权限提升漏洞出现在web控制界面的认证用户环节。
漏洞分析
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()返回零,表明验证成功。因而,空的响应字符串被认为有效而被执行,从而绕过密码核实机制,登录管理界面。
影响的软/硬件版本
第一代 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
漏洞利用过程
(1)使用已经完成用户注册的shadan搜索可能存在漏洞的链接,利用关键字——port:16992
(2)在查询到的目标中随机搜索一个存在这一漏洞特征的网站打开:
(3)设置burp suite代理
(4)开启burp suite拦截,并在浏览器中使用(admin/admin)登录
(5)再次照常把“response”置空,之后forward
(6)成功进入管理界面
(7)在这里我们可以使用User Accounts选项创建管理员用户
(8)成功进入用户管理界面
(9)新建用户
用户名:test 密码:aaa@qq.com
(10)新的管理员账户添加成功!
(11)我们使用我们创建的账号去登录(我们使用本地主机进行测试!在此工程中不在需要截取数据包)
(12)登录成功
(13)以上就是该漏洞的复现过程,可以管理用户,远程开关机,使用创建的用户通过ManageabilityCommander
Tool、vnc实现远程管理BIOS和操作系统修复建议
将登录验证函数中的computed_response与user_response的位置互换!
注明:本博客中的内容只作为漏洞分析技术研究,如果使用该博客中的内容造成违法行为,作者概不负责!