Pikachu系列——文件下载与上传

Pikachu靶场系列持续更新~

 
要像追剧追番一样追下去哦
 

实验七 —— 文件下载与上传

文件下载概述

文件下载功能在很多web系统上都会出现,一般我们当点击下载链接,便会向后台发送一个下载请求,一般这个请求会包含一个需要下载的文件名称,后台在收到请求后会开始执行下载代码,将该文件名对应的文件response给浏览器,从而完成下载。

如果后台在收到请求的文件名后,将其直接拼进下载文件的路径中而不对其进行安全判断的话,则可能会引发不安全的文件下载漏洞。此时如果攻击者提交的不是一个程序预期的的文件名,而是一个精心构造的路径(比如…/…/…/etc/passwd),则很有可能会直接将该指定的文件下载下来。 从而导致后台敏感信息(密码文件、源代码等)被下载。

所以,在设计文件下载功能时,如果下载的目标文件是由前端传进来的,则一定要对传进来的文件进行安全考虑。比如:
–对传入的文件名进行严格的过滤和限定;
–对文件下载的目录进行严格的限定。
 

文件上传概述

文件上传功能在web应用系统很常见,比如很多网站注册的时候需要上传头像、上传附件等等。当用户点击上传按钮后,后台会对上传的文件进行判断比如是否是指定的类型、后缀名、大小等等,然后将其按照设计的格式进行重命名后存储在指定的目录。

如果后台对上传的文件没有进行任何的安全判断或者判断条件不够严谨,则攻击着可能会上传一些恶意的文件,比如一句话木马,从而导致后台服务器被webshell。

所以,在设计文件上传功能时,一定要对传进来的文件进行严格的安全考虑。比如:
–验证文件类型、后缀名、大小;
–验证文件的上传方式;
–对文件进行一定复杂的重命名;
–不要暴露文件上传后的路径;
 
绕过(小总结,绕过方式还有更多)
前端验证,修改页面JS代码,抓包修改文件后缀,
get:对上传文件%00和长文件名截断;post:上传路径%00截断
目录穿越,在上传路径加 …/
后端验证,抓包加多一个fielname;修改文件类型;修改文件内容(与合法文件合并)

更多细节移步到这位表哥的总结~我觉得可以

实验环境

我用的是phpstudy集成环境,一键搭环境 (如果端口没被占用还是比较顺利的)

靶场:Pikachu靶场下载
工具:burpsuite

接下来:
–>把下载下来的pikachu文件夹放到web服务器根目录下
–>根据实际情况修改inc/config.inc.php里面的数据库连接配置(登录名和密码要与数据库相同)
–>访问http://x.x.x.x/pikachu,会有一个红色的热情提示"欢迎使用,pikachu还没有初始化,点击进行初始化安装!",点击即可完成安装。
 

本地下载

点击图片下的链接即可下载
在这里插入图片描述
我们复制图片的链接,尝试修改成目录穿越下载phpinfo敏感文件
在这里插入图片描述

本地上传

我们先制造一个php文件
在这里插入图片描述

前端验证

直接上传php文件上传失败。尝试修改前端代码添加白名单上传失败
在这里插入图片描述
将php后缀改成jpg,通过burpsuite抓包修改文件后缀绕过
在这里插入图片描述
在这里插入图片描述

服务端验证

MIME(Multipurpose Internet Mail Extensions)多用途互联网邮件扩展类型。是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问时,浏览器会自动使用指定应用程序来打开。多用于指定一些客户端自定义的文件名,以及一些媒体文件打开方式。
每个MIME类型由两部分组成,前面是数据的大类别,例如声音audio、图象image等,后面定义具体的种类。常见的 MIME 类型,比如:

  1. 超文本标记语言:.html,.html — text.html
  2. 普通文件:.txt — text/plain
  3. RTF文件:.rtf — application/rtf
  4. GIF图形:.gif — image/gif
  5. JPEG图形:.jpeg,.jpg — image/jpeg

同上实验差不多,关键是服务端会验证文件类型conten-type
在这里插入图片描述
尝试利用一下
在这里插入图片描述

图片马

如果是copy /b .php+.jpg .jpg的话,由于木马在头部,服务器判定文件为假图片所以上传也会失败
在这里插入图片描述
生成了一个图片马,上传成功。但是服务器端将你上传的文件进行时间戳+(乱七八糟数字)重命名了不过没关系可以直接利用
在这里插入图片描述
我们上传的是jpg后缀文件,要想此文件被解析成php文件,需要利用文件包含漏洞(include函数)去包含图片马
(这里我改了一下php执行语句为<?php phpinfo();?>还有值得一提的是,图片内容如果过大,php将解析不到执行语句,所以我又将图片内容删减了一部分)

在这里插入图片描述

GOT IT!

 
******************************************************
这一filedownload/upload模块先搞定了,关注收藏追更哦~

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值