首页 > 其他分享 >web渗透测试(10):文件包含

web渗透测试(10):文件包含

时间:2023-08-02 16:13:13浏览次数:42  
标签:web www php 包含 10 渗透 PHP 文件 include

许多应用程序中,开发人员需要包含文件来加载类或在多个网页之间共享一些模板。

 

文件包含漏洞来自缺乏过滤,当用户控制的参数在调用包含函数(例如,PHP中的require,require_once,include或include_once)中用作文件名的一部分时。 如果对这些方法之一的调用容易受到攻击,则攻击者将能够操纵该函数来加载自己的代码。 文件包含漏洞也可以用作目录遍历来读取任意文件。 但是,如果任意代码包含一个打开的PHP标记,则该文件将被解释为PHP代码。

 

这文件包含功能可以允许加载本地资源或远程资源(例如,网站)。如果易受攻击,将导致:

  • 本地文件包含:LFI。读取并解释本地文件。
  • 远程文件包含:RFI。检索并解释远程文件。

 

默认情况下,由于配置选项,PHP禁用了远程文件的加载:allow_url_include。在ISO中,它已启用允许您测试它。

 

Example 1

 

<?php require_once '../header.php'; ?>


<?php

    if ($_GET["page"]) {
        include($_GET["page"]);

    } 



?>

<?php require_once '../footer.php'; ?>

 

在第一个示例中,只要将特殊字符(例如引号)注入参数,就可以看到错误消息:

Warning: include(intro.php'): failed to open stream: No such file or directory in /var/www/fileincl/example1.php on line 7 Warning: include(): Failed opening 'intro.php'' for inclusion (include_path='.:/usr/share/php:/usr/share/pear') in /var/www/fileincl/example1.php on line 7

 

 

如果您仔细阅读错误消息,则可以提取大量信息:

  • 脚本的路径:/var/www/fileincl/example1.php。
  • 使用的函数:include()。
  • 调用中使用include的值是我们注入的值,intro.php'没有任何添加或过滤。

 

我们可以使用用于检测目录遍历的方法,来检测文件包含。 例如,您可以尝试使用../技术包含/etc/passwd。

 

我们可以通过请求外部资源来测试远程文件包含:http://www.baidu.com/。我们将看到百度的页面包含在当前页面中。(可查看源码看!)

 

 PentesterLab的网站还包含对此类漏洞的测试。 如果您使用URL:http://assets.pentesterlab.com/test_include.txt。 您应该在当前页面中获得函数phpinfo()的结果:

 

test_include.txt 代码如下:

<?php 
phpinfo();
?>

 

Example 2

<?php require_once '../header.php'; ?>

<?php
    if ($_GET["page"]) {
    $file = $_GET["page"].".php";
    // simulate null byte issue
    $file = preg_replace('/\x00.*/',"",$file);
        include($file);

    } 



?>

<?php require_once '../footer.php'; ?>

 

以与目录遍历类似的方式,此示例将其自己的后缀添加到提供的值。 和以前一样,你可以使用NULL BYTE(空字节)去除后缀(对于LFI)。

 

对于RFI,您可以根据您的URL添加&blah=或?blah=来删除后缀。

 

 

在本练习中,代码模拟旧版PHP的行为。 PHP现在可以正确处理路径,并且它们不会像过去那样使用NULL BYTE中毒。

 

提醒:在此代码中,问题被模拟,因为PHP从版本(5.3.4)[http://php.net/releases/5_3_4.php]开始解决了这种类型的绕过。

标签:web,www,php,包含,10,渗透,PHP,文件,include
From: https://www.cnblogs.com/shanhubei/p/17600927.html

相关文章

  • 如何将cmd命令框添加到win10右键菜单
    win+r  输入regedit进入注册表编辑器找到路径:(可以直接输入)``计算机\HKEY_CLASSES_ROOT\Directory\Background\shell\``"C:\Windows\System32\cmd.exe""--working-dir""%v."......
  • 振弦传感器信号转换器(VTI104_DIN)应用岩土工程监测
    振弦传感器信号转换器(VTI104_DIN)应用岩土工程监测振弦传感器信号转换器(VTI104_DIN)是一种用于实现振弦传感器信号转换的设备,可将振弦传感器所采集到的振动信号转换成电信号,并通过模拟量输出或数字量输出的方式进行传输和记录。在岩土工程监测中,振弦传感器信号转换器广泛应用于地震......
  • 工程监测仪器振弦传感器信号转换器(VTI104_DIN)
    工程监测仪器振弦传感器信号转换器(VTI104_DIN)振弦传感器信号转换器,简称VTI104_DIN,是一种用于转换振弦传感器信号的电子设备。该设备可以将振弦传感器产生的模拟信号转换成标准的电压或电流输出,从而使其可以连接到PLC、DCS、PC等控制系统中,实现自动控制、数据采集和处理等功能。......
  • WebDAV之π-Disk派盘 + Mountain Duck
    MountainDuck是来自国外的一款方便实用,功能强大的云存储空间本地管理工具。它可以帮助我们在windows电脑上将远程FTP空间、WebDAV、Swift、S3、Azure、Rackspace、GoogleCloud等云存储服务转入本地进行管理,使用任何应用程序即可打开远程文件,并在本地盘上工作。你可以将云目录......
  • Asp.net Web Api .net6如何解决跨域的问题
    在Program.cs中添加如下代码//配置跨域builder.Services.AddCors(cor=>{varcors=builder.Configuration.GetSection("CorsUrls").GetChildren().Select(p=>p.Value);cor.AddPolicy("Cors",policy=>{policy.WithOrigins(c......
  • web组件
    web示例API加载在线网页Web组件的使用非常简单,只需要在Page目录下的ArkTS文件中创建一个Web组件,传入两个参数就可以了。其中src指定引用的网页路径,controller为组件的控制器,通过controller绑定Web组件,用于实现对Web组件的控制。//xxx.ets@Entry@ComponentstructWebCo......
  • 汉源高科千兆2光8电工业级一键环网交换机10口全千兆二层网管型工业以太网交换机
    HY5700-7528G-X系列是汉源高科(北京)科技有限公司生产的二层管理型工业交换机,支持2个千兆光口,8个千兆电端口,采用存储转发机制,拥有强大的带宽处理能力,自动排查数据包错误,减少传输故障,轻松支撑千兆组网,确保数据传输稳定、可靠、高效。产品选用工业级元器件,配合高标准系统设计及生产控制......
  • 麒麟桌面版V10安装虚拟机win系统
    安装及启动libvirtyumcleanall&& yummakecacheyumgroupinstall "VirtualizationHost"  #安装虚拟化主机包组systemctlstartlibvirtdsystemctlenablelibvirtd调用kvm图形虚拟化管理工具: 终端输入virt-manager。也可以按如下步骤打开:所有程序->系统工具->虚......
  • ubuntu中apache2搭建webdav服务
    1.apache2配置文件目录路径:/etc/apache2说明:1.1 *-enabled目录中的文件均为*-available目录中的文件链接。1.2 apache2启动时读取的文件均为*-enabled目录下的配置文件,因此若要某个配置生效,则需要将其链接到对应的enabled目录中。1.3 ports.conf配置文件用来配置监听......
  • Cilium系列-10-启用 IPv6 BIG TCP和启用巨帧
    系列文章Cilium系列文章前言将Kubernetes的CNI从其他组件切换为Cilium,已经可以有效地提升网络的性能.但是通过对Cilium不同模式的切换/功能的启用,可以进一步提升Cilium的网络性能.具体调优项包括不限于:启用本地路由(NativeRouting)完全替换KubeProxyIP......