zoukankan      html  css  js  c++  java
  • Dedecms sp2 5.7 后台getshell审计

    前言

    最近看了《代码审计-企业级Web代码安全构架》第一遍,颇有心动,找了个织梦来练练手

    环境

    win10 mysql5.7+php5.4.45
    工具 vs+seay
    

    后台代码任意文件写入

    首先我们先还是必须得熟悉一下dede目录结构

    1、程序核心程序目录及简介
    /include目录 程序核心目录
    config_base.php 环境定义文件。用于检测系统环境,定义工作目录,保存数据库链接信息,引入常用函数等,建议不要修改。
    config_hand.php 系统配置文件。定义系统常用的配置信息定义,可从后台管理直接生成该文件。
    config_passport.php 通行证文件
    config_rglobals.php 检测系统外部变量
    config_rglobals_magic.php 同上
    inc_archives_view.php 用于浏览文档或对文档生成HTML
    inc_arclist_view.php 用于浏览频道列表或对内容列表生成HTML
    inc_arcmember_view.php 用于浏览会员发布的文档
    inc_arcpart_view.php 用于解析和创建全局性质的模板,如频道封面,主页,单个页面等
    inc_arcsearch_view.php 用于文档搜索
    inc_arcspec_view.php 用于浏览所有专题列表或对专题列表生成HTML
    inc_channel_unit.php 用户解析特定频道的附加数据结构信息
    inc_channel_unit_functions.php 系统共用函数集合
    inc_downclass.php 防采集随机字符串函数
    inc_freelist_view.php 用于对特定内容列表生成HTML
    inc_functions.php 可供用户使用的函数集合
    inc_imgbt.php GetTypeidSelMember
    inc_memberlogin.php 用于用户登录及获得会员状态
    inc_photograph.php 用于处理系统中的图片,例如水印,缩略图等
    inc_photowatermark_config.php 图片处理参数定义
    inc_rss_view.php 用于浏览频道RSS或对RSS生成静态文件
    inc_separate_functions.php SpGetArcList函数,用于获得文档列表
    inc_sitemap.php 用于生成网站地图
    inc_type_tree.php 用于选择栏目的目录树
    inc_type_tree_member.php 同上,会员使用
    inc_typelink.php 用于显示文章的位置和栏目位置等
    inc_typeunit_admin.php 用于频道管理时的一些复杂操作,主要用于后台
    inc_typeunit_menu.php 同上
    inc_userlogin.php 用于管理员登录
    inc_vote.php 用于管理投票
    jump.php 用于超链接跳转
    pub_charset.php 共用字符处理函数,GB/UTF-8/Unicode/BIG5等互换
    pub_collection.php 用于采集
    pub_collection_functions.php 采集用函数
    pub_datalist.php 后台管理用数据列表
    pub_datalist_dm.php 同上,不使用模板
    pub_db_mysql.php 用于操作数据库
    pub_dedehtml2.php 用于采集中的HTML解析
    pub_dedehtml.php HTML解析器
    pub_dedetag.php 用于dede模板标签解析
    pub_httpdown.php 用于下载http中的资源
    pub_oxwindow.php 后台程序扩展
    pub_splitword_www.php 织梦分词算法
    validateimg.php 验证码
    vdimgck.php 验证码
    
    /inc 共用函数目录
    inc_fun_funAdmin.php 获取拼音码等函数
    inc_fun_funString.php html代码处理等函数
    inc_fun_SpGetArcList.php 获取文档列表SpGetArcList
    对于菜鸟来说,对于菜鸟来说,config_base.php,这个文件,当你的程序出现问题,需要覆盖,当你的程序出现问题,需要覆盖。不要覆盖 config_base.php和config_hand.php文件,里面都是dede一些核心配置文件,对于高手来说,也许修改几个php页面已经达不到目的了,就需要了解dede的数据库结构,下面是部分关键数据表的结构和说明,不完全,还没有整理完全,过几天发布完整版本 

    这里我们先看index.php包含了一个common.inc.php的文件我们跟进看一下

    可以看见这里存在变量注册漏洞具体参考

    https://xz.aliyun.com/t/2911

     然后我们定位漏洞代码

     这里者fwrite里面的两个参数我们都可通过Dede的任意变量注册来进行实现控制从而实现任意文件写入

    后台配置文件删除重装getshell

    那按照上面的变量覆盖思路很容易就找到一处任意文件删除在del方法里面

     但是想法总是美好的 然而现实

    我作斜杠跑哪里去了?

    简单的调试一下

     看见到这一步的时候对filename做了一个正则处理

     我尝试过 但都以失败告终了绕不过那怎么办呐?重新找一个吧

     参考

    https://www.ay46.com/jiaocheng/gaoji/730.html

    https://mochazz.github.io/2018/03/08/%E4%BB%A3%E7%A0%81%E5%AE%A1%E8%AE%A1%E4%B9%8BDedeCMS%20V5.7%20SP2%E5%90%8E%E5%8F%B0%E5%AD%98%E5%9C%A8%E4%BB%A3%E7%A0%81%E6%89%A7%E8%A1%8C%E6%BC%8F%E6%B4%9E%EF%BC%88%E5%A4%8D%E7%8E%B0%EF%BC%89/

    总结

    其实都是因为这个全局变量注册漏洞太变态了

    快就是慢,少就是多

  • 相关阅读:
    NOI2021游记-记最后一段日子
    7.20 ZROI-Day7模拟赛
    7.19 ZROI-Day6模拟赛
    7.18 ZROI-Day5模拟赛
    7.17 ZROI-Day4模拟赛
    7.16 ZROI-DAY3 模拟赛
    7.15 ZROI-DAY2 模拟赛
    7.13 ZROI-DAY1赛后总结
    7.9模拟赛赛后总结
    7.7模拟赛赛后总结
  • 原文地址:https://www.cnblogs.com/-zhong/p/13449412.html
Copyright © 2011-2022 走看看