文件包含漏洞:一场网络安全的“谍影重重”?

文件包含漏洞:一场网络安全的“谍影重重”?

龙哥网络安全 龙哥网络安全 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. 绝对路径:
 直接指明文件位置,简单粗暴。

  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
)。

  1. 利用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编码)

六、文件包含漏洞的“防火墙”:安全措施,一个都不能少

  1. 过滤危险字符:
     使用str_replace
    等方法,过滤掉../
    、http://
    等危险字符。

  2. 配置open_basedir:
     将PHP所能打开的文件限制在指定的目录树中,防止目录遍历。

  3. 升级PHP版本:
     防止%00
    截断。

  4. 重命名上传的文件:
     防止被恶意读取。

  5. 设置白名单:
     对于动态包含的文件,只读取白名单中的文件。

  6. 最小权限化:
     做好管理员权限划分,做好文件的权限管理,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