Dedecms V5.7后台getshell(CVE-2018-9175)

复现版本

dedeCMS sp2 20180109 官方版本v5.7.74

漏洞描述

后台写配置文件的地方绕过过滤写shell

漏洞分析

在dede/sys_verifles.php的159行到162行,创建modifytmp.inc文件并且写入php文件头,第180行,将文件名写入文件,如果让filename为shell,则shell则会写入modifytmp.inc中,通过文件包含执行shell。

在upload/common.inc.php中注册并过滤了外部提交的变量,运用了addslashes 函数用于在指定字符前添加反斜杠。它通常用于转义字符串,以便可以安全地在数据库中使用这些字符串,或者将其用作编程语言中的字符串。这样做可以防止潜在的 SQL 注入攻击和其他安全漏洞

sys_verifles.php第168行代码会去掉输入的前三个字符,当我们输入\” 时经过addlashes会变成\\”,再去掉前三个字符就只剩下双引号实现闭合。

在sys_verifles.php第198行,当代码执行完后会访问sys_verifies.php?action=down&curfile=0,第208到211行,当action=down会包含modifytmp.inc。

漏洞利用

登录后台后直接输入payload

http://(地址)/(后台地址)/sys_verifies.php?action=getfiles&refiles[]=123&refiles[]=\%22;phpinfo();die();//

修复建议

  • 验证用户输入:在sys_verifles.php的168行处,使用addslashes函数对用户输入进行转义是有风险的。相反,应该使用更加安全的方法,比如使用预定义的过滤器函数如filter_var()结合FILTER_SANITIZE_STRING对输入进行过滤。
  • 文件包含漏洞修复:为了防止文件包含漏洞,应该对文件名进行严格的验证和过滤。可以使用白名单机制,只允许包含指定的文件,避免使用用户输入来动态加载文件。
  • 外部提交变量的处理:在upload/common.inc.php中,确保使用addslashes之前检查和验证所有传入的变量。更好的做法是使用参数化查询或者ORM框架来处理数据库操作,从而避免SQL注入攻击。
  • 安全的文件写入:在sys_verifles.php的159行到162行中创建文件时,应该验证目录权限,并严格限制可执行的文件名和内容。此外,最好将文件存储在非 web 可访问的目录下。
  • 定期更新和监控:定期更新系统组件和监控系统日志,以及实施其他安全最佳实践来提高整体系统的安全性。

参考文章

CVE-2018-9175 DEDECMS后台getshell_dedecms cve-CSDN博客

暂无评论

发送评论 编辑评论


				
上一篇
下一篇