pikachu之文件包含漏洞

pikachu之文件包含漏洞

一、神魔是文件包含?

​ 在web后台开发中,程序员往往为了提高效率以及让代码看起来更加简洁,会使用“包含”函数功能。比如把一系列功能函数都写进fuction.php中,之后当某个文件需要调用的时候就直接在文件头中写上一句<?php include fuction.php?>就可以调用函数代码。

文件包含漏洞:

有时候因为网站需求,会让前端用户选择需要包含的文件(或者在前端的功能中使用了“包含”功能),又由于开发人员没有对包含的这个文件进行安全考虑,就导致攻击者可以通过修改包含文件的位置来让后台执行任意文件(代码)。

分类:

本地文件包含漏洞:攻击者通过传入后端服务器固定的配置文件让包含函数去执行,从而使本地的一些配置文件信息被暴露出去。

远程文件包含漏洞:读取远程的php文件加载到本地去执行。

二、包含函数

通过include()或require()语句,可以将PHP文件的内容插入另一个PHP文件(在服务器执行它之前)

include和require语句是相同的,除了错误处理方面:

  • require会生成致命错误(E_COMPILE_ERROR)并停止脚本。
  • include只生成警告(E_WARNING),并且脚本会继续。

三、靶场测试

1、File Inclusion(local)

image-20210212195223841

如图,url中通过提交文件名的方式,进行执行并返回

所以我们尝试用目录切换的方式执行一些系统的固定配置文件,从而获取一些敏感信息。

尝试替换url中的文件名:…/…/…/…/…/…/…/etc/passwd

如果是windows,替换为:…\…\…\…\…\…\…\Windows\System32\config\test

image-20210212201209749

2、File Inclusion(remote)

为搭建符合条件的测试环境,需要更改php.ini文件

vim /etc/php/7.4/apache2/php.ini

image-20210213192407856

然后重启apache2 service apache2 restart

搭建一个站点,编写一个txt文件http://192.168.31.212/pikachu/vul/fileinclude/fi_remote_exp.txt

该txt文件是一句话木马,文件被远程包含后将会运行该木马,获取shell

---------------------------------------fi_remote_exp.txt

image-20210213233233233

image-20210213193418366

将参数替换为远程文件的路径后,并在后面追加x参数,如ifconfig,则后台将会执行该命令,并将结果返回:

image-20210213233727799

四、防范措施

  • 在功能设计上尽量不要将文件包含函数对应的文件放给前端进行选择和操作(文件操作不放前端)。

  • 若一定要在前端操作,那就要过滤各种例如…/…/,http://,https://等目录切换或远程调用的特殊字符(过滤危险字符)。

  • 配置php.ini文件

    allow_url_fopen = off

    Allow_url_include = off

    magic_quotes_gpc = on //在一些旧的版本

  • 通过白名单策略,仅允许包含运行指定的文件,其他的都禁止(白名单策略)。

  • 如果php配置了open_basedir则会包含失败,不过一个大佬写了绕过措施

  • 尽量不适用动态包含。

猜你喜欢

转载自blog.csdn.net/qq_43665434/article/details/113804884