当前位置: 首页 > news >正文

TOTOLINK NR1800X 系列 CVE 分析

漏洞简介

TOTOLINK NR1800X最近报了一些cve,现主要对其命令注入进行具体分析,以及对其登录绕过进行分析。

固件下载地址:https://www.totolink.net/home/menu/detail/menu_listtpl/download/id/225/ids/36.html

环境搭建

固件提取

binwalk提取固件
binwalk -Me TOTOLINK_C834FR-1C_NR1800X_IP04469_MT7621A_SPI_16M256M_V9.1.0u.6279_B20210910_ALL.web
image

查看文件相关信息,mips架构,小端序,使用mipsel来进行模拟。
readelf -h ./bin/busybox
image

固件模拟

有两种模拟方式,user模式和system模式,感觉根据后面的模拟结果来看,好像差别不是很大。

user模式模拟

尝试用qemu模拟

cp $(which qemu-mipsel-static) .
sudo chroot . ./qemu-mipsel-static ./usr/sbin/lighttpd

会报错,显示No configuration available. Try using -f option. ,这个报错是需要-f指定已有的配置文件。

运行sudo chroot . ./qemu-mipsel-static ./usr/sbin/lighttpd -f ./lighttp/lighttpd.conf即可,接着又会报错,说缺少一个文件,创建在对应目录创建一个即可。

cd ./var
mkdir run
cd run
touch touch lighttpd.pid

然后运行,可以看到服务启动成功。

image

但是这个路由器登录是需要密码的,并且由于是模拟的关系,大部分功能无法正常使用,登录不进去,但是还好经过搜索,发现看雪上有一篇文章讲述了如何进行绕过登录,登录过后,能观察到里面的一些设置,通过bp抓包能分析出一些有效的请求头内容,其数据传输通过json实现。

image

image

system模拟

user模拟中创建的文件都要有,后面会一起传到quem模拟的虚拟机中。

下载qemu启动虚拟机所需要的“镜像”,这是小端序,所以去下载mipsel的镜像。

wget https://people.debian.org/~aurel32/qemu/mipsel/debian_wheezy_mipsel_standard.qcow2
wget https://people.debian.org/~aurel32/qemu/mipsel/vmlinux-3.2.0-4-4kc-malta

创建虚拟网桥,实现虚拟机内部和Ubuntu的连接,并且启动虚拟机,创建一个shell文件。

#set network
sudo brctl addbr virbr0
sudo ifconfig virbr0 192.168.5.1/24 up
sudo tunctl -t tap0
sudo ifconfig tap0 192.168.5.11/24 up
sudo brctl addif virbr0 tap0qemu-system-mipsel -M malta -kernel vmlinux-3.2.0-4-4kc-malta -hda debian_wheezy_mipsel_standard.qcow2 -append "root=/dev/sda1" -netdev tap,id=tapnet,ifname=tap0,script=no -device rtl8139,netdev=tapnet -nographic

然后sudo ./test.sh执行。image

最后会让登陆和输入密码,都写root就行,然后就能成功进入qemu虚拟机。
image

在启动的虚拟机里面添加一个IP,是在上面图片中的qemu虚拟机中执行命令。

ifconfig eth0 192.168.5.12 up

然后则是将提取出的固件的文件系统上传到qemu虚拟机中,在Ubuntu主机中执行命令。

scp -r squashfs-root/ root@192.168.5.12:/root/

image

然后到qemu虚拟机中进行挂载和启动。

chroot ./squashfs-root/ /bin/sh./usr/sbin/lighttpd -f ./lighttp/lighttpd.conf

成功启动
image

界面这些和user模式都是差不多一样的。

漏洞分析

报了很多个漏洞,大部分是堆栈溢出,然后一些是命令注入,这里主要分析命令注入的相关漏洞。

登录验证绕过

这两个命令执行都是是需要登录验证的,这里先来分析如何进行登录验证绕过。

无论输入什么密码,都会返回错误,错误码为302。

先随便输入一个密码,看看发的包,可以看到主要的包有两个,先看第一个包。
image

可以看到处理http
post请求的是cstecgi.cgi,传入了username和password,对应action是login,我们到相关位置去查看对应的代码。

image

可以看到,这里主要就是用sprinf初始一段语句,我们需要注意的是其中的topicurl,这个后面跟的就是对应接口的字符串,所以我们要去寻找loginAuth对应的处理函数。

这里再说一下,cstecgi.cgi处理不同的函数接口就是通过topicurl的值实现的,也就是后面goto LABEL_16的代码部分。
image

所以这些函数名称和函数地址也是那种常见的结构体的形式,我们要寻找loginAuth对应的处理函数,找到字符串的交叉引用,然后在周围找找,d键一下,就能找到对应的处理函数,函数地址在sub_42AEEC,下面来具体分析这个函数。

