php,if (!isset($_SESSION['dede_templets_style'])) {, $_SESSION['dede_templets_style'] = $templet_style;,} else {, exit('Illegal operation.');,},
“,,这样,当SESSION变量被覆盖时,程序会立即退出并提示“Illegal operation.”。
在织梦(DedeCMS)系统中,SESSION变量覆盖导致的SQL注入破绽是一个严重的安全问题,该破绽主要存在于/plus/advancedsearch.php
文件中,直接从$_SESSION[SESSION[sqlhash]]
获取值作为$query
带入SQL查询,而这个破绽的利用前提是session.auto_start = 1
即开始了自动SESSION会话,云盾团队在dedemcs的变量注册入口进行了通用统一防御,禁止SESSION变量的传入,下面将详细介绍如何通过修改/include/common.inc.php
文件来修复此破绽:
1、破绽描述:在DedeCMS中,存在一个SESSION变量覆盖导致的SQL注入破绽,当用户访问包含破绽的页面时,攻击者可以通过构造反面请求,利用SESSION变量覆盖的方式,向数据库注入反面代码,从而执行任意SQL命令。
2、危害分析
数据泄露:攻击者可能窃取数据库中的敏感信息,如用户账号、密码等。
网站被改动:攻击者可能通过SQL注入改动网站内容,甚至植入后门程序,长期控制网站。
业务中断:严重的SQL注入攻击可能导致网站崩溃或无法正常运行,影响正常业务。
1、备份文件:在进行任何修改之前,请务必备份原始的/include/common.inc.php
文件,以防万一需要恢复。
2、定位破绽代码:打开/include/common.inc.php
文件,搜索以下代码段(通常位于第68行):
“`php
if (strlen($svar) > 0 && preg_match(‘#^(cfg_|GLOBALS|_GET|_POST|_COOKIE)#’, $svar)) {
“`
3、修改代码:将上述代码修改为:
“`php
if (strlen($svar) > 0 && preg_match(‘#^(cfg_|GLOBALS|_GET|_POST|_COOKIE|_SESSION)#’, $svar)) {
“`
4、上传替换:将修改后的/include/common.inc.php
文件上传至阿里云服务器上的相应位置,替换原有文件。
5、验证修复:完成上述步骤后,建议进行安全测试,确保破绽已被成功修复,可以使用自动化扫描工具或手动构造反面请求进行测试。
1、为什么需要修改/include/common.inc.php
文件?
/include/common.inc.php
文件是DedeCMS中的一个重要配置文件,它包含了许多全局性的设置和函数定义,通过修改该文件中的相关代码,可以有效地防止SESSION变量覆盖导致的SQL注入攻击。
2、修改代码后是否会对网站功能造成影响?
不会,上述修改仅涉及SESSION变量的检查逻辑,不会影响网站的其他功能,但请注意,在修改任何文件之前都应进行备份,以防万一出现问题能够及时恢复。
3、除了修改代码外,还有哪些预防措施?
开启防火墙:配置Web应用防火墙(WAF),对输入的数据进行过滤和检测,阻止反面请求的载入。
定期更新:及时更新DedeCMS及其插件到最新版本,以获取最新的安全补丁和功能改进。
权限控制:合理设置数据库和服务器的访问权限,遵循最小权限原则,减少潜在的攻击面。
安全审计:定期对网站进行安全审计和破绽扫描,及时发现并修复潜在的安全隐患。
用户教育:提高用户的安全意识,不随意点击未知链接或下载来源不明的文件,定期更换密码等。
通过以上详细的分析和解决方案介绍,相信能够帮助大家更好地理解和应对DedeCMS SESSION变量覆盖导致的SQL注入破绽问题,也提醒大家在日常开发和维护过程中要时刻关注安全问题,采取有效的防护措施保障网站的安全运行。