pikachu通关记之本地文件包含 远程文件包含 不安全文件下载

"""本人网安小白,此贴仅作为记录我个人测试的思路、总结以便后期复习;今后本着少就是多,慢就是快的方式一步一个脚印进行学习,把这个知识点学扎实了,再学另外一个知识点。费曼教授是不是曾经说过以教代学是最好的学习方式?有很多错点可圈可指,所以也请dalao指出不对的地方,所谓教他人的时候也是在稳固自身"""

未做严格排版,后面有时间了再来整理整理

目录

一、文件上传

1、client check

2、MIME type

3、getimagesize

二、文件包含

1、本地文件包含

2、远程文件包含

三、不安全的文件下载


Ps:靶机链接:https://blog.csdn.net/qq_35258210/article/details/112465795

一、文件上传

1、client check

首先这里上传小马,后缀名不能是脚本后缀名,我们先改为.jpg,选中打开,添加完成后,打开bp抓包

pikachu通关记之本地文件包含 远程文件包含 不安全文件下载_第1张图片

开启抓包后点击开始上传,这时抓到包,可以看到上传文件名,我们把.jpg去掉,完成绕过前端验证,因为后端没做严格验证所以上传上去了,之后用蚁剑或者菜刀连接都可以

pikachu通关记之本地文件包含 远程文件包含 不安全文件下载_第2张图片

2、MIME type

这里选择上没有对后缀名进行过滤,但是点击上传时提示我们只能上传那几个后缀的文件,这时我们要开启抓包再点击上传

pikachu通关记之本地文件包含 远程文件包含 不安全文件下载_第3张图片

把Content-Type的值改为image/jpeg

pikachu通关记之本地文件包含 远程文件包含 不安全文件下载_第4张图片

pikachu通关记之本地文件包含 远程文件包含 不安全文件下载_第5张图片

3、getimagesize

getimagesize() 函数用于获取图像大小及相关信息,成功返回一个数组,失败则返回 FALSE 并产生一条 E_WARNING 级的错误信息。

先生成一个图片ma,copy /b 原图片+一句话小ma 文件名

copy /b 使用二进制的格式进行拷贝生成

pikachu通关记之本地文件包含 远程文件包含 不安全文件下载_第6张图片

点击浏览找到我们刚才生成的小ma图片

pikachu通关记之本地文件包含 远程文件包含 不安全文件下载_第7张图片

可以看到我们的shell.jpg成功上传了,之后不后端在保存的时候重命名了我们的文件

pikachu通关记之本地文件包含 远程文件包含 不安全文件下载_第8张图片

我这里因为源码问题上传的时候给我报错了,并没有显示上传目标路径,但的确上传了,证明了该方法能成功绕过getimagesize函数就行

pikachu通关记之本地文件包含 远程文件包含 不安全文件下载_第9张图片

这里上传是上传了,但是使用蚁剑连接是因为后缀是jpg,连接的时候返回null,我把文件后缀改为php就连接成功了也可以访问文件夹,但是如果要这样修改文件名后缀的话,很难办呀

pikachu通关记之本地文件包含 远程文件包含 不安全文件下载_第10张图片

后来我找了种利用方法,配合文件包含使用,因为这个小ma图片已经是在服务端本地了,所以我们直接配合本地文件包含利用,这里因为我上传的图片是只有单单一句话小ma的图片,配合本地文件包含也利用不了,那我重新上传一个phpinfo代码的

pikachu通关记之本地文件包含 远程文件包含 不安全文件下载_第11张图片

pikachu通关记之本地文件包含 远程文件包含 不安全文件下载_第12张图片

phpinfo合成的图片文件

pikachu通关记之本地文件包含 远程文件包含 不安全文件下载_第13张图片

pikachu通关记之本地文件包含 远程文件包含 不安全文件下载_第14张图片

这里需要注意的是,路径必须是4个../../../../ ,这个多一个不行少一个不行,可以看到我们的phpinfo函数执行了

pikachu通关记之本地文件包含 远程文件包含 不安全文件下载_第15张图片

二、文件包含

1、include 可以包含多次,如果包含文件不存在则提示警告,并继续执行脚本

2、includde_once 只能包含一次,多余的不执行

3、require 可以包含多次,如果包含文件不存在则提示警告、错误,并停止执行

4、require_once 只能包含一次

查看是否开启文件包含功能

本地php运行版本下的php.ini

找到下面的allow...

第一个选项 on是开启本地文件包含,off是关闭,但是据说 on和off都不法控制本地文件包含

第二个是on的时候是可以使用远程文件包含,off是不可以

pikachu通关记之本地文件包含 远程文件包含 不安全文件下载_第16张图片

