美文网首页
文件包含漏洞实验详解

文件包含漏洞实验详解

作者: CSeroad | 来源:发表于2017-12-15 15:24 被阅读33次

    参考《白帽子讲web安全》,实验心得:

    想要成功利用文件包含的漏洞,需要满足两个条件

    (1)include()等函数通过动态变量的方式引入需要包含的文件

    (2)用户能够控制该动态变量

    以DVWA的文件包含来做实验

    实验环境:

    DVWA,win10,wampserver2.4-x86,中国菜刀等

    本地文件包含漏洞

    当用户可以控制page参数时,我们可以进行查看我们任意想要查看的文件。即目录遍历。因为wamp的php.ini文件默认情况下allow_url_fopen=on

    包含漏洞 漏洞探索 phpinfo

    使用../../的方式来返回上层目录。当然也采用不同的编码来进行绕过一些限制。

    文件包含的防护

    当php采用了open_basedir,它用来限制特定目录php能打开的文件。

    在php.ini中默认是没有打开的。

    无设置

    我们对其进行设置,任意文件包含就会失败

    限制目录

    如果是要限制一个指定的目录,最后一定要加上\

    远程文件包含

    默认情况下php.ini的配置选项allow_url_include=off,不能远程文件,我们手动设置为on,以方便我们的实验

    www.baidu.com success

    我们还可以利用文件包含漏洞执行任意命令,需要借助另一台服务器,我利用虚拟机的win7来让实验更加完美,虚拟机IP为192.168.15.156,我们新建一个文件hack.txt,代码为:

    远程包含一句话木马

    注:创建的文件后缀名一定是txt、jpg、rar,一定是非php文件后缀名的文件,进而getshell

    然后我们控制page参数来访问我们构建的脚本

    我们可看到在本机win10的dvwa下新建了一个文件sheller.php

    sheller.php

    访问sheller.php

    成功利用

    那么我们可以把hack.txt代码进行修改,和中国菜刀相结合

    hack.txt文件

    再次访问,并使用菜刀,成功利用。

    生成shell.php 中国菜刀 成功

    我们还有别的思路,都可以进行尝试

    比如在hack.php文件里,写以下代码

    系统命令 ipconfig IP地址

    注意:$_POST和$_GET的传递方式不一样。

    本地文件包含的利用技巧

    1. php://input是可以访问请求原始数据的只读流。

    可以读取到post没有解析的原始数据

    2. php://filter读取包含漏洞脚本的源码

    php://filter/read=convert.base64-encode/resource=[文件路径]

    base64

    读取index.php文件,再使用base64进行解码。

    3. data URL schema将文件包含漏洞变成代码进行执行漏洞

    data:text/plain,<?php system('ipconfig');?>

    执行系统命令

    4. 包含apache配置文件

    首先利用burpsuite进行抓包访问,将想要执行的php代码插入其中,避免<、>等符号被过滤,随后访问access.log,执行代码。

    (我使用的wampserver,access.log默认在wamp/logs/access.log)

    burpsuite抓包 访问access.log success

    5. file:// 协议查看任意文件

    可查看任意文件

    6. zip:// 协议

    zip://, bzip2://, zlib:// 均属于压缩流,可以访问压缩文件中的子文件。可以被php解析的子文件后缀名

    还有其他一些协议的利用:

    php://stdin 是只读的, php://stdout 和 php://stderr 是只写的,ftp://访问ftp

    expect://协议执行任意linux的指令,使用http://localhost/include.php?page=expect://command

    来执行任意linux指令

    总结:

    文件包含漏洞即是类似include函数在包含文件的时候,使用GET或POST请求方式,使得参数有可能被控制。

    所以出现文件包含漏洞

    如:

    可用于代码审计

    参考文献:

    https://www.waitalone.cn/php-file-include.html

    http://www.jb51.net/article/128429.htm

    相关文章

      网友评论

          本文标题:文件包含漏洞实验详解

          本文链接:https://www.haomeiwen.com/subject/pghdwxtx.html