·  阅读

本篇文章给大家带来关于 PHP 的相关知识,其中主要介绍了关于文件包含漏洞的相关问题,文件包含漏洞的产生原因是在通过PHP的函数引入文件时,由于传入的文件名没有经过合理的校验,从而操作了预想之外的文件,希望对大家有帮助。

推荐学习:《 PHP视频教程

文件包含漏洞的产生原因是在通过PHP的函数引入文件时,由于传入的文件名没有经过合理的校验,从而操作了预想之外的文件,就可能导致意外的文件泄露甚至恶意的代码注入。
PHP中引发文件包含漏洞的通常是以下四个函数:
1、include()当使用该函数包含文件时,只有代码执行到include()函数时才将文件包含进来,发生错误时只给出一个警告,继续向下执行。
2、include_once()功能和include()相同,区别在于当重复调用同一文件时,程序只调用一次。
3、require()只要程序一执行就会立即调用文件,发生错误的时候会输出错误信息,并且终止脚本的运行
4、require_once()它的功能与require()相同,区别在于当重复调用同一文件时,程序只调用一次。

攻击者可利用该漏洞进行任意文件包含读取,获取服务器敏感信息。

漏洞影响版本

此漏洞的存在与版本无关

在给PHP发送POST数据包时,如果数据包里包含文件区块,无论你访问的代码中有没有处理文件上传的逻辑,PHP都会将这个文件保存成一个临时文件(通常是/tmp/php[6个随机字符]),文件名可以在 F I L E S 变量中找到。这个临时文件,在请求结束后就会被删除。 同时,因为 p h p i n f o 页面会将当前请求上下文中所有变量都打印出来,所以我们如果向 p h p i n f o 页面发送包含文件区块的数据包,则即可在返回包里找到 _FILES变量中找到。这个临时文件,在请求结束后就会被删除。\ 同时,因为phpinfo页面会将当前请求上下文中所有变量都打印出来,所以我们如果向phpinfo页面发送包含文件区块的数据包,则即可在返回包里找到

  • 启动docker:
    service start docker
  • 在docker-compose.yml文件所在的路径执行:
    docker-compose build
    docker-compose up -d
  • 访问 http://your-ip:8080/phpinfo.php,可以看到页面出现phpinfo页面\ 在这里插入图片描述 2. 再访问 http://your-ip:8080/lfi.php?file=/etc/passwd,可以看到该页面是存在文件包含漏洞的。\ 在这里插入图片描述 POC验证:
    使用方法:python3 PHP文件包含漏洞_poc.py --target-url http://192.168.60.244:8080\

    设置白名单。

  • 推荐学习:《 PHP视频教程
  • 本文转载自: www.php.cn/php-weiziji…
  • 分类:
    后端
  •