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
总结
其实都是因为这个全局变量注册漏洞太变态了
快就是慢,少就是多