web安全--文件包含(本地包含,远程包含)

2023-05-16

前言

文件包含漏洞简介:

文件包含的函数的参数没有经过过滤或者是严格的定义,并且参数可以被用户所控制,这样就可能包含非预期的文件。

.文件包含漏洞常见的函数(默认都以php脚本为准啊)

①include: 包含并运行指定的文件,Include在出错的时候产生警告,脚本会继续运行

②include_once:在脚本执行期间包含并运行指定文件。该函数和include 函数类似,两者唯一的区别是 使用该函数的时候,php会加检查指定文件是否已经被包含过,如果是,则不会再被包含。

③require :包含并运行指定文件。require在出错的时候产生E_COMPLE_ERROR级别的错误,导致脚本终止运行。

④require_once: 和require函数完全相同。区别类似include和include_once。

文件包含漏洞示例(文件名称就叫做include.php吧)

无限制:没有为包含文件指定特定的前缀或者.php .html 等扩展名

<?php

$filename=$_GET['filename'];

Include($filename);

?>

有限制:(随便加一个扩展名上去)

<?php

$filename=$_GET['filename'];

Include($filename.".html");

?>

.本地包含漏洞

无限制本地包含漏洞

1)常见的敏感信息路径

window系统:
\boot.ini     系统版本信息

\php.ini      PHP配置信息

\my.ini       MYSQL配置信息

\httpd.conf  Apache配置信息

linux系统:

/etc/passwd  linux系统账号信息

/etc/httpd/conf/httpd.conf   Apache配置信息

/etc/my.conf  MYSQL配置信息

/usr/etc/php.ini  PHP配置信息

2)漏洞利用

读取文件内容(还未纠正)

通过目录遍历可以获取系统中的文件:

http://XXX.X.X.X./include.php?finame=     (传路径即可)

例:我们要访问四级目录中的1.php文件

那就是  http://XXX.X.X.X./include.php?finame=../../../1.php

利用无限制本地包含漏洞执行代码

利用无限制本地包含漏洞,可以通过文件包含功能执行扩展名的文件中的代码

Os:学到这里的时候终于解惑之前的一个疑惑:在做文件上传的题目时,为什么我上传一个图片马,访问该图片用蚁剑无法连接。原因当然是:图片马里面的php代码没有办法解析,如果要解析的话可以配合文件包含漏洞,那样就可以解析图片马里面的php代码(死靶文件随便加加减减呗)

例:Test.txt文件内容是<?php phpinfo(); ?>

利用文件包含漏洞test.txt 文件,就可以执行文件中的php代码并输出phpinfo信息

有限制本地包含漏洞

如下:

绕过方法:

1)%00截断文件包含

漏洞利用条件:
php版本要低于5.3.4

Magic_quotes_gpc=off

测试:http://127.0.0.1/include.php?filename=1.txt%00

2)路径长度截断文件包含

操作系统存在最大路径长度的限制。可以通过输入超过最大路径的长度的目录,这样系统就会将后面的的路径给舍弃,导致扩展名截断。

漏洞利用条件:

window系统目录下的最大路径长度是256B

Linux系统目录下的最大路径长度是4096B

测试:http://127.0.0.1/include.php?finame=1.txt/../../../../../../../../../../../../../../../../../../../../../../../../../../../(省略不想打了)

3)点号截断文件包含

和‘路径长度文件截断文件包含’同理

三.远程包含漏洞

①无限制远程文件包含漏洞

无限制远程文件包含是指包含文件的位置并不是在本地服务器,而是通过URL的形式包含其他服务器上的文件,执行文件中的恶意代码。

漏洞利用条件:

allow_url_fopen=on

allow_url_include=on

漏洞利用:

直接传参文件的url即可,就不做演示了。

②有限制远程文件包含漏洞(后面再补图)

绕过方法:

1)问号绕过

可以在问好(?)后面添加HTML字符串,问号后面的扩展名.html会被当成查询,从而绕或扩展名过滤

2)井号绕过

可以在井号(#)后面添加HTML字符串,#号会截断后面的扩展名.html,从而逃过扩展名过滤。#号的URL编码为%23

3)空格绕过

在payload的最后对空格进行URL编码  %20

四.PHP伪协议

①常见的php伪协议

1)file://     访问本地文件系统

2)http://   访问HTTP(S)网址

3)ftp://      访问FTP(S)URL

4)php://      访问各个输出输入流

5)zlib://       处理压缩流

6)data://     读取数据

7)glob://      查找匹配的文件路径模式

8)phar://      PHP归档

9)rar://         RAR数据压缩

②php://伪协议

php://伪协议是php提供的一些输入输出流访问功能,允许访问php的输入输出流,标准输入输出和错误描述符,内存中,磁盘备份的临时文件流,以及可以操作其他读取和写入文件的过滤器。

1)php://filter

php://filter是元封装器,设计用于了数据流打开时的筛选过滤应用,对本地磁盘文件进行读写。

以下两种用法相同:
 

?filename=php://filter/read=convert.base64-encode/resource=XXX.php

?filename=php://filter/convert.base64-encode/resource=XXX.php
名称描述
resource=<要过滤的数据流>该参数是必需的。指定要过滤的数据流
read=<读链的筛选器列表>该参数可选。可以设定一个或者多个筛选器名称,以管道符(|分隔
write=<写链的筛选器列表>该参数可选。可以设定一个或者多个筛选器名称,以管道符(|)分隔

2)php://input

php://input可以访问请求的原始数据的只读流,既可以直接读取POST上没有经过解析的原始数据,但是使用enctype='multipat/from-data"的时候php://input是无效的。

