• Dedecms最新版--0day分享分析(二)


    前言

    接上一篇的Tricks,既然利用远程文件下载方式成为了实现RCE的最好方法,毕竟在执行的时候没有恶意shell文件,恶意木马被存放于远端服务器,那么下文的day就是对远程恶意文件的利用。

    环境

    下载最新版本:

    https://updatenew.dedecms.com/base-v57/package/DedeCMS-V5.7.110-UTF8.zip

    image-20230829144016812

    影响版本:

    <=DedeCMS-V5.7.110

    漏洞URL:

    /uploads/dede/article_string_mix.php
    /uploads/dede/sys_data.php
    /uploads/dede/sys_task.php
    /uploads/dede/media_add.php 
    /uploads/dede/article_template_rand.php
    
    • 1
    • 2
    • 3
    • 4
    • 5
    漏洞详情

    远程服务器开启ftp服务

    控制面板 >> 程序 >> 启用或关闭windows功能

    image-20230816180531570

    完成更改

    image-20230816184550935

    计算机管理

    image-20230816185006851

    添加FTP站点

    image-20230816185121408

    配置地址以及账号密码

    帮助网安学习,全套资料S信免费领取:
    ① 网安学习成长路径思维导图
    ② 60+网安经典常用工具包
    ③ 100+SRC分析报告
    ④ 150+网安攻防实战技术电子书
    ⑤ 最权威CISSP 认证考试指南+题库
    ⑥ 超1800页CTF实战技巧手册
    ⑦ 最新网安大厂面试题合集(含答案)
    ⑧ APP客户端安全检测指南(安卓+IOS)

    image-20230816185228865

    上面存放一句话木马

    img

    文件内容为

    img

    payload如下:

    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    代码中的”ftp_server”为远程服务器地址,”ftp_username”为远程ftp登录用户名,”ftp_password”为ftp登录密码,” f i l e ”为远程服务器的 s h e l l 文件名,” file”为远程服务器的shell文件名,” file为远程服务器的shell文件名,local_file”为从远程服务器下载木马文件到本地的重命名文件。通过利用ftp_get函数远程下载恶意代码文件,代码中的”ftp_server”为远程服务器地址,”ftp_username”为远程ftp登录用户名,”ftp_password”为ftp登录密码,” f i l e ”为远程服务器的 s h e l l 文件名,” file”为远程服务器的shell文件名,” file为远程服务器的shell文件名,local_file”为从远程服务器下载木马文件到本地的重命名文件。

    img

    文件保存后,访问路径

    /uploads/data/template.rand.php

    img

    提示已经成功下载一句话木马文件,查看当前目录已经生成名称为shell2.php的shell文件

    http://dedecms.xyz:8066/uploads/data/shell3.php

    img

    成功命令执行

    漏洞分析
    DedeCMS-V5.7.109-UTF8\uploads\dede\media_add.php
    
    • 1

    上传文件的时候仅仅只对权限以及上传类型做了校验,对文件内容未做校验导致漏洞产生。

    继续向下看,文件上传文件处理代码DedeCMS-V5.7.109-UTF8\uploads\dede\file_manage_control.php

    image-20230816190814239

    代码中定义了disable_funs,但是禁用的函数涉及

    phpinfo,eval,assert,exec,passthru,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source,file_put_contents,fsockopen,fopen,fwrite,preg_replace';
    $cfg_disable_funs = $cfg_disable_funs.',[$]GLOBALS,[$]_GET,[$]_POST,[$]_REQUEST,[$]_FILES,[$]_COOKIE,[$]_SERVER,include,require,create_function,array_map,call_user_func,call_user_func_array,array_filert,getallheaders
    
    • 1
    • 2

    在上面的payload中,利用手法利用点儿在于

    image-20230816191436463

    ftp_get函数是可以绕过disable_funs的,使用该函数实现bypass进行远程恶意代码调用,导致RCE。

    小结

    其它的方法也可以尝试,ftp远程调用,telnet远程调用等,包括很多方法可以实现,但是使用条件存在限制。其实在Dede由于后台参数可以直接进行配置,代码中disable_funs的定义没有意义,该模块只要存在,只要绕过正则,RCE的方式有很多。

  • 相关阅读:
    大三0基础 java学习求助?
    day12 多线程02
    Pytorch - 使用torchsummary/torchsummaryX/torchinfo库打印模型结构、输出维度和参数信息
    Prometheus邮件告警
    优化双重循环
    ATtiny88初体验(四):看门狗
    云硬盘和物理硬盘的区别
    【Apollo学习笔记】——规划模块TASK之PIECEWISE_JERK_NONLINEAR_SPEED_OPTIMIZER(二)
    js基础之对象
    面试软件测试工程师时可能会遇到的几个常见问题
  • 原文地址:https://blog.csdn.net/qq_38154820/article/details/132696132