/***************************************************************************************************************************************************

Ps:下面这些内容是我学习的时候看视频文字识别贴上来的

漏洞原理:

文件包含是程序设计的基础功能之一,能够减少代码量,提高开发效率。但是使用文件包含功能时,有类似于以_上测试代码的设计,实现了动态包含,就有产生文件包含漏洞的风险。如果实现动态包含的 参数,Web应用没有进行严格净化,客户端.用户可以影响或控制文件包含的路径,就会产生文件包含漏洞。

特点:

PHP提供的文件包含功能非常强大,有以下特点

@ 无视文件扩展名读取文件

包含文件时,PHP会读取文件的源码,包括图片文件。尝试包含图片,连接为 [http://IP地址/fileInclude/fileinclude.php?path=图片路径] 我们发现打开图片不是图像,而是图片的源码。

@ 无条件解析PHP 代码

文件包含在读取文件源码的同时,如果遇到符合PHP 语法规范的代码,就会无条件执行。例如,将info.php的后缀名改成info.rar,依然能够显示phpinfo()信息。

包含图片马写shell

");?>

文件包含漏洞利用

1、读取敏感文件

2、直接包含图片ma

3、包含木马写shell

4、封装协议--访问本地文件

5、封装协议--传输PHP文件

6、封装协议--执行php命令

php:// php伪协议

***************************************************************************************************************************************/

1、本地文件包含

先在服务器本地新建个php文件:

1.php文件下的代码:

C:\WWW\pikachu-master\vul\fileinclude\include

pikachu通关记之本地文件包含 远程文件包含 不安全文件下载_第17张图片

下拉菜单选择查询是正常使用的,但是我们在本地新建了个php文件是不是可以通过参数的形式传递进去呢?

pikachu通关记之本地文件包含 远程文件包含 不安全文件下载_第18张图片

把上图标记的参数改为我们在服务器端新建的php文件,1.php

pikachu通关记之本地文件包含 远程文件包含 不安全文件下载_第19张图片

因为后端php代码里使用了include包含了一个动态变量,这会产生文件包含漏洞

2、远程文件包含

我们要把第二个选项设置为on,设置完后必须要重启phpStudy

pikachu通关记之本地文件包含 远程文件包含 不安全文件下载_第20张图片

pikachu通关记之本地文件包含 远程文件包含 不安全文件下载_第21张图片

再刷新页面就可以看到已经修改完毕了

pikachu通关记之本地文件包含 远程文件包含 不安全文件下载_第22张图片

在自己客户机上新建一个php文件代码如下图

pikachu通关记之本地文件包含 远程文件包含 不安全文件下载_第23张图片

代码意思是服务器端新建一个shell.php文件并赋予可写权限,再把 一句话小ma写到当前文件并关闭文件

没上传文件前服务器的这个目录下的文件

pikachu通关记之本地文件包含 远程文件包含 不安全文件下载_第24张图片

因为我的攻击机没搭建服务器环境所以使用服务器端上传到服务器端,效果是一样的

pikachu通关记之本地文件包含 远程文件包含 不安全文件下载_第25张图片

执行完后,页面一点感觉都没有,但我们的2.txt成功执行并在服务器端写了一个shell.php脚本。ps:刚开始的时候在上面那个路径折腾了很久,一直上传不了,原来是上图传递的参数路径错了!!!

pikachu通关记之本地文件包含 远程文件包含 不安全文件下载_第26张图片

参数传递后文件上传成功并执行脚本,这页面一点反应一点感觉都没有!

pikachu通关记之本地文件包含 远程文件包含 不安全文件下载_第27张图片

这个时候就可以使用蚁剑连接了

pikachu通关记之本地文件包含 远程文件包含 不安全文件下载_第28张图片

三、不安全的文件下载

首页是这样的,点击图片下面的文字会提示是否下载。我们先打开bp开启抓包后,随便点击一张图片下的文字

pikachu通关记之本地文件包含 远程文件包含 不安全文件下载_第29张图片

pikachu通关记之本地文件包含 远程文件包含 不安全文件下载_第30张图片

抓到了包甩到repeater模块,进行下一步测试。为了测试我在服务端c盘下创建了一个112.txt文件

pikachu通关记之本地文件包含 远程文件包含 不安全文件下载_第31张图片

把抓到的包,filename的值改为../../../../../../ 多加几个,为了确保我们抵达了根目录

pikachu通关记之本地文件包含 远程文件包含 不安全文件下载_第32张图片

点击Go之后,http响应码200 ok,这时我们把我们构造的路径copy到proxy

pikachu通关记之本地文件包含 远程文件包含 不安全文件下载_第33张图片

把修改后的请求头发送给服务器

pikachu通关记之本地文件包含 远程文件包含 不安全文件下载_第34张图片

pikachu通关记之本地文件包含 远程文件包含 不安全文件下载_第35张图片

成功下载服务器端的未授权文件

pikachu通关记之本地文件包含 远程文件包含 不安全文件下载_第36张图片

源码里只是判断了我们要下载的文件是否在download目录下,如果不在该目录下就提示文件不存在。并没有做过多的验证,这很危险,只要出现这样的漏洞我们就可以下载服务端上的任意文件了。知道路径、文件名前提下

pikachu通关记之本地文件包含 远程文件包含 不安全文件下载_第37张图片

 

 

 

 

 

 

 

 

你可能感兴趣的:(pikachu靶场练习,安全漏洞,网络安全,后端,无监督学习,服务器)