之前的某个时间段内我们对智能摄像头进行了一些研究,除了针对云服务、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中加入一些代码,完成进一步的操作。