本文仅提供安全研究与教学之用,用户将其信息做其他用途,由用户承担全部法律及连带责任,本站不承担任何法律及连带责任
这篇文章只是图个乐,大家看个乐就行
0x0 漏洞说明
- 官方文档,这几年几乎所有设备都受到影响
- 这个漏洞形成的关键是主程序(davinci)在处理
language
标签时出现的逻辑错误,设备的逻辑如下
- 客户端准备一个xml文件,在其中的
language
标签指定语言信息,然后put
给设备 - 设备解析出xml文件中的
language
标签的内容(这里称之为tag_language
) - 设备从固定路径中尝试加载
tag_language
文件 tag_language
文件加载失败后,设备使用sprintf+tag_language
来构建出解压指令tar zxf %s -C /home/webLib/doc/xml
tar zxf %s -C /home/webLib/doc/xml
中%s
指的就是tag_language
- 将
$(query_args)
设置为tag_language
即可实现指令注入:tar zxf $(query_args) -C /home/webLib/doc/xml
- 指令执行完成
- 接下来开始详细讲解
0x1 解析tag
- 一切始于解析
tag_language
- 关键函数sub_55581C的关键代码如下:
- 主要负责解析出
tag_language
- 然后将
tag_language
传递给加载器load_language:sub_F0CF0
0x2 判别tag
- 先来看一下
load_language:sub_F0CF0
的上半部分
- 尝试加载
/home/webLib/doc/xml/{tag_language}
- 文件如果存在就视为加载成功,直接退出函数
- 如果文件不存在就继续指令
0x3 构造指令
- 这里就是关键了
- 看一下
load_language:sub_F0CF0
加载语言的关键代码
- 首先构造出
language
文件压缩包的地址:/dav/{language_tag}.tar.gz
- 然后构造出解压指令:
tar zxf /dav/{language_tag}.tar.gz -C /home/webLib/doc/xml
- 当传入
language_tag=$(reboot)
时,对应的解压指令为tar zxf /dav/$(reboot).tar.gz -C /home/webLib/doc/xml
- 指令执行成功
0x4 利用
漏洞原理到这里结束了,这里来收一下尾巴:
- 执行的指令长度不能超过
22
字节,原因如下
- 这里使用
snprintf
来构造目标指令 snprintf
设置了最大长度为37snprintf
的格式化参数/dav/%s.tar.gz
已经占用了12字节- 我们通过
$(cmd)
的方式来传递language_tag
,此时$()
回会用三个字节 - 到此为止,
cmd
能使用的长度为37-12-3=22
- 如何获取返回值
- 注入指令的运行目录为
/home
- web目录为
/home/webLib
- 重定向结果到web目录即可
cmd >webLib/r
- 有些设备将
/home/webLib
挂载为只读,怎么解决这里就不展开了
- 突破22字节
- 通过分析原理可以发现指令执行的长度不能超过22字节,实际上可以绕过的
- 可以将指令先写到文件中,然后执行文件
- 具体代码这里就不放出来了
- 关于buxybox
- 通过研究发现海康威视设备中使用的busybox精简程度不同
- 有的设备还存在
dropbear
之类的程序,可以辅助渗透 - 不巧,我这份啥都没有,干干净净的:joy:
- 唯一与网络有关的居然是
ping
- 话说ping也可以传递数据
发表于:2021/11/04
davinci主程序:
此处内容需要评论回复后(审核通过)方可阅读。
53 comments
kankan davinci
想看看davinci
师傅,怎么写到文件里绕过,可以参考下么,今天碰到这个了。
想看看davinci OωO
看看davinci
|´・ω・)ノ
看看davinci
想看看达芬奇。
看看davinci
命令长度被限制,使用$(cmd)三个字符,可不可以使用;cmd;俩个字符?
牛B大佬看看davinci
想看davinci
看看达芬奇
看看达芬奇
师傅是怎么解压固件的啊
a
求 davinci文件
看看davinci
牛牛
看看davinci
看看davinci
+1
111
good
想看看davinci OωO
大佬,我用echo写文件突破22字节好像不行哎。求姿势。
一般是语法有问题,贴一下你的代码
c大佬,牛逼。学习学习
感谢博主 来学习一下davinci主程序♪(・ω・)ノ
hhhh
看看
学习davinci!
davinci 学习下
资源丰富666
想看davinci
Hello, I'm studying about cve-2021-36260
I'm looking for decrypted firmware because Hikvision firmwear is encrypted (ó﹏ò。)
If you dont mind, can i get the firmware file or davinci file?
达芬奇
想看davinci
想看看davinci OωO
看看达芬奇
想看davinci
技术很强
居然是达芬奇,学习一下
看看达芬奇
看看达芬奇
芬奇
davinci|´・ω・)ノ
想看看davinci OωO
看看davinci
看看davinci
达芬奇