漏洞原理
文件包含函数加载的参数没有经过过滤或者严格定义,可以被用户控制,包含了其他恶意文件,导致执行了非预期的代码。
漏洞危害
文件包含是指程序代码在处理包含文件的时候没有严格控制。导致用户可以构造参数包含远程代码在服务器上执行,并得到网站配置或者敏感文件,进而获取到服务器权限,造成网站被恶意删除,用户和交易数据被篡改等一系列恶性后果。主要包括本地文件包含和远程文件包含两种形式,由于开发人员编写源码,开放着将可重复使用的代码插入到单个的文件中,并在需要的时候将它们包含在特殊的功能代码文件中,然后包含文件中的代码会被解释执行。由于并没有针对代码中存在文件包含的函数入口做过滤,导致客户端可以提交恶意构造语句提交,并交由服务器端解释执行。
PHPCMS v9本地文件包含漏洞Getshell
全局搜索“include”关键字
追踪变量
/phpcms/modules/block/block_admin.php
向上追踪$str变量,判断$str是否可控:
注意到: $str = $tpl->template_parse(new_stripslashes($template));
向上追踪$template变量,判断$template是否可控:
全局搜索new_stripslashe