文件包含漏洞:一场网络安全的“谍影重重”?
文件包含漏洞:一场网络安全的“谍影重重”?
龙哥网络安全 龙哥网络安全 2025-05-25 09:00
一、文件包含漏洞:不止是“偷梁换柱”那么简单
说起网络安全漏洞,文件包含绝对算得上一个“老油条”。但你以为它只是简单地把恶意代码塞进服务器?Too naive!这玩意儿,本质上就是一场精心策划的“谍战”,黑客通过控制输入,让服务器乖乖执行ta的“秘密指令”。
就像PHP里常用的include()
、require()
,本意是为了代码复用,结果一不小心就成了黑客的“后门”。区别?require()
找不到文件直接撂挑子不干,include()
则会睁一只眼闭一只眼,继续执行。但无论哪个,都可能引狼入室。
举个栗子:
<?php include $_GET['test']; ?>
这段代码看似人畜无害,实际上却暗藏杀机。黑客只需在URL里动点手脚,就能让服务器执行任意PHP文件。
更骚的是:
就算你把PHP文件改成.txt
、.jpg
,照样防不住!include()
函数可不管你文件类型,只要里面有PHP代码,它就敢解析。所以,那些以为把木马藏在图片里就万事大吉的,醒醒吧!
所以说,文件包含漏洞,是文件上传漏洞的最佳拍档!
二、本地文件包含(LFI):黑客的“顺手牵羊”
LFI,顾名思义,就是能“顺走”服务器本地文件的漏洞。
看这段代码:
<?php $file = $_GET['filename']; include($file); ?>
有了它,黑客就能像逛自家后花园一样,读取服务器上的各种敏感文件。
怎么玩?
1. 绝对路径:
直接指明文件位置,简单粗暴。
- 相对路径:
通过./
、../
等符号,在目录间穿梭,技术含量稍高。
黑客最爱“光顾”的地方:
– Windows:
– C:oot.ini
:系统版本信息,知己知彼。
-
C:windowssystem32inetsrvMetaBase.xml
:IIS配置文件,服务器的“命门”。 -
C:ProgramFilesmysqlmy.ini
:MySQL配置,数据库密码可能就在里面。 -
Linux/Unix:
-
/etc/password
、/etc/shadow
:用户账户信息,直接关系到服务器控制权。 -
/etc/httpd/conf/httpd.conf
:Apache配置文件,网站的“骨架”。 -
/etc/my.conf
:MySQL配置文件,同上。
三、LFI的“花式”利用:黑客的工具箱
1. 文件上传 + LFI:双剑合璧,天下无敌?
如果找不到文件上传漏洞?没关系,先上传一个“图片马”,再用LFI来解析它。
步骤:
1. 上传一个包含恶意代码的图片文件(例如webshell.jpg
)。
- 利用LFI漏洞,让服务器执行这个图片文件里的PHP代码。
注意:
为了避免“水土不服”,最好先用图片马生成一个.php
文件,再连接它。
2. 包含Apache日志:从“蛛丝马迹”中寻找突破口
没有文件上传点?那就利用Apache的日志文件!
前提:
– 日志文件可读。
- 知道日志文件存储目录。
原理:
Apache会将用户的请求写入access.log
,错误信息写入error.log
。我们可以通过构造特殊的请求,将恶意代码写入日志文件,再用LFI来执行它。
例如:
访问http://127.0.0.1/
,虽然网页会显示403,但恶意代码已经被写入access.log
。
坑:
– 日志存储目录可能会被修改。
- 日志记录的信息可能会被编码。
3. 包含Session文件:控制变量,操纵全局?
先尝试包含Session文件,再根据文件内容寻找可控变量,构造payload插入到文件中,最后包含即可。
条件:
– 找到Session内的可控变量。
- Session文件可读写,并且知道存储路径。
Session文件存储路径:
– /var/lib/php/sess_PHPSESSID
– /tmp/sess_PHPSESSID
注意:PHPSESSID
可以在Cookie字段中找到。
4. 包含临时文件:与时间赛跑的艺术
PHP上传文件时会创建临时文件,在临时文件被删除前,可以利用时间竞争的方式包含该临时文件。
临时文件存储路径:
– Linux:/tmp
- Windows:C:windows emp
难点:
需要知道临时文件名。
解决方案:
– 暴力猜解(Windows下可行)。
- 利用phpinfo()
页面获取上传文件的存储路径和临时文件名。
四、远程文件包含(RFI):当“引狼入室”变成“远程操控”
如果PHP的配置选项allow_url_include
、allow_url_fopen
状态为ON,那么include/require
函数就可以加载远程文件,这就是RFI。
风险:
黑客可以直接控制服务器执行远程的恶意代码。
绕过:
如果PHP版本小于5.3.4,可以使用%00
截断。或者使用?
号截断。
五、PHP伪协议:黑客的“障眼法”
PHP内置了很多URL风格的封装协议,可以用于文件系统函数。
1. file://协议:读取本地文件的“万能钥匙”
不受allow_url_fopen
与allow_url_include
的影响,可以直接读取本地文件。
用法:
file://[文件的绝对路径和文件名]
2. php://协议:读取源码、执行代码的“瑞士军刀”
-
php://filter
:读取源代码并进行base64编码输出。 -
php://input
:执行php代码。
用法:
– php://filter/convert.base64-encode/resource=文件路径
– file=php://input
(配合POST请求)
3. ZIP://协议:解压即执行?
可以访问压缩包里面的文件,当它与包含函数结合时,zip://
流会被当作php文件执行。
用法:
zip://[压缩包绝对路径]#[压缩包内文件]
(注意#
要URL编码成%23
)
4. data://协议:直接控制输入流
与php://input
类似,可以让用户来控制输入流,当它与包含函数结合时,用户输入的data://
流会被当作php文件执行。
用法:
– data://text/plain,
– data://text/plain;base64,PD9waHAgcGhwaW5mbygpPz4=
(base64编码)
六、文件包含漏洞的“防火墙”:安全措施,一个都不能少
-
过滤危险字符:
使用str_replace
等方法,过滤掉../
、http://
等危险字符。 -
配置open_basedir:
将PHP所能打开的文件限制在指定的目录树中,防止目录遍历。 -
升级PHP版本:
防止%00
截断。 -
重命名上传的文件:
防止被恶意读取。 -
设置白名单:
对于动态包含的文件,只读取白名单中的文件。 -
最小权限化:
做好管理员权限划分,做好文件的权限管理,allow_url_include
和allow_url_fopen
最小权限化。
总而言之,文件包含漏洞就像一个“潘多拉魔盒”,一旦被打开,后果不堪设想。只有时刻保持警惕,采取有效的防御措施,才能避免成为黑客的“猎物”。
“`
黑客/网络安全学习包
– 黑客/网络安全学习包
资料目录
282G
《网络安全/黑客技术入门学习大礼包
》,可以扫描下方二维码免费领取
!
1.成长路线图&学习规划
要学习一门新的技术,作为新手一定要先学习成长路线图
,方向不对,努力白费
。
对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图&学习规划。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。
2.视频教程
网上虽然也有很多的学习资源,但基本上都残缺不全的,这是
我们和网安大厂360共同研发的网安视频教程,之前都是
内部资源,专业方面绝对可以秒杀国内99%的机构和个人教学!
全网独一份,你不可能在网上找到这么专业的教程。
内容涵盖了入门必备的操作系统、计算机网络和编程语言等初级知识,而且包含了中级的各种渗透技术,并且还有后期的CTF对抗、区块链安全等高阶技术。
总共200多节视频,200多G的资源,不用担心学不全。
3.SRC&黑客文籍
大家最喜欢也是最关心的
SRC技术文籍&黑客技术
也有收录
SRC技术文籍:
黑客资料由于是敏感资源,这里不能直接展示哦!
4.护网行动资料
其中关于
HW护网行动,也准备了对应的资料,这些内容可相当于比赛的金手指!
5.黑客必读书单
6.面试题合集
当你自学到这里,你就要开始
思考找工作
的事情了,而工作绕不开的就是
真题和面试题。
更多内容为防止和谐,可以扫描获取~
朋友们需要全套共
282G
的《网络安全/黑客技术入门学习大礼包
》,可以扫描下方二维码免费领取
!
END