热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Cisco命令注入漏洞CVE20211414分析

 1、概述最近关注了Cisco的一个命令注入漏洞CVE-2021-1414,命令注入之后可导致远程代码执行:漏洞存在于固件版本低于V1.0.03.21的RV340系列路由器中,当前最新版本V1.0.0

 

1、概述

最近关注了Cisco的一个命令注入漏洞CVE-2021-1414,命令注入之后可导致远程代码执行:

漏洞存在于固件版本低于V1.0.03.21RV340系列路由器中,当前最新版本V1.0.03.21已修复了此漏洞。RV340系列路由器可为小型企业提供防火墙和高速上网服务。刚好手头有一个RV340路由器,固件版本为V1.0.03.18,为存在漏洞版本,故实地分析测试了一下。

 

2、漏洞分析

从官网分别下载了V1.0.03.18固件:https://software.cisco.com/download/home/286287791/type/282465789/release/1.0.03.18

固件为.img格式,与常见的.bin文件貌似有一些些区别?直接使用7z一路解压,当得到fw.gz时继续解压,最终结果如下:

可得到一个较大的openwrt-comcerto2000-hgw-rootfs-ubi_nand.img文件,由此可知此型号的路由器固件是基于openwrt开发而来?OpenWRT是一个高度模块化、高度自动化的嵌入式Linux系统,拥有强大的网络组件和扩展性,多被用于工控设备、电话、小型机器人、智能家居、路由器以及VOIP设备中。文件系统为ubi,与常见bin格式的Squashfs文件系统相比,Squashfs有更好的压缩性。

使用binwalk对文件openwrt-comcerto2000-hgw-rootfs-ubi_nand.img文件进行分析,最终可得到文件系统中的全部内容:

可知目标平台为:ARM 32位小端。

搜索更多关于CVE-2021-1414信息,发现ZDI对漏洞给出了更多信息:

根据漏洞描述可知:由于JSON-RPC处理set_snmp请求中的USMUserPrivKey字段时存在命令注入,于是在解压的固件文件中寻找与RPC处理相关的文件,定位到rootfs/www/cgi-bin/jsonrpc.cgi文件,使用IDA打开jsonrpc.cgi,定位到处理RPC请求的函数:sub_149FC,函数sub_149FC根据不同的RPC指令进入对应的分支流程:

关键点位于else if ( !strncmp(method, “set_”, 4u),这里刚好与set_snmp指令的前4个字节匹配:

该分支首先调用sub_12DB4校验请求中的“sessionid”是否合法,如果合法则进入sub_13E2C函数,继续跟进这个函数:

可知此处调用了导出函数jsonrpc_set_config处理set_snmp请求,于是在rootfs根目录使用grep -r “jsonrpc_set_config” ./ 来定位导出此函数的so文件:

jsonrpc.cgi依赖的库文件比较确定 jsonrpc_set_config函数是由libjsess.so文件导出的:

使用IDA打开libjsess.so定位到导出函数jsonrpc_set_config,发现函数被动态调用,而我们又无法动态调试此文件,因此无法获取到函数的真实地址。

由于已知问题出在 “USMUserPrivKey”字段,通过搜索字符串最终定位到漏洞函数 setpre_snmp,函数定义与上图中的动态声明相符,同时与漏洞描述的set_snmp也相符。

分析显示:程序最终会调用popen执行被sprintf格式化后的v60字符串,v60的最后一段子字符串来自变量v19v19来自v44v44来自json_object_get_string中的参数v52v52正是usmUserPrivKey字段中的值。此函数在调用popen执行命令前未对usmUserPrivKey中的值进行过滤导致了命令注入。

3、漏洞复现

Web登录路由器,进入到SNMP设置界面,并全过程Burp抓包:

开启nc监听:

Brup重放上一步中抓取到的数据包,在usmUserPrivKey字段注入待执行的命令:

执行后,nc成功反弹shell

4、补丁对比

下载修复漏洞之后的固件版本,将存在漏洞的文件和修复漏洞的文件进行对比分析,结果如下:

补丁之前的代码,未校验参数,直接调用popen执行命令:

补丁后的代码,调用popen前使用match_regex正则表达式过滤特殊字符,命令注入漏洞被修复:

参考资料:

[1] https://tools.cisco.com/security/center/content/CiscoSecurityAdvisory/cisco-sa-sb-rv34x-rce-8bfG2h6b

[2] https://www.zerodayinitiative.com/advisories/ZDI-21-559/


推荐阅读
  • Vue生产环境调试的方法步骤
    开发环境下Vue会提供很多警告来帮你对付常见的错误与陷阱,而在生产环境下,这些警告语句却没有用,反而会增加应用的体积,下面这篇文章主要给大家介绍了关于Vue生产环境调试的方法步骤, ... [详细]
  • 互联网世界 9 种基本的商业模式
    互联网世界9种基本的商业模式一个商业模式是运行一个公司的方法;通过该模式的运作,一个公司能维持自己的生存,就是说,能有收益。商业模式意味着一个公司是如何通过在价值链中定位自己,从而获 ... [详细]
  • ARToolKitunity
    ARToolKit为开源的AR库,相对于高通和easyAr有几点特点:1)开源2)识别项目可以动态添加(详细在后)3)识别文件可以本地生成4)目前只能识别图片(目前为.jpg格式) ... [详细]
  • 本文分析HashMap的实现原理。数据结构(散列表)HashMap是一个散列表(也叫哈希表),用来存储键值对( ... [详细]
  • selenium 定位方式3css_selector
    关于页面元素定位,可以根据id、class、name属性以及link_text。其中id属性是最理想的定位方式,class与name属性, ... [详细]
  • 分享_Jenkits搭建芝波分享
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Jenkits搭建------芝波分享相关的知识,希望对你有一定的参考价值。   ... [详细]
  • Smali代码注入
    以下的内容是对官方MIUIV4移植教程的补充,其中一些工具的使用就不在这里赘述,请大家参考官方教程。好的,话不多说,进入正题 ... [详细]
  • Echarts 3D地图图表
    需求:实现如图所示的3D地图图表(1)原本使用的highcharts没有3d地图的功能,搜索插件也没有可替代的方案ÿ ... [详细]
  • idea启动springmvc项目时报找不到类的解决方法
    这篇文章主要介绍了idea启动springmvc项目时报找不到类的解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值, ... [详细]
  • 记录工作和学习中遇到和使用过的Python库。Target四个Level整理Collect学习Learn练习Practice掌握Master1.Python原生和功能增强1.1py ... [详细]
  • 第三方开发工具——PyCharm(安装、使用、汉化)超详细,图片太多,脚注太多(Windows操作系统)
    做任何事情时,舒适的环境是非常重要的。一个好的软件开发环境能给人带来不一样的体验。PyCharm的的环境足以 ... [详细]
  • 在Kubernetes上部署JupyterHub的步骤和实验依赖
    本文介绍了在Kubernetes上部署JupyterHub的步骤和实验所需的依赖,包括安装Docker和K8s,使用kubeadm进行安装,以及更新下载的镜像等。 ... [详细]
  • 本文介绍了使用postman进行接口测试的方法,以测试用户管理模块为例。首先需要下载并安装postman,然后创建基本的请求并填写用户名密码进行登录测试。接下来可以进行用户查询和新增的测试。在新增时,可以进行异常测试,包括用户名超长和输入特殊字符的情况。通过测试发现后台没有对参数长度和特殊字符进行检查和过滤。 ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • 海马s5近光灯能否直接更换为H7?
    本文主要介绍了海马s5车型的近光灯是否可以直接更换为H7灯泡,并提供了完整的教程下载地址。此外,还详细讲解了DSP功能函数中的数据拷贝、数据填充和浮点数转换为定点数的相关内容。 ... [详细]
author-avatar
Mr_小迪2502897623
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有