深入解析文件包含漏洞:从脚本代码到CTF实例的全面指南
网络安全中,文件漏洞这种东西让人既喜欢又讨厌,用它巧妙地可以挖掘出不少秘密,但若是被恶意使用,网站就会面临风险。接下来,我会详细介绍它的实战应用和操作技巧。
文件包含各个脚本代码。
ASP,ASPX,JSP,PHP等
(1)创建一个名为include.php的php文件,文件内的代码如下图所示。
跨目录文件包含基础
(2)创建一个名为1.txt的文件,文件内的内容如下图所示。
在进行不同目录间的文件查找时,“/”这个符号极为关键。它相当于一个“捷径”,能帮助我们轻松回到上级目录。例如,若想在某个系统中浏览上级目录下的文件,就必须借助它来改变文件路径,否则很难找到所需的文件。
(4)但是如果我们直接访问1.txt文件,网站就只会将其当作一串文本进行输入。而当我们利用了文件包含漏洞进行访问时,网站就会将其当作代码进行执行。
总结:将指定文件内的内容以网站脚本代码类型进行执行。如:如果网站是php的,就当作php代码进行执行;如果网站是jsp的,就当作jsp代码进行执行;
在实际项目操作中,若在多层目录中进行开发且需要引用文件,使用“…/”路径可以有效锁定并引入目标文件,这显著提升了开发的速度。
(1)可空变量:$filename。
(2)漏洞函数:include()。
URL访问与内容识别
(1)白盒检测:代码审计。
(2)黑盒检测:采用漏洞扫描工具,或者搜素公开漏洞,或者查看网址后面的参数,是否接收的是文件。
访问指定网址,可以查阅文件中的特定信息。例如,输入正确的网址,文件会展示一系列数据。这些数据有时经过base64编码处理,目的是避免出现乱码现象。
(1)本地包含:只包含本地的文件。
(2)远程包含:包含互联网可以访问到的文件,危害更大。
(3)无限制和有限制:两种包含类型都存在无限制和有限制的两种情况,无限制就是没有限制直接拿来用就可以,有限制是可能会存在一些干扰,需要用到一些特殊的方法进行绕过。
我之前在项目里遇到过这种情况,读取的文件内容全是乱码,根本无法辨认。后来经过一番查找,才发现这些内容其实已经被base64加密了。解密之后,内容立刻变得清晰可见,这对我们深入分析文件非常有帮助。
文件包含漏洞判断
只需在文件末尾添加“”来将后面的“.html”进行截断。
可以看到下图进行截断后成功将文件中的代码进行了执行。
要识别文件中是否存在漏洞,需关注参数设置。例如,某些网址的参数部分以“file=show.php”结尾,这通常表明它是文件参数,暗示可能存在文件包含的安全风险。
这种方法类似与waf绕过过程中的垃圾数据填充的方法。
利用垃圾数据进行填充,达到对应服务器系统文件命名的最大长度,从而将“.html”挤出,让其无法添加。
只需在文件末尾添加类似“/./././././././.·····”、“..........·····”等的垃圾数据来将后面的“.html”挤出。
可以看到下图进行长度截断后成功将文件中的代码进行了执行。
直接查阅show.php文件,若网站响应内容一致,那么就可以进一步确认。这就像追踪线索,凭借这些信息,我们可以推断出网站是否含有文件包含的缺陷。
命令执行与协议玩法
如果代码里面有限制只能包含本地文件的话,就不会造成远程文件包含漏洞。
如果代码里面没有限制,并且搭建平台上的设置里也没有设置不允许包含远程远程文件的话,就可能造成远程包含文件漏洞。
在php里就有这样一个开关——allow_url_include。可以通过phpinfo()来查看到。
输入特定内容于参数之后,在post区域编写所需运行的代码,便能执行相应操作。例如,运行Linux系统的ls指令,网页将展示相应的输出结果。
若该方法无效,不妨尝试另一种协议玩法。例如,可以尝试读取index.php文件,或许能如愿以偿。曾有一次,常规方法遭遇障碍,改用协议玩法后,成功获取了重要文件。
如果这个开关是开启状态,就允许地址的远程请求。
搜索CMS漏洞
若了解ekucms,便可在网络中查找其存在的缺陷。若已有现成的缺陷可供利用,便直接使用;若没有,则需下载原始代码自行研究。
有人发现了相关资料,指出该内容管理系统没有文件上传功能,只能读取现有文件。然而,它存在一个本地文件的安全缺陷。通过这个漏洞,可以将一句话型的木马程序植入网站日志中。接着,利用这个缺陷来包含日志文件,并使用类似菜刀的工具进行连接。这相当于找到了打开网站大门的钥匙。
最终权限获取
尝试进行某些操作时,网页可能会显示错误提示,然而此时URL信息可能已被记录在网站的日志之中。这样一来,基本上就可以任意运行代码,进而成功获取网站的访问权限。
我以前负责过一个项目,通过不断试验和发现漏洞,我们成功获得了网站的管理权限,确保了网站的安全。
在实际操作中,大家是否遇到过特别棘手的文件漏洞判断问题?若觉得这篇文章对您有所帮助,不妨点赞并转发一下!