前言

拿到一个iot设备,笔者比较喜欢先去看一下它的历史漏洞,也许可以从中得到一些启发。发现Cisco之前修补过这个系列设备的命令注入漏洞。

https://sec.cloudapps.cisco.com/security/center/content/CiscoSecurityAdvisory/cisco-sa-rv-command-inject-BY4c5zd

1day分析

因为漏洞通告中有相关固件版本,于是我就去diff了一下修补前和修补后两个固件。

ssi.cgi这个文件当中,笔者发现修复之后的固件比修复前的固件多出了两个函数,那么大概率就是通过这两个函数对存在命令注入的地方加上了检查以修复命令注入漏洞。直接看一下修复之后的固件里的NK_CHECK_LANGUAGE函数。很明显,这个函数的作用是对参数进行了判断和设置,和我们预想的一致。那么旧版本固件中存在的命令注入漏洞大概率出现在这个函数的上层函数中。

通过交叉引用,我们可以很轻松地找到其上层函数是NK_UiLanguageChange,我们看一下修补前的固件中的这个函数实现了什么功能。通过函数名,大体可以判断出这个函数的作用应该是切换界面的语言。这个函数首先获取了submitStatuschangelanguage的值,经过一些判断后,把changelanguage的值作为参数传进CreateFormatFile函数中。

我们继续去看一下CreateFormatFile函数。很明显,这个函数由于传进来的参数param_1没有进过任何检查,存在一个命令注入漏洞。

这个漏洞的修复方式也很简单,直接用NK_CHECK_LANGUAGE函数对参数进行了过滤。

捕获0day

漏洞分析

知道这个漏洞的前因后果之后,笔者就在想这个被修复之后的固件当中是否依旧可能存在一些没有过滤或者过滤不完整的地方。就去看了一些感觉可能存在漏洞的函数,后来就找到了NK_UiSetPassword这个函数,这个函数的作用是更改用户的密码。

虽然这个函数中对参数进行了一定的过滤,但是这里对于危险字符过滤的并不是很严谨,所以这里也存在一个命令注入漏洞。

其它地方应该也会存在不少类似的漏洞,但是笔者这里就没有继续去看了,感兴趣的师傅也许可以去找看看。

Poc

https://github.com/fxc233/iot-vul/tree/main/Cisco/Cisco%20RV32X

Notices

目前该漏洞已经提交给了思科厂商,思科已确认了该漏洞。https://sec.cloudapps.cisco.com/security/center/content/CiscoSecurityAdvisory/cisco-sa-sb-rv01x_rv32x_rce-nzAGWWDD

文章首发

https://mp.weixin.qq.com/s/UwsQH9nr1D4FzK2lhy_W2A

