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/

    总结

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

    快就是慢,少就是多

  • 相关阅读:
    LeetCode 485. Max Consecutive Ones
    LeetCode 367. Valid Perfect Square
    LeetCode 375. Guess Number Higher or Lower II
    LeetCode 374. Guess Number Higher or Lower
    LeetCode Word Pattern II
    LeetCode Arranging Coins
    LeetCode 422. Valid Word Square
    Session 共享
    java NIO
    非阻塞IO
  • 原文地址:https://www.cnblogs.com/-zhong/p/13449412.html
Copyright © 2011-2022 走看看