01.文件包含漏洞
本文最后更新于521 天前,其中的信息可能已经过时,如有错误请发送邮件到big_fw@foxmail.com

一、什么是文件包含

在程序员开发过程中,通常会把可重复使用的函数写到单个文件中,在使用某些函数时,直接调用此文件,无需在此编写,这种调用文件的过程一般被称为文件包含。

二、文件包含漏洞原理

随着网站业务的需求,程序开发人员一般希望代码更灵活,所以将被包含的文件设置为变量,用来进行动态调用,但是正是这种灵活性通过动态变量的方式引入需要包含的文件时,用户对这个变量可控而且服务端又没有做合理的校检或者校检被绕过就造成了文件包含漏洞。

漏洞成因分析

我们先直接来看一个简单的例子,网页代码如下:
<?php
include $_GET[‘test’];
?>
创再建一个phpinfo.php页面,代码如下:
<?php
phpinfo();
?>

利用文件包含,我们通过include函数来执行phpinfo.php页面,成功解析

Pasted image 20241114223641.png

将phpinfo.php文件后缀改为txt后进行访问,依然可以解析:
Pasted image 20241114223707.png

将phpinfo.php文件后缀改为jpg格式,也可以解析:
Pasted image 20241114223757.png

可以看出,include()函数并不在意被包含的文件是什么类型,只要有php代码,都会被解析出来。
我们上传了一个jpg格式的一句话木马,如果网站有文件包含漏洞,==jpg文件就可以被当做php文件解析==,所以这就是文件上传漏洞通常配合文件上传使用。

现在我们将phpinfo.jpg的内容改成一段文字:hello world!
再次进行访问,可以读出文本内容
Pasted image 20241114224048.png

利用这个特性,我们可以读取一下包含敏感信息的文件。

三、常见的文件包含函数

1、include()

当使用该函数包含文件时,只有代码执行到include()函数时才将文件包含进来,发生错误时之给出一个警告,然后继续向下执行。

2、include_once()

功能和include()相同,区别在于当重复调用同一文件时,程序只调用一次

3、require()

Require()与include()的区别在于require()执行如果发生错误,函数会输出错误信息,并终止脚本的运行。

4、require_once()

功能与require()相同,区别在于当重复调用同一文件时,程序只调用一次。

5、highlight_file()、show_source()

函数对文件进行语法高亮显示,通常能看到源代码

6、readfile()、file_get_contents()、

函数读取一个文件,并写入到输出缓冲

7、fopen()

打开一个文件或者url

几乎所以的脚本语言中都提供文件包含的功能,但文件包含漏洞在PHP中居多,而在JSP\ASP\ASP.NET程序中非常少,甚至没有文件包含漏洞的存在。

四、文件包含漏洞分类

1、本地文件包含:

当被包含的文件在服务器本地时,就形成的本地文件包含漏洞。

漏洞的环境代码:

<?php
file=_GET[‘file’];
include($file);
?>

网站利用文件包含功能读取一些php文件,例如phpinfo:

Pasted image 20241114230254.png

利用该代码,我们可以读取一些系统本地的敏感信息。
例如:C:\Windows\system.ini文件。
1)使用绝对路径
使用绝对路径直接读取:
Pasted image 20241114230407.png

2)使用相对路径进行读取
通过./表示当前位置路径,…/表示上一级路径位置,在linux中同样适用。

例如当前页面所在路径为C:\Apache24\htdocs\,我们需要使用…/退到C盘再进行访问,构造路径如下:
../../windows/system.ini

2、远程文件包含漏洞:

本地文件包含和远程文件包含造成漏洞的原因是一样的,当php.ini 中的配
置选项allow_url_fopen和allow_url_include为ON的话,则包含的文件可以
是第三方服务器中的文件,这样就形成了远程文件包含漏洞。

远程文件包含条件:

需要满足两个条件在php.ini中。当php.ini 中的配置选项  allow_url_fopen:on
  allow_url_include:on

kali里本地编写远程木马文件

Pasted image 20241115111140.png

Pasted image 20241115111046.png

Pasted image 20241115111103.png

Pasted image 20241115110713.png

引入其他网站
Pasted image 20241115110815.png

测试链接
Pasted image 20241115110855.png

文末附加内容
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