黑客教你3分钟找微信号方法(教你如何入侵别人的微信)

最近看到网上曝出的dedecms最新版本的一个注入漏洞利用,漏洞PoC和分析文章也已在网上公开.但是在我实际测试过程当中,发现无法复现。原因是此漏洞的利用需要一定的前提条件,而原分析文章当中并没有交代这些,所以这里将我的分析过程以及一些触发的必要条件总结了一下。一. 漏洞跟踪发布

最近看到网上曝出的dedecms最新版本的一个注入漏洞利用,漏洞PoC和分析文章也已在网上公开.但是在我实际测试过程当中,发现无法复现。原因是此漏洞的利用需要一定的前提条件,而原分析文章当中并没有交代这些,所以这里将我的分析过程以及一些触发的必要条件总结了一下。

一. 漏洞跟踪

发布时间:2013年6月7日

漏洞描述:

DedeCMS是一个网站应用系统构建平台,也是一个强大的网站内容管理系统。基于PHP+MySQL的技术架构,完全开源加上强大稳定的技术架构,既可以用来构建复杂体系的企业信息门户或电子商务网站平台,也可以用来管理简单内容发布网站,不管是商务资源门户还是娱乐信息门户,它都是您管理网站的好帮手。

漏洞触发的根源在于dedesql.class.php在调用$GLOBALS[‘arrs1’]、$GLOBALS[‘arrs1’]这两个全局变量之前未对其进行初始化,导致能够覆盖任意全局变量。

漏洞危害:因为dedecms的使用非常广泛,而此漏洞利用方便,危害性高,能够远程获取管理后台,进而直接getshell获取系统控制权。

触发条件:确保php.ini中使用php_mysql.dll同时未开启php_mysqli.dll,

如图所示:

clip_image002[1]

受影响版本:dedecms 5.7

二. 漏洞原理

首先说一下dedecms不安全的参数处理机制,这里我们看一下/include/common.inc.php代码的第79行:

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

{

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

{

if($_k == ‘nvarname’) ${$_k} = $_v;

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

}

}

万恶之源其实就在这里,基本上目前dede被发现的漏洞全都死在这里。我们可以看到,程序从GPC数组中取出名值对后,只是对$_v做了简单的addslashes处理,就直接赋给了${$_k},实现了类似全局变量覆盖的机制,设计的初衷是为了开发方便,但却存在着严重的安全问题。PHP在经历了这么多年的更新换代终于修补了register_globals问题,但是dede的这段代码使php付出的努力全部白费。

下面我们回归漏洞。

首先是/include/dedesql.class.php的第589-600行,

clip_image004[1]

在执行这段代码之前,程序未初始化$arrs1和$arrs2这两个数组。结合前面提到的dede不安全的参数处理机制,利用这段代码我们可以覆盖任意全局变量。例如在这个漏洞中,我们可以控制$GLOBALS['cfg_dbprefix']的值。

然后,我们来看一下如何利用$GLOBALS['cfg_dbprefix']。

这里在/include/dedesql.class.php的第512行SetQuery函数中,代码如下


  • 发表于 2020-12-13 11:19
  • 阅读 ( 218 )
  • 分类:互联网

0 条评论

请先 登录 后评论
孙明瑞
孙明瑞

675 篇文章

你可能感兴趣的文章

相关问题