某摄像头存在通用未授权命令执行漏洞
将摄像头与互联网进行连接初始化之后,使用nmap扫描摄像头的开放端口:
可以看到摄像头开放了五个端口,这里关注到80端口,在浏览器中输入http://192.168.2.116:80
发现会302重定向到http://192.168.2.116/home.htm,最终跳转到http://192.168.2.116/apcam/adm/MyTest.asp:
而这个网站什么都没有。因为有官方的手机App,所以在不逆向的前提下可以通过抓包分析手机与云服务的通信状态,其中有一个关于固件升级的包:
//---------------------------------------------------------------固件升级
POST /xx/xx/query_device_upgrade_task HTTP/1.1
Host: www.xxx.com
Content-Type: application/json; charset=utf-8
Content-Length: 278
Accept-Encoding: gzip, deflate
User-Agent: okhttp/3.12.8
Connection: close
{
"header": {
"device_list": [
"xxx"
],
"seqno": "xxx",
"user_id": "xxx",
"package_name": "xxx",
"language": "zh_CN",
"client_version": "x.x.x.x",
"token": "xxx",
"phone_model": "xxx"
}
}
//---------------------------------------------------------------响应包
HTTP/1.1 200 OK
Date: Mon, 04 Jul 2022 00:57:26 GMT
Content-Type: text/plain; charset=utf-8
Content-Length: 463
Connection: close
Set-Cookie: xxx=xxx; path=/
Set-Cookie: xxx=xxx; path=/
Server: elb
{
"error_code": "0",
"error_msg": "success",
"body_info": {
"upgrade_task": [
{
"device_id": "xxx",
"is_force": "N",
"main_version": {
"device_version": "xx.xx.xx.xx",
"version_type": 0,
"url": "http://xxx.img",
"md5sum": "xxx",
"remark": "1.优化固件功能,提高用户体验。",
"is_support_sdcard_prealloc": 1,
"last_app_version": ""
},
"sub_versions": [],
"switchto_sdcard_prealloc": "Y"
}
]
}
}
即,当摄像头存在固件升级时可以获取固件的URL,将固件下载后因为发现固件过小,所以可以知道是"增量包"而不是"全量包",在ubuntu中尝试使用firmware_mod_kit的./extract-firmware.sh进行解压:
摄像头使用的架构为MIPS 32位小端序:
来到固件目录,使用grep命令尝试搜索关键字:
goahead中的http://"+location.hostname+"/xxxx/xxx/upload_firmware.asp引人注目,在浏览器中访问:
发现未授权固件上传漏洞。查看增量包中的两个shell脚本,修改其中的startapp:
发现内置的telnetd接口,取消其注释,使用firmware_mod_kit的build-firmware.sh重新打包:
为了避免一些不必要的问题,我们将打包后的固件重命名为原升级包的名称:
由于文章字数受限
可点击下方【阅读原文】阅读全篇。
分享
收藏
点赞
在看
原文始发于微信公众号(IOTsec Zone):物联网安全技术丨某摄像头存在通用未授权命令执行漏洞
- 我的微信
- 微信扫一扫
-
- 我的微信公众号
- 微信扫一扫
-
评论