零、绪论:
1、鸣谢freebuf的文章,主要是学习这个漏洞,文章地址: Intel产品AMT本地及远程提权漏洞(CVE-2017-5689)复现
2、在shadon上找了多个该漏洞尝试复现失败(评论区有人复现成功,所以方法肯定可行),我的免费用户只能查看前两页,存在如下两种可能性:
(1)我尝试的靶机已经被打了补丁,或者默认账户已经被所有者或攻击者修改。
(2)此WEB服务器有版本区别,只有特定的一些版本存在该问题,而我没有遇到。
3、补充一点知识点:
受影响端口为4个:623、624、16992、16993
4、以上:如有错误和疏漏请批评指出,谢谢!!!
尝试扫描测试脚本:
1 # -*- encoding:utf-8 -*- 2 3 #import lib files: 4 import os 5 import sys 6 import logging 7 import requests 8 import threading 9 from optparse import OptionParser 10 11 #global configuration 12 reload(sys) 13 sys.setdefaultencoding("utf-8") 14 logging.basicConfig(level=logging.INFO,format='%(message)s') 15 16 #global varites define: 17 VulnPortList = [623,624,16992,16993] 18 VulnUrl = "http://%s:%s/logon.htm" 19 VulnList = [] 20 21 class VulnScanner(threading.Thread): 22 def __init__(self,threadname): 23 threading.Thread.__init__(self,name=threadname) 24 self.targetlist = [] 25 def _config_init(self,target=None,targetfile=None): 26 if target != None: 27 for port in VulnPortList: 28 targeturl = VulnUrl%(target,str(port)) 29 self.targetlist.append(targeturl) 30 if targetfile !=None: 31 with open(targetfile,"r") as fr: 32 for line in fr.readlines(): 33 target = line.split(" ")[0].split(" ")[0] 34 self._config_init(target=target) 35 def _check(self,target): 36 try: 37 logging.info("[+] checking %s"%str(target)) 38 response = requests.get(target,timeout=3) 39 except Exception,ex: 40 logging.info("[*] Safe! Reason:%s"%str(ex)) 41 return None 42 if response.status_code == 200: 43 if response.content.find("Log On"): 44 logging.info("[+] Vuln! %s"%str(target)) 45 return target 46 else: 47 logging.info("[+] Safe! Reason:%s"%str(target)) 48 return None 49 def run(self): 50 global VulnList 51 for target in self.targetlist: 52 result = self._check(target) 53 if result != None: 54 VulnList.append(result) 55 56 if __name__ == "__main__": 57 logging.info("[+]*****************************************************************[+]") 58 logging.info("IAMT Scan Init!") 59 parser = OptionParser() 60 parser.add_option("-i","--iptarget",dest="iptarget",help="Target IP address!") 61 parser.add_option("-f","--iptargetfile",dest="iptargetfile",help="Target IPs file!") 62 parser.add_option("-t","--threadnum",dest="threadnum",help="Number of Added Threads to Scan!") 63 (options, args) = parser.parse_args() 64 parameterchecklist = [options.iptarget,options.iptargetfile] 65 if parameterchecklist in [[None,None],[None,""],["",None],["",""]]: 66 logging.error("[-] Target parameters error!") 67 exit(0) 68 try: 69 options.threadnum = 1 if options.threadnum == None or options.threadnum == "" else int(options.threadnum) 70 options.threadnum = 100 if options.threadnum > 100 else options.threadnum 71 except Exception,ex: 72 logging.error("[-] Threadnum parameter error!") 73 exit(0) 74 logging.info("[+] Scan Config Init!") 75 if options.iptargetfile != None: 76 ret = os.popen("wc -l ./%s"%options.iptargetfile) 77 size = str(ret.read()).split(" ") 78 size = int(size[0])+1 79 size = size/int(options.threadnum) 80 os.popen("split -l %s %s -d -a 3 scanfile"%(str(size),str(options.iptargetfile))) 81 scanfilelist = [] 82 for parents,dirs,filenames in os.walk("./"): 83 for filename in filenames: 84 if filename.find("scanfile") >= 0: 85 scanfilelist.append(filename) 86 threadlist = [] 87 for targetfile in scanfilelist: 88 thread = VulnScanner(threadname=str(targetfile)) 89 thread._config_init(target=None,targetfile=targetfile) 90 threadlist.append(thread) 91 for thread in threadlist: 92 thread.start() 93 for thread in threadlist: 94 thread.join() 95 for filename in scanfilelist: 96 os.remove(filename) 97 print "************************************************************" 98 for vulntarget in VulnList: 99 print "[*]Unsafe!,targetIP:",str(vulntarget.split("http://")[-1].split("/")[0]),",targeturl:%s"%vulntarget 100 print "************************************************************" 101 else: 102 thread = VulnScanner(threadname="scanner") 103 thread._config_init(target=options.iptarget) 104 thread.start() 105 thread.join() 106 print "************************************************************" 107 for vulntarget in VulnList: 108 print "[*]Unsafe!,targetIP:",str(vulntarget.split("http://")[-1].split("/")[0]),",targeturl:%s"%vulntarget 109 print "************************************************************"
一、下面是引文:
官方漏洞说明
英特尔(Intel)官方发布安全公告,公告表明Intel旗下产品英特尔主动管理技术(AMT),英特尔标准可管理性(ISM)和英特尔小型企业技术版本中的固件版本6.x,7.x,8.x 9.x,10 .x,11.0,11.5和11.6存在提权漏洞,可以使无特权攻击者获取这些产品的高级管理功能权限,CVE编号:CVE-2017-5689。 普通用户基于Intel的PC不受影响 。
受影响的版本:
第一代 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
漏洞原理:
利用截包软件把web登录数据包中Authorization字段中的response对应值全删除,就能以管理员用户登录AMT的web界面。
复现步骤:
第一步先利用搜索引擎zoomeye、shadan去搜索可能存在漏洞的链接,利用关键字port:16992
打开要检测的网站,点击Login登录,账号密码都为admin
把response里面的内容都清除
response="4208c148a7a8a9176bd8cb8d3a87464d"
点击burpsuite的Forward放行,成功以管理员进行登录
接下来新建账号,同理还是要清除response内的内容
这里设置密码需要注意密码复杂性要求,最少八个字符大小写特殊字符
新建账户成功后,刷新界面重新登录,此后操作就不需要在截包
以上就是复现过程。通过该漏洞,可以管理用户,远程开关机,使用创建的用户通过Manageability Commander Tool、vnc实现远程管理BIOS和操作系统。