文件包含的基本操作
01、文件包含漏洞基础
漏洞成因:
文件包含加载的参数没有经过过滤或严格定义,可以被用户控制,包含其他可以文件,导致执行非预期代码
php中文件包含函数:
01、include:
include:函数出现错误时,会抛出一个告警,程序就像运行。
include_once:函数出现错误是会抛出告警,且仅包含一次。
02、require:
require:函数出现错误时,会直接报错并退出程序。
require_once:出错时直接退出;且仅包含一次。在脚本执行期间同一个文件可能被多次引用,确保只包含一次以避免函数重定义,变量重新赋值等问题。
02、文件包含漏洞类型及利用
01、本地文件包含:
被包含的文件在服务器本地
利用方式:
包含本地敏感文件、包含上传文件
注:包含文件的内容只要符合php语法都能被当成拍黄片代码进行解析,与文件后缀名无关
系统敏感文件目录: |
|
windows系统: |
Linux系统 |
#查看系统版本 |
#账户信息 /etc/passwd |
#IIS配置文件 C:\windows\system32\inetsrv\MetaBase.xml |
#账户密码文件 /etc/shadow |
#MySQL配置 C:\ProgramFiles\mysql\my.ini |
#Apache2默认配置文件 /usr/local/app/apache2/conf/httpd.comf |
#MySQL root密码 C:\ProgramFiles\mysql\data\mysql\user.MYD |
#虚拟网站配置 /usr/local/app/apache2/conf/extra/httpd-vhost.conf |
#PHP配置信息 C:\windows\php.ini |
#PHP配置文件 /usr/local/app/php5/lib/php.ini |
#Apache配置文件 /usr/local/app/confhttpd.conf |
|
#MySQL配置文件 /etc/my.conf |
02、远程文件包含:
被包含的文件在远程服务端
利用方式:
包含攻击者指定远程url文件
条件:php.ini 中设置 allow_url_ofpen = On (默认)、allow_url_include = On (php5.2 后默认为 off)
03、文件包含漏洞的进阶利用
本地文件包含之配合日志文件还可以配合session 文件进行包含(详见CVE-2018-12613phpMyAdmin 文件包含漏洞)
01、配合PHP协议:
file:// 协议(通常用来读取本地文件,需要文件绝对路径)
file:///C:/windows/win.ini
条件:allow_url_fopen=off、allow_url_include=off
php://filter协议
主要用来查看源码。直接包含php文件时会被解析,不能看到源码,所以用filter来读取敏感文件,但是需要base64加密传输
例:?id=php://filter/convert.base64-encode/resource=flag.php
php://filter协议在双off的情况下也可以正常使用
php://input协议
主要用来接收 post 数据,将 post 请求中的数据作为 php 代码执行
条件:allow_url_fopen=off、allow_url_include=On
zip://、zlib://、bzip://协议
zip://、bzip2://、zlib:// 协议在双 off 的情况下也可以正常使用,;都属于压缩流,可以访问压缩文件中的子文件。
格式: zip://[压缩文件绝对路径]#[压缩文件内的文件名]
phar://协议
类似于 zip 协议,但是可以使用相对路径。
格式:phar://[压缩文件绝对/相对路径]/[压缩文件内的子文件名]
data:// 协议
将代码冲共享到一个未命名的文本文件中,然后包含这个文本文件。
条件:必须在双 On 的情况下才能正常使用
协议总结:
04、如何防御文件包含漏洞
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· 单线程的Redis速度为什么快?
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码