dedecms变量覆盖漏洞的猥琐利用方法

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

 

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

现在已公开的漏洞利用方法是控制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。

类似:

 

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

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

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

2.需要patch mysql

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

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

本文作者 rayh4c 由网络安全攻防研究室(www.91ri.org)信息安全小组收集整理,转载请注明出处。