文件包含漏洞是指由于应用程序在包含文件时,没有对包含文件的路径和内容进行严格的验证和过滤,导致攻击者可以利用这个机制,让服务器包含并执行非预期的文件。
(1)include()
在执行到该函数时,它会尝试将指定的文件包含进来并执行其中的代码。如果文件不存在,它会产生一个警告,但脚本会继续执行。
(2)require()
和 include () 类似,但如果指定的文件不存在,它会产生一个报错,脚本会停止执行。
(3)include_once()
和 include () 功能基本相同,但它会检查文件是否已经被包含过。如果已经包含过,就不会再次包含,避免了重复包含可能导致的问题,如函数重定义等。
(4)require_once()
结合了 require () 和 include_once () 的特点。如果文件不存在,会产生错误使脚本停止执行,并且会检查文件是否已经被包含过,避免重复包含。
(1)本地文件包含漏洞
本地文件包含漏洞是指攻击者能够利用应用程序中的文件包含功能,去包含服务器本地文件系统中的文件。
(2)远程文件包含漏洞
远程文件包含漏洞是指攻击者可以让应用程序包含一个远程服务器上的文件。这要求服务器配置允许包含远程文件,并且应用程序没有对文件包含参数进行严格的限制。
在 PHP 中,allow_url_fopen和allow_url_include这两个选项通常需要同时开启才可能出现远程文件包含漏洞。
查看正常功能,发现是filename控制文件路径
把file1改为file6发现了用户名密码,也可以用Burp的Intrude模块爆破
尝试输入../../../../../../Windows/win.ini,可以查看win.ini的内容,当然也可以查看其他本地文件
提示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,可以看到已经包含了这个远程文件
亲爱的朋友,若你觉得文章不错,请点击关注。你的关注是笔者创作的最大动力,感谢有你!
原文始发于微信公众号(菜根网络安全杂谈):文件包含漏洞等你来看
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论