DLINK DCS-5020L无线云摄像机远程代码执行漏洞的实例分析,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
主要是向大家演示,如何找到物联网(IOT)设备中的漏洞。查找以下命令注入的过程可以分为3个步骤,有点类似于100 point CTF challenge:下载二进制文件,运行字符串,跟踪系统调用到原点的输入。
“DCS-5020L无线N Day&Night云台/倾斜云台摄像机是一款日夜型网络摄像机,可轻松连接到您现有的家庭网络,并支持在各种移动设备上进行远程观看。 它具有平移,倾斜和数码变焦功能,可让您使用单台相机查看更为广阔的区域,内置Wi-Fi扩展器,轻松扩展无线覆盖范围,夜视距离达5米,声音和运动检测终极的安心无忧,H.264视频压缩为高质量的图像。“
与任何物联网设备一样,我们需要做的第一件事就是(如果我们有权访问它)从固件映像中提取文件系统。而对于这种设备,第一次binwalk扫描不会显示任何东西:
我们正在寻找的是某种形式的嵌入式文件系统,比如squashfs。如果找不到它,通常是因为它被使用了分层压缩。 我们需要做的就是使用-M选项,递归运行binwalk。最终,我们在2层压缩下发现了cpio文件系统。
让我们来查看下负责Web服务器的httpd二进制文件。
文件名:alphapd
Md5sum: ea622a926c435e4637f4852536aafa8c
就像文章开头所说的那样,首先我们在二进制文件上运行字符串,看看会发生什么:
这些看起来像是传递给系统的命令。这里的'sed'命令非常有趣,看起来好像是从某个地方输入的。下一步是跟踪输入,看看我们是否可以控制它。
我们可以看到这里有两个引用我们感兴趣的字符串的函数。
反过来,每个函数都在setFormDefineManagement中被引用:
这些都是我们可以发送请求的POST表单。 例如,如果我们以下面的形式更改密码,我们向setSystemAdmin发出POST请求:
应该注意的是,您需要拥有管理员凭据才能访问此页面,稍后再介绍。还有一点需要注意的是,setSystemUserModify表单总是返回一个404,所以我们坚持分析setSystemAdmin。
因此,从sub_42DCCC开始,代码将从非易失性RAM以及websGetVar中取值。
这里的一个关键信息是对CheckSystemVar的调用,这段代码调用websGetVarCheck来处理大量的输入值,包括AdminID。
然后websGetVarCheck调用checkVarString,如下所示:
这显然只是一个switch/case结构。我们感兴趣的值是AdminID,可以看到它的值必须小于13个字节。
所以我们知道AdminID的约束是它必须少于13个字节。完成所有这些后,通过格式字符串传递给我们的AdminID参数来调用DoSystem。
很显然,攻击者可以使用一个简单的payload来躲避'sed'命令,比如‘`touch a`’。 另一个例子是AdminID=a’`telnetd`’,它允许用户登录为“a”,并将此视作新的root帐户:
注意,我们使用空密码登录。
我们还发现,我们可以通过在大多数密码字段中发送长密码,来对web server segfault。如果我们发送198个字节,服务会发生段错误,并且会导致总线错误。
不过可惜的是,我找不到让gdbserver进入设备的方法,因此也无法转储核心文件并抓取它。
以下是使用210A的DDNSPassword参数向/setSystemNetwork发出POST请求的示例。
掌握凭据的攻击者可以利用该漏洞,在摄像机的Web界面上导致其拒绝服务。如果我们能找到在设备上调试二进制文件的方法,也有可能做到RCE。
目前,这些设备中有近7000个连接到互联网:
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注亿速云行业资讯频道,感谢您对亿速云的支持。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。