| |
|
开发:
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_once(): require():若报错,比如文件不存在,则会直接退出 require_once(): 其余两个带once的函数和不带once的差不多,唯一的区别在****_once()函数会在导入文件前先检测该文件是否在该页面的其它部分被导入过,如果有的话就不会重复导入该文件。 当利用这四个函数来包含文件时,不管文件是什么类型(图片、txt等等),都会直接作为php文件进行解析。 例如:
在同目录下有个phpinfo.txt,其内容为
然后就可以直接解析phpinfo()。 漏洞利用场景具有相关的文件包含函数。 文件包含函数中存在动态变量,比如 攻击者能够控制该变量,比如 文件包含漏洞分类本地包含漏洞本地文件包含漏洞,顾名思义,指的是能打开并包含本地文件的漏洞。大部分情况下遇到的文件包含漏洞都是LFI。 这个漏洞不受
就可以访问phpinfo界面 RFI(Remote File Inclusion)漏洞远程文件包含漏洞。是指能够包含远程服务器上的文件并执行。由于远程服务器的文件是我们可控的,因此漏洞一旦存在危害性会很大。
两个配置选项均需要为On,才能远程包含文件成功。
若上面两个选项均是开启状态的话,那么在本地就会生成webshell.php 利用方式测试代码
php伪协议file://file://伪协议用于访问本地文件系统 利用条件: 对allow_url_include不做要求。 对allow_url_fopen不做要求。
php://input可以访问请求的原始数据的只读流。即可以直接读取到POST上没有经过解析的原始数据。?
注意:碰到 碰到
除此之外,通过实践我发现这个函数如果直接把字符串当作参数会报错,但如果包含的是http协议的网址,则会像 php://input(命令执行)利用条件: allow_url_include = On。 姿势:
php://input(写入木马)利用条件: allow_url_include = On。 对allow_url_fopen不做要求。 姿势:
php://filter元封装器,设计用于”数据流打开”时的”筛选过滤”应用,对本地磁盘文件进行读写。 利用条件: 对allow_url_include不做要求。 对allow_url_fopen不做要求。
通过指定末尾的文件,可以读取经Base64加密后的文件源码,之后再B ase64解码一下就行。虽然不能直接获取到shell等,但能读取敏感文件危害也是挺大的。 phar://这个就是php解压缩包的一个伪协议,不管后缀是什么,都会当做压缩包来解压。 利用条件: php版本大于等于php5.3.0 对allow_url_include不做要求。 对allow_url_fopen不做要求。 利用方式: 写一个文件phpinfo.php,其内容为 指定绝对路径:
指定相对路径:
注意:其中 phar://(命令执行)利用条件: php版本大于等于php5.3.0 对allow_url_include不做要求。 对allow_url_fopen不做要求。 姿势: 同 phar://(写入木马)利用条件: php版本大于等于php5.3.0 对allow_url_include不做要求。 对allow_url_fopen不做要求。 姿势: 写一个木马shell.php,其内容为 zip://这个协议和phar协议查不懂,但是用法不一样 不同的有以下几点 1.只能使用绝对路径 2.使用zip伪协议,需要指定绝对路径,而且压缩包文件和压缩包内的文件之间得用 data://数据流封装器,和 利用条件: php版本大于等于php5.2 allow_url_fopen = On allow_url_include = On 方式一:
方式二:
其中 data://(写入木马)利用条件: php版本大于等于php5.2 allow_url_fopen = On allow_url_include = On 方式一:
方式二:
防御方案对可以包含的文件进行限制,可以采用白名单的方式,或设置可以包含的目录。 对危险字符进行过滤,比如过滤 尽量将allow_url_fopen和allow_url_include配置为off,不过像有些伪协议还是能使用,不过能尽量off还是off吧。 尽量不使用动态包含等等 参考资料----奇安信安全社区 |
|
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年12日历 | -2024/12/27 5:12:47- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |
数据统计 |