前面还是会获取一些参数的值,比如username还有password这些,然后还对password进行了urldecode。
image

然后中间会有段比较password和http_passwd的代码,其会修改v18的值。

v17 = strcmp(v6, v30);                        // username http_username
if ( !strcmp(v35, v32) )                      // passwd http_passwdv18 = v17 != 0;
elsev18 = 1;

这里不知道是否是因为模拟环境的原因,无论使用什么密码都无法正常登陆,但是这里的v18,需要注意下,这是第二个包的参数之一,而且这个值在最后会为0。
image

这段代码会snprintf一个重定向一个url,然后进行访问,其流程由flag参数的值决定,我们随便输入密码,就会进入第3个redirectURL,需要注意其authCode参数,授权码,也就是之前v18的值,现在它的值为0。

接下来我们看第二个包,可以看到和我们前面分析的一样,get访问了这个url。
image

这个http
get请求的处理在web服务进程lighttpd中,也就是我们quem启动的那个进程,我们通过authCode字符串,能交叉引用到其对应的函数为Form_Login。

开始分析Form_Login,开始还是先获取参数的值,然后根据goURL参数是否为空,来判断是否进入if里面。
image

接着向下看。
image

所以这里,我们可以了解到goURL就是接下来要访问的html文件,authCode则是验证是否正确登录的一个值,并且经过后面的测试访问home.html就可以进入到后台界面。
所以我们可以构造下面的url,来绕过登录,进入后台,并且可以获取到cookie的SESSION_ID。

http://xxx.xxx.xxx.xxx/formLoginAuth.htm?authCode=1&userName=admin&goURL=home.html&action=login
http://xxx.xxx.xxx.xxx/formLoginAuth.htm?authCode=1&userName=admin&goURL=&action=login

goURL可有可无,因为goURL无值时,自动会strcpy “home.html”,效果如下。

image

OpModeCfg 命令注入

第一个是 /cgi-bin/cstecgi.cgi 中的 OpModeCfg
函数的命令注入漏洞,其漏洞原因是传入的hostName参数,可执行到doSystem函数,通过简单的构造即可导致命令执行。
但是想要执行到doSystem函数,需要绕过一些判断语句,proto不能为0,3,4,6,hostName不能为空。
image

UploadFirmwareFile 命令注入

第二个是 /cgi-bin/cstecgi.cgi 的 UploadFirmwareFile
函数,其参数FileName参数可控,并且将作为doSystem的参数被执行。

这个命令注入不需要绕过什么东西,代码位置比较靠前。
image

攻击测试

先尝试bp发一下包,可以看到攻击成功,并且带有回显
image

编写个poc进行攻击,先进行登录绕过获取cookie,然后进行攻击,攻击效果如下
image

对于另一个命令注入攻击方式也差不多,只是没有回显,简单修改下poc,在tmp目录创建一个hack文件,攻击效果如下
image

最后

分享一个快速学习【网络安全】的方法,「也许是」最全面的学习方法:
1、网络安全理论知识(2天)
①了解行业相关背景,前景,确定发展方向。
②学习网络安全相关法律法规。
③网络安全运营的概念。
④等保简介、等保规定、流程和规范。(非常重要)

2、渗透测试基础(一周)
①渗透测试的流程、分类、标准
②信息收集技术:主动/被动信息搜集、Nmap工具、Google Hacking
③漏洞扫描、漏洞利用、原理,利用方法、工具(MSF)、绕过IDS和反病毒侦察
④主机攻防演练:MS17-010、MS08-067、MS10-046、MS12-20等

3、操作系统基础(一周)
①Windows系统常见功能和命令
②Kali Linux系统常见功能和命令
③操作系统安全(系统入侵排查/系统加固基础)

4、计算机网络基础(一周)
①计算机网络基础、协议和架构
②网络通信原理、OSI模型、数据转发流程
③常见协议解析(HTTP、TCP/IP、ARP等)
④网络攻击技术与网络安全防御技术
⑤Web漏洞原理与防御:主动/被动攻击、DDOS攻击、CVE漏洞复现

5、数据库基础操作(2天)
①数据库基础
②SQL语言基础
③数据库安全加固

6、Web渗透(1周)
①HTML、CSS和JavaScript简介
②OWASP Top10
③Web漏洞扫描工具
④Web渗透工具:Nmap、BurpSuite、SQLMap、其他(菜刀、漏扫等)

在这里插入图片描述

恭喜你,如果学到这里,你基本可以从事一份网络安全相关的工作,比如渗透测试、Web 渗透、安全服务、安全分析等岗位;如果等保模块学的好,还可以从事等保工程师。薪资区间6k-15k。

到此为止,大概1个月的时间。你已经成为了一名“脚本小子”。那么你还想往下探索吗?

想要入坑黑客&网络安全的朋友,给大家准备了一份:282G全网最全的网络安全资料包免费领取!
扫下方二维码,免费领取

有了这些基础,如果你要深入学习,可以参考下方这个超详细学习路线图,按照这个路线学习,完全够支撑你成为一名优秀的中高级网络安全工程师:

高清学习路线图或XMIND文件(点击下载原文件)

还有一些学习中收集的视频、文档资源,有需要的可以自取:
每个成长路线对应板块的配套视频:


当然除了有配套的视频,同时也为大家整理了各种文档和书籍资料&工具,并且已经帮大家分好类了。

因篇幅有限,仅展示部分资料,需要的可以【扫下方二维码免费领取】

相关文章:

TOTOLINK NR1800X 系列 CVE 分析

漏洞简介 TOTOLINK NR1800X最近报了一些cve,现主要对其命令注入进行具体分析,以及对其登录绕过进行分析。 固件下载地址:https://www.totolink.net/home/menu/detail/menu_listtpl/download/id/225/ids/36.html 环境搭建 固件提取 binwa…...

IDEA如何将代码进行上下左右移动,改变位置

鼠标光标定位快捷键 1.ctrl Home:定位到一页代码的行头 2.ctrl end :定位到一页代码的行末 3.home:定位到一行的行头 4.end:定位到一行的行末 有的小键盘可能没有home和end键,就需要自行修改IDEA中的快捷键或者使用键盘映射的方法修改。 将…...

【Java 面试合集】HashMap中为什么引入红黑树,而不是AVL树呢

HashMap中为什么引入红黑树,而不是AVL树呢1. 概述 开始学习这个知识点之前我们需要知道,在JDK1.8 以及之前,针对HashMap有什么不同。 JDK 1.7的时候,HashMap的底层实现是数组 链表JDK1.8的时候,HashMap的底层实现是数…...

深度学习Week15-common.py文件解读(YOLOv5)

目录 简介 一.基本组件 1.1autopad 1.2Conv 1.3 Focus 1.4Bottleneck 1.5BottleneckCSP 1.6 C3 1.7 SPP 1.8Concat 1.9Contract、Expand 二、重要类 2.1非极大值抑制(NMS) 2.2AutoShape 2.3 Detections 2.4 Classify 三、实验 &#x1f…...

qemu的snapshot快照功能的详细使用介绍

快照功能还是蛮有趣的,就是资料比较少,这边万能菜道人特意整理了一下。参考内容:QEMU checkpoint(snapshot) 使用-pudn.comKVM&QEMU学习笔记(二)-蒲公英云 (dandelioncloud.cn)在线迁移存储 - 爱码网 (likecs.com)…...

谷歌关键词优化多少钱【2023年调研】

本文主要分享Google关键词排名优化的一些成本调研,方便大家参考。 本文由光算创作,有可能会被剽窃和修改,我们佛系对待这种行为吧。 今年2023年了,谷歌关键词优化到底要多少钱? 答案是:价格在2w~25w左右…...

凸包及其算法

概念 凸包:一个能够将所有给定点围住的最小周长封闭图形。 稳定凸包:在当前组成凸包的点集 V0V_0V0​ 中新增一个不在凸包上的点,形成新点集 V1V_1V1​,若可以使 V1V_1V1​ 中所有点都在 V1V_1V1​ 的点的凸包上,则这…...

计算机网络学习笔记(二)物理层

物理层(传输比特0/1)基本概念 物理层下的传输媒体 1. 导引型 同轴电缆,双绞线(绞合可抵御干扰),光纤,电力线 2. 非导引型(调制振幅 频率 相位) 无线电波,微…...

为什么职称要提前准备?

职称反映专业技术人员的学术和技术水平、工作能力的工作成就,具有学衔、岗位两种性质。目前中国现状下,职称主要代表社会地位,就业经验,职称等级越高,越容易得到更高的社会经济和福利待遇。 职称通过申报、评审的形式…...

MyBatis详解1——相关配置

一、什么是MyBatis 1.定义:是一个优秀的持久层框架(ORM框架),它支持自定义 SQL、存储过程以及高级映射。MyBatis是一个用来更加简单的操作和读取数据库的工具。 2.支持的操作方式:xml或者注解实现操作(xm…...

字节青训营——秒杀系统设计学习笔记(三)

限流算法 限流顾名思义,就是对请求或并发数进行限制;通过对一个时间窗口内的请求量进行限制来保障系统的正常运行。如果我们的服务资源有限、处理能力有限,就需要对调用我们服务的上游请求进行限制,以防止自身服务由于资源耗尽而…...

每天一道大厂SQL题【Day10】电商分组TopK实战

每天一道大厂SQL题【Day10】电商分组TopK实战 大家好,我是Maynor。相信大家和我一样,都有一个大厂梦,作为一名资深大数据选手,深知SQL重要性,接下来我准备用100天时间,基于大数据岗面试中的经典SQL题&…...

最全的免费录屏工具,这 19 款录屏软件绝对值得你收藏

屏幕录制软件可让您捕获屏幕以与他人共享,创建与产品相关的视频、教程、课程、演示、视频等。这些软件是您能够从网络摄像头和屏幕录制视频。以下是精选的顶级屏幕录像机列表。 适用于 PC 的19 款免费录屏屏幕录像机软件 1)奇客免费录屏 奇客免费录屏&am…...

vb.net计算之.net core基础(2)-发布应用

目录 发布程序测试运行运行方式发布程序 首先,将编译配置改为Release 然后,发布应用,在生成菜单下。 选择发布到文件夹 继续选择文件夹 接着,完成 关闭 点击发布标签栏的发布按钮...

微服务项目【商品秒杀接口压测及优化】

生成测试用户 将UserUtils工具类导入到zmall-user模块中,运行生成测试用户信息,可根据自身电脑情况来生成用户数量。 UserUtils: package com.xujie.zmall.utils;import com.alibaba.nacos.common.utils.MD5Utils; import com.fasterxml.j…...

1997. 访问完所有房间的第一天

题目 你需要访问 n 个房间,房间从 0 到 n - 1 编号。同时,每一天都有一个日期编号,从 0 开始,依天数递增。你每天都会访问一个房间。 最开始的第 0 天,你访问 0 号房间。给你一个长度为 n 且 下标从 0 开始 的数组 n…...

通达信交易接口以什么形式执行下单的?

通达信程交易接口 以API形式来执行下单接口,一般不再需要通过接口系统之间进行连接,通过直接调用通达信dll交易函数的方式直接进行交易,包括下单,撤单,查询资金股份、当日委托、当日成交等方面都能很快的执行出来。以a…...

CobaltStrike上线微信通知

CobaltStrike上线微信通知 利用pushplus公众号(每天免费发送200条消息) http://www.pushplus.plus/push1.html 扫码登录后需要复制token 可以测试一下发送一下消息,手机会受到如下消息。可以在微信提示里将消息免打扰关闭(默认…...

喜茶、奈雪的茶“花式”寻生路

配图来自Canva可画 疫情全面开放不少人“阳了又阳”,电解质饮品成为热销品,梨子、橘子、柠檬等水果被卖断货,凉茶、黄桃罐头被抢购一空,喜茶的“多肉大橘”、奈雪的“霸气银耳炖梨”、蜜雪冰城的“棒打鲜橙”、沪上阿姨的“鲜炖整…...

Xstream使用教程

1.Xstream介绍 官网:https://x-stream.github.io/tutorial.html 介绍:XStream 对象序列化和反序列化为 XML的一个JAVA类库。JDK 1.4以上适用。 PS:与JAXB相比,Xstream更好用一些,像XStreamImplicit这种注解,我在JAX…...

浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)

✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义(Task Definition&…...

论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)

HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...

【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器

一.自适应梯度算法Adagrad概述 Adagrad(Adaptive Gradient Algorithm)是一种自适应学习率的优化算法,由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率,适合处理稀疏数据和不同参数梯度差异较大的场景。Adagrad通…...

阿里云ACP云计算备考笔记 (5)——弹性伸缩

目录 第一章 概述 第二章 弹性伸缩简介 1、弹性伸缩 2、垂直伸缩 3、优势 4、应用场景 ① 无规律的业务量波动 ② 有规律的业务量波动 ③ 无明显业务量波动 ④ 混合型业务 ⑤ 消息通知 ⑥ 生命周期挂钩 ⑦ 自定义方式 ⑧ 滚的升级 5、使用限制 第三章 主要定义 …...

Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件

今天呢,博主的学习进度也是步入了Java Mybatis 框架,目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学,希望能对大家有所帮助,也特别欢迎大家指点不足之处,小生很乐意接受正确的建议&…...

质量体系的重要

质量体系是为确保产品、服务或过程质量满足规定要求,由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面: 🏛️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限,形成层级清晰的管理网络&#xf…...

拉力测试cuda pytorch 把 4070显卡拉满

import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试,通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小,增大可提高计算复杂度duration: 测试持续时间(秒&…...

什么是Ansible Jinja2

理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具,可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板,允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板,并通…...

Device Mapper 机制

Device Mapper 机制详解 Device Mapper(简称 DM)是 Linux 内核中的一套通用块设备映射框架,为 LVM、加密磁盘、RAID 等提供底层支持。本文将详细介绍 Device Mapper 的原理、实现、内核配置、常用工具、操作测试流程,并配以详细的…...

力扣-35.搜索插入位置

题目描述 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...