php://input有以下三种用法:


读取POST数据

有空再更

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

web安全--文件包含(本地包含,远程包含) 的相关文章

  • 我应该将标签存储在文本字段还是单独的表中?

    我有一个表 其中的行如下所示 id path tags 1 pictures pic1 jpg car bmw 3 pictures pic2 jpg cat animal pussy 4 pictures pic3 png gun 基本上
  • Web Api - 不允许捕获 405 方法

    截至目前 Web api 应用程序针对 405 方法不允许错误返回以下响应正文 我正在尝试更改响应正文 但我不知道如何使用委托处理程序 ApiControllerActionSelector 或过滤器 谁能帮我捕获服务器端的 405 错误
  • Java selenium - 如何在 TimeoutException 之后正确刷新网页?

    ChromeOptions options new ChromeOptions options addExtensions new File extension 6 2 5 0 crx ZenMate options addExtensio
  • Magento:设置刚刚创建的网站的配置值?

    我正在以编程方式创建网站 用户等 问题是 创建网站时 我无法立即设置配置值 Code
  • php 中的 stackoverflow 上有这样的成就系统吗? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 从概念上讲 如何使用 PHP 和 MySQL 为网站编写一个成就系统 唯一真正的方法是不断执行 MySQL 查询来测试成绩等吗 您有两
  • Safari 的“阅读器模式” - 开源解决方案? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 Safari 有一个 阅读器模式 可以删除网站上除文本之外的所有内容 有谁知道提供相同功能的开源库 或
  • 网站 YouTube 嵌入视频不断播放

    我正在使用 youtube 提供的 iframe 在我的网站上嵌入视频 我还使用了一个 css 弹出窗口 这是我从这个页面学到的http www pat burt com web development how to do a css po
  • 找不到模块:错误:包路径。未从包中导出

    import firebase from firebase const firebaseConfig apiKey AIzaSyBOK7x5N5UnjY4TDqndzH7l5tvdNIsWFRc authDomain todo app e3
  • 为什么 [System.ComponentModel.ToolboxItem(false)] 默认出现在 Asp.net Web 服务中

    谁能告诉我为什么 System ComponentModel ToolboxItem false 是在Asp net Web服务中使用的吗 或许你可以在这里找到一些答案 NET API 浏览器 ToolboxItemAttribute 布尔
  • 如何用 C 语言通过 HTTP 协议发送图像?

    我是一名正在做网络服务器练习的学生 我需要一些帮助 我的网络服务器在文本页面上运行良好 但是每当浏览器发送一个 GET img jpg HTTP 1 1请求 我不知道如何处理 我听说 HTTP 协议是基于文本的 那么如何在 HTTP 响应中
  • 确定网站的唯一访问者

    我正在创建一个 django 网站 使用 Apache2 作为服务器 我需要一种方法来以完整的证据方式确定我的网站 特别是每个页面 的唯一访问者数量 不幸的是 用户会有很大的动机去尝试 玩弄 跟踪系统 所以我正在努力证明这一点 有什么办法可
  • 我想将我的 NEXT.js 项目链接到静态网站

    我有一个使用 HTML CSS 开发的网站 它是一个静态网站 但现在我使用 NEXT js 与 Strapi API 集成创建了一个博客项目 我的问题是如何将我的静态网站与我的 Next js 项目链接起来 我尝试使用链接标签 但没有用 i
  • 如何从Web JavaScript应用程序获取桌面C#程序中的变量

    我遇到一个问题 有两个应用程序 一种是 C 中的桌面应用程序 另一种是 javascript 中的 Web 应用程序 运行桌面应用程序中的一些变量或信息需要传输到Web应用程序 有谁知道如何解决这个问题 有人愿意提供更多细节来解决这个问题吗
  • 删除 cookie php

    我正在尝试创建一个带有登录系统的平台 并将用户名和密码存储在cookie中 以使用户即使关闭浏览器然后再次输入也能保持登录状态 我设法保存了cookie 但我不知道如何制作注销按钮 这是代码 function logout body app
  • 允许匿名用户浏览样式和图像文件夹

    我正在编写一个 ASP NET Web 应用程序 我有一个登录屏幕 上面有一些 CSS 样式和图像 我遇到了样式和图像未显示的问题 我在网上阅读 它说我需要在 Content 文件夹中放置一个 web config 我将以下内容添加到 we
  • 如何从网页中提取文本内容? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我正在用java开发一个应用程序 它
  • 使用 MediaWiki API 下载图像?

    是否可以使用 MediaWiki API 从维基百科下载图像 不 无法通过 API 获取图像 MediaWiki 中的图像仅存储在文件夹中 而不是存储在数据库中 并且不会动态传递 更多信息请参见手册 图像管理 http www mediaw
  • 在 CMS(Wordpress 和 phpBB)之间共享登录信息

    假设我想开发一个嵌入一些 CMS 的网站 例如 WordPress http wordpress org 博客和phpbb http www phpbb com forum 统一网站登录和注册流程的最便捷方法是什么 让用户对网站的每个部分采
  • 如何修复/解决 java.lang.reflect.InitationTargetException

    我有一个关于一个特别烦人的错误的问题 我一直无法弄清楚 更不用说克服了 每当我尝试在网站上运行 Java 小程序 Applet 或 JApplet 时 都会弹出此错误 java lang reflect InvocationTargetEx
  • 如何使我的网站兼容移动设备和平板电脑? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想让我现有的网站在手机 平板电脑上查看时自动调整 甚至在您在桌面上调整屏幕时自动调整 如果失败的话 如果太难 你有什么建议 我基本上

随机推荐