Cisco RV32X系列路由器 从1day分析到0day挖掘的更多相关文章

  1. 路由器漏洞复现分析第三弹:DVRF INTRO题目分析

    这个项目的目的是来帮助人们学习X86_64之外其他架构环境,同时还帮助人们探索路由器固件里面的奥秘. 本文通过练习DVRF 中INTRO 部分的题目来学习下MIPS 结构下的各种内存攻击. DVRF: ...

  2. D-Link系列路由器漏洞挖掘入门

    D-Link系列路由器漏洞挖掘入门 前言 前几天去上海参加了geekpwn,看着大神们一个个破解成功各种硬件,我只能在下面喊 6666,特别羡慕那些大神们.所以回来就决定好好研究一下路由器,争取跟上大 ...

  3. NETGEAR 系列路由器命令执行漏洞简析

    NETGEAR 系列路由器命令执行漏洞简析 2016年12月7日,国外网站exploit-db上爆出一个关于NETGEAR R7000路由器的命令注入漏洞.一时间,各路人马开始忙碌起来.厂商忙于声明和 ...

  4. DLink 815路由器栈溢出漏洞分析与复现

    DLink 815路由器栈溢出漏洞分析与复现 qemu模拟环境搭建 固件下载地址 File DIR-815_FIRMWARE_1.01.ZIP - Firmware for D-link DIR-81 ...

  5. MySQL学习系列2--MySQL执行计划分析EXPLAIN

    原文:MySQL学习系列2--MySQL执行计划分析EXPLAIN 1.Explain语法 EXPLAIN SELECT …… 变体:   EXPLAIN EXTENDED SELECT …… 将执行 ...

  6. java基础解析系列(七)---ThreadLocal原理分析

    java基础解析系列(七)---ThreadLocal原理分析 目录 java基础解析系列(一)---String.StringBuffer.StringBuilder java基础解析系列(二)-- ...

  7. Cordova入门系列(二)分析第一个helloworld项目 转发 https://www.cnblogs.com/lishuxue/p/6015420.html

    Cordova入门系列(二)分析第一个helloworld项目   版权声明:本文为博主原创文章,转载请注明出处 上一章我们介绍了如何创建一个cordova android项目,这章我们介绍一下创建的 ...

  8. 华为QUIDWAY系列路由器的负载均衡配置

    作者:邓聪聪 华为系列路由器的负载均衡NQA联动侦测配置案例: 需求:该局域网,IP地址(末位奇数)走联通,IP地址(末位偶数)走电信当某个运营商不可达时,自动切换.通过NQA来确定运营商是否可达., ...

  9. nginx高性能WEB服务器系列之八--nginx日志分析与切割

    nginx系列友情链接:nginx高性能WEB服务器系列之一简介及安装https://www.cnblogs.com/maxtgood/p/9597596.htmlnginx高性能WEB服务器系列之二 ...

  10. 自定义View系列教程05--示例分析

    站在源码的肩膀上全解Scroller工作机制 Android多分辨率适配框架(1)- 核心基础 Android多分辨率适配框架(2)- 原理剖析 Android多分辨率适配框架(3)- 使用指南 自定 ...

随机推荐

  1. JSON详述

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,易于人阅读和编写 使用json函数需要导入json库,import json json.dumps  将p ...

  2. Mybatis-plus的自定义分页搭配sql Server数据库使用

    原文出处:mybatisplus查询分页并且排序报错解决方法,适用于自定义sql和sqlserver_十七梦的博客-CSDN博客 一开始使用过的是官方文档来写分页,结果出现了如果不在最后添加ORDER ...

  3. 决策树(DecisionTree)(附源码)

    决策树(DecisionTree)   决策树所属类别:监督学习,分类 优点:直观易懂,算法简单 缺点:容易过拟合,对连续型数据不太容易实现 实现方案:ID3,CART,C4.5 详细的资料见连接:别 ...

  4. Android Studio查看指定APP日志

    1.启动Android Studio 2.View->Tool Windows->Terminal   3.在底部输入monitor 4.Android Devices Monitor新窗 ...

  5. SQL Server触发器备份后还原

    测试环境SQL Server 2012 select a.definition , b.name,b.is_disabled from sys.sql_modules a inner join sys ...

  6. ABP vNext微服务架构详细教程(补充篇)——单层模板

    1. 简介 在之前的<ABP vNext微服务架构详细教程>系列中,我们已经构建了完整的微服务架构实例,但是在开发过程中,我们会发现每个基础服务都包含10个类库,这是给予DDD四层架构下A ...

  7. 面试题:int[] arr 和 int... arr在参数列表中是一回事儿吗?

    public class Exer { public static void main(String[] args) { Base1 b1 = new Sub1(); b1.add(1,2,3); } ...

  8. Laravel安装第一步:Windows 10 上laravel下载与安装需要注意。

    1.下载了laravel,查看composer.json文件,搞清楚它需要的PHP版本 2.不要用 composer install !!! 用  composer -vvv install   这样 ...

  9. 转发:基于pnpm + lerna + typescript的最佳实践

    Part1 Pnpm pnpm是一款当代受欢迎 新兴(问题较多) 的包管理工具. 为什么会出现pnpm?因为yarn的出现并没有满足作者的一些期待,反而有些失望. After a few days, ...

  10. vue3 vue-i18n 入口文件配置报警

    报警: You are running the esm-bundler build of vue-i18n. It is recommended to conf 解决: 在vue.config.js文 ...