两种在智能摄像头执行命令的方法

之前的某个时间段内我们对智能摄像头进行了一些研究,除了针对云服务、App交互部分的测试,还需要到摄像头上进行一些调试的操作。除了通过默认SSH密码、刷ROM、拆机接线写入文件,还用到了两种比较有意思的方法。

SD卡命令执行

大多数智能摄像头使用的linux系统,启动的工作都在init.sh脚本中完成。部分摄像头在init.sh脚本中保留了一些测试代码,检测特定的文件并尝试执行。

以小蚁摄像头为例,某款摄像头的init.sh中有如下代码:

ln -s /tmp/hd1 /home/hd1
ln -s /tmp/hd2 /home/hd2

mount -t vfat /dev/hd1 /home/hd1
rm /home/mmap_tmpfs/mmap.info

if [ -f "/home/hd1/test/equip_test.sh" ]; then
  /home/hd1/test/equip_test.sh
  exit
fi

上述代码显然是为了测试方便,在插入sdcard的时候,检测特定的文件十分存在,若存在则执行。因此,只要插入sdcard,放入指定的文件,就可以在让智能摄像头启动的时候执行任意代码。Github上有不少工程使用该漏洞完成摄像头的功能扩展:

小蚁的新款已经修复了该漏洞。

Wifi连接命令执行

智能摄像头需要通过Wifi连接网络,而建立连接需要手机参与。手机可以通过扫描二维码或者UDP广播的方式把Wifi的连接信息告诉摄像头。部分智能摄像头在处理SSID的时候存在命令注入,比如使用如下SSID,即可让摄像头执行reboot命令:

starbucks" & reboot

通过该命令,在init.sh中加入一些代码,完成进一步的操作。

发表评论