| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> PHP知识库 -> 文件包含漏洞相关知识总结 -> 正文阅读 |
|
[PHP知识库]文件包含漏洞相关知识总结 |
1.文件包含漏洞概念 通过PHP函数引入文件时,传入的文件名没有经过合理的验证,从而操作了预想之外的文件,就可能导致意外的文件泄漏甚至恶意代码注入 2.文件包含漏洞的环境要求 allow_url_fopen=On(默认为On) 规定是否允许从远程服务器或者网站检索数据 allow_url_include=On(php5.2之后默认为Off) 规定是否允许include/require远程文件 3.常见文件包含函数 include()和require()区别 include在引入不存文件时产生一个警告且脚本还会继续执行,require则会导致一个致命性错误且脚本停止执行 新建include.php文件
运行结果:require包含不会显示123 require_once和include_once该文件中已经被包含过,则不会再次包含 4.PHP伪协议在文件包含漏洞中的利用 4.1. php://input php://input可以访问请求的原始数据的只读流,将post请求的数据当作php代码执行 如果存在文件包含漏洞,可将php://input作为文件名传入,同时在post中注入设置想要注入的代码,php执行时就会将post的内容作为php代码执行 4.1.1. 使用条件 allow_url_fopen:off/on allow_url_include:on 4.1.2. 实例
执行任意代码poc:
写入木马poc:
读取目录结构poc:
4.2. data:// 4.2.1. poc
4.2.2.file://,zip://,compress.zlib://和bzip2:// 4.3 使用条件
4.3.2. poc 以zip://为例 要用#分隔压缩包和压缩包里的内容,并且#要用url编码%23 http://127.0.0.1/cmd.php?file=zip://D:/soft/phpStudy/WWW/file.jpg%23code.txt 先将要执行的PHP代码写好文件名为code.txt,将phpcode.txt进行zip压缩,压缩文件名为file.zip,如果可以上传zip文件便直接上传,若不能便将file.zip重命名为file.jpg后在上传,其他几种压缩格式也可以这样操作。 4.4. phar:// 4.4.1. poc phar://...(当前脚本的绝对路径).../1.zip/1.php 4.5. php://filter php://filter可以获取指定文件源码。当它与包含函数结合时,php://filter流会被当作php文件行。所以我们一般对其进行编码,让其不执行。从而导致任意文件读取。 poc:
4.6. 总结 php://input和data://可以注入任意代码;file://,zip://,zlib://,bzip2://,phar,php://filter可用于读取文件,可以结合文件上传漏洞进行利用。 5.文件包含漏洞的截断 5.1. %00截断 5.1.1. 要求 php版本小于5.3.4 magic_quotes_gpc为off状态 magic_quotes_gpc为on状态时%00前会被自动加上一个反斜杠转义 5.1.2. 实例 index.php
poc
5.2. 路径长度截断 5.2.1. 要求 php版本小于5.2.8 5.2.2. 操作系统文件长度限制
5.2.3. 实例 index.php
5.2.4. poc
5.3.总结 一般来说如果php版本在5.3.4以下,先尝试使用%00截断,如果不行再使用路径长度截断 6.包含Apache日志文件 WEB服务器一般会将用户的访问记录保存在访问日志中。那么我们可以根据日志记录的内容,精心构造请求,把PHP代码插入到日志文件中,通过文件包含漏洞来执行日志中的PHP代码。 6.1. 使用条件
6.2. 获取日志存放路径 日志默认路径 (1) apache+Linux日志默认路径 /etc/httpd/logs/access_log /var/log/httpd/access_log (2) apache+win2003日志默认路径 D:\xampp\apache\logs\access.log D:\xampp\apache\logs\error.log (3) IIS6.0+win2003默认日志文件 C:\WINDOWS\system32\Logfiles (4) IIS7.0+win2003 默认日志文件 %SystemDrive%\inetpub\logs\LogFiles (5) nginx 日志文件 日志文件在用户安装目录logs目录下 以我的安装路径为例/usr/local/nginx, 那我的日志目录就是在/usr/local/nginx/logs里 6.3. 利用方式 使用浏览器访问特殊字符会被编码,可以使用curl避免特殊字符被编码,但是需要注意的是[ ]在curl是特殊符号,需要进行转义 ,不然curl使用时会报错
7.包含SSH log 日志 7.1. 利用条件 需要知道ssh-log的位置,且可读。默认情况下为 /var/log/auth.log 7.2. 利用方式 首先使用ssh连接
然后随意输入密码 最后结合文件包含漏洞即可利用 8.包含SESSION 8.1. 利用条件 找到Session内的可控变量 Session文件可读写,并且知道存储路径 php的session文件的保存路径可以在phpinfo的session.save_path看到 8.2. session常见存储路径
session文件格式:sess_[phpsessid] ,而 phpsessid 在发送的请求的 cookie 字段中可以看到 9.包含environ 利用条件: php以cgi方式运行,这样environ才会保持UA头。 environ文件存储位置已知,且environ文件可读。 姿势: /proc/self/environ中会保存user-agent头。如果在user-agent中插入php代码,则php代码会被写入到中。之后再包含它即可。 10.包含/proc/self/fd/[environreferer] apache的错误日志可能包含在/proc/self/fd/[envrionreferer],例如/proc/self/fd/2,/proc/self/fd/3,/proc/self/fd/10,可以使用burpsuite的测试器模块fuzz出该文件结构
11.包含临时文件 php中上传文件,会创建临时文件。在linux下使用/tmp目录,而在windows下使用c:\winsdows\temp目录。在临时文件被删除之前,利用竞争即可包含该临时文件。 由于包含需要知道包含的文件名。一种方法是进行暴力猜解,linux下使用的随机函数有缺陷,而window下只有65535中不同的文件名,所以这个方法是可行的。 另一种方法是配合phpinfo页面的php variables,可以直接获取到上传文件的存储路径和临时文件名,直接包含即可。这个方法可以参考LFI With PHPInfo Assistance 12.其他包含姿势 包含stmp日志 包含xss 包含上传文件 13.文件包含漏洞的绕过方法 13.1. 特定前缀绕过 13.1.1. 目录遍历 使用 …/…/ 来返回上一目录,被称为目录遍历(Path Traversal)。例如 ?file=…/…/phpinfo/phpinfo.php 13.1.2. 编码绕过 服务器端常常会对于…/等做一些过滤,可以用一些编码来进行绕过。 服务器端常常会对于…/等做一些过滤,可以用一些编码来进行绕过。 1.利用url编码
2.二次编码
13.2. 指定后缀绕过 13.2.1. query(?)
|
|
PHP知识库 最新文章 |
Laravel 下实现 Google 2fa 验证 |
UUCTF WP |
DASCTF10月 web |
XAMPP任意命令执行提升权限漏洞(CVE-2020- |
[GYCTF2020]Easyphp |
iwebsec靶场 代码执行关卡通关笔记 |
多个线程同步执行,多个线程依次执行,多个 |
php 没事记录下常用方法 (TP5.1) |
php之jwt |
2021-09-18 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/22 19:03:13- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |