我正在尝试在为闭路电视系统购买的廉价 DVR 上获得 root 访问权限。制造商有一个可供下载的固件更新映像,我可以使用名为 的工具进行检查,binwalk
并提取了 rootfs.它看起来像是带有 Busybox 的嵌入式 Linux。
我查看了该/etc/passwd
文件,其中有一行root
定义了密码哈希和登录 shell。没有/etc/shadow
文件,但有一个/etc/passwd-
我以前没见过的文件。
我还发现了一个通常会启动的初始化脚本,telnetd
但它已被注释掉。
我可以生成一个新的密码哈希来替换 in /etc/passwd
,取消注释该telnetd
行,然后通过网络通过 telnet 使用新密码以 root 身份登录吗?
(当然,这忽略了我将新固件刷新到设备上并使其变砖可能遇到的问题)
编辑:
这是 binwalk 的输出。它是包含 JFFS2 文件系统的 U-Boot 映像。
Target File: /vagrant/rootfs-3531dv100
MD5 Checksum: 18a010179a1e5ae03c260ccc9609ddbc
Signatures: 404
DECIMAL HEXADECIMAL DESCRIPTION
--------------------------------------------------------------------------------
0 0x0 uImage header, header size: 64 bytes, header CRC: 0xCB1642A1, created: 2019-09-26 01:53:07, image size: 9761796 bytes, Data Address: 0x0, Entry Point: 0x0, data CRC: 0x35F26A52, OS: Linux, CPU: ARM, image type: Filesystem Image, compression type: none, image name: "hirootfs"
64 0x40 JFFS2 filesystem, little endian
答案1
我是否可以生成一个新的密码哈希来替换 /etc/passwd,取消注释 telnetd 行,然后通过网络通过 telnet 使用新密码以 root 身份登录?
或许!这取决于供应商可能还做了什么,也可能没有做什么。一般来说,事情可能就是这么简单......如果您可以捕获、安装和编辑固件映像,重新刷新它,并且固件映像必须匹配的其他地方没有校验和或签名。
由于您没有指定DVR的品牌和型号,因此无法给出确定的答案。但原则上,你的想法似乎是合理的。
没有
/etc/shadow
文件,但有一个/etc/passwd-
我以前没见过的文件。
/etc/passwd-
通常是文件的备份/etc/passwd
,由标准命令创建,如passwd
, useradd
//等。命名用户/组文件备份的约定(, ,后面还有和),这只是“古老的 Unix 历史”userdel
之一事情:在某个时候,公约成立了,在那之后,继续遵循相同的做法比在没有令人信服的理由的情况下改变它更容易、更兼容。usermod
/etc/passwd
/etc/group
/etc/shadow
/etc/gshadow