P4 PikaChu_不安全的文件上传漏洞

大家好!
我是小黄,很高兴又跟大家见面啦 !
拒绝水文,从我做起 !!!!
今天更新的是:

  • P4 PikaChu_不安全的文件上传漏洞
  • 往期检索:程序设计学习笔记——目录

创建时间:2021年3月16日
软件: MindMaster Pro 、Burp Suite Pro 、火狐浏览器


P4 PikaChu_不安全的文件上传漏洞

  • 前言
    • 一、client check 客户端验证
      • 漏洞分析
      • 绕过姿势
        • 方法1 利用插件禁用JS脚本
        • 方法2 通过 Burp Suite 抓包来修改后缀
    • 二、MIME type 服务端验证
      • 漏洞分析
      • 绕过姿势
        • 方法1 抓包 Burp Suite 抓包修改文件后缀
        • 方法2 直接修改 MIME type
        • 补充:
    • 三、getimagesize
      • 漏洞分析
        • 如何生成图片木马:

前言

  • 文件上传功能在web应用系统很常见,比如很多网站注册的时候需要上传头像、上传附件等等。当用户点击上传按钮后,后台会对上传的文件进行判断比如是否是指定的类型、后缀名、大小等等,然后将其按照设计的格式进行重命名后存储在指定的目录。
  • 如果说后台对上传的文件没有进行任何的安全判断或者判断条件不够严谨,则攻击着可能会上传一些恶意的文件,比如一句话木马,从而导致后台服务器被webshell。
  • 所以,在设计文件上传功能时,一定要对传进来的文件进行严格的安全考虑。比如:
  1. 验证文件类型、后缀名、大小;
  2. 验证文件的上传方式;
  3. 对文件进行一定复杂的重命名;
  4. 不要暴露文件上传后的路径;
    –等等…

一、client check 客户端验证

P4 PikaChu_不安全的文件上传漏洞_第1张图片

漏洞分析

  • 首先我们直接上传一个PHP文件看看有什么反应?
  • 还没开始上传就显示挂掉了。

P4 PikaChu_不安全的文件上传漏洞_第2张图片

  • 通过查看源代码我们发现是白名单过滤 ". jpg " 、" .png " 、" .gif "

P4 PikaChu_不安全的文件上传漏洞_第3张图片

绕过姿势

  • 客户端绕过验证的两种方式:
  • 第一种 浏览器禁用JavaScript 脚本
  • 第二种 通过 Burp Suite 抓包来修改后缀

方法1 利用插件禁用JS脚本

  • 安装插件:JavaScript Switcher 可以方便启用和禁用JavaScript 脚本。

在这里插入图片描述

  • 点击禁用 JavaScript脚本之后,直接上传文件夹,开始上传文件上传成功 。

P4 PikaChu_不安全的文件上传漏洞_第4张图片

方法2 通过 Burp Suite 抓包来修改后缀

  • 点击上传一个PHP文件抓一个数据包来看看

P4 PikaChu_不安全的文件上传漏洞_第5张图片

  • 右键send to repeater,可以在左侧Request框内的Raw栏原报文修改filename="huang.png" 参数,然后发送(Send)。
  • 在右侧Response中 点击Render查看修改后返回响应的信息。
  • 我们可以看到我们上传成功了! 说明在数据包中修改报文可以实现。

P4 PikaChu_不安全的文件上传漏洞_第6张图片

P4 PikaChu_不安全的文件上传漏洞_第7张图片
P4 PikaChu_不安全的文件上传漏洞_第8张图片

  • 我们在左侧Request框内的Raw栏原报文修改filename="huang.php" 参数,然后发送(Send)。
  • 在右侧Response中 点击Render查看修改后返回响应的信息。
  • 发现文件上传成功 !

P4 PikaChu_不安全的文件上传漏洞_第9张图片
P4 PikaChu_不安全的文件上传漏洞_第10张图片

二、MIME type 服务端验证

P4 PikaChu_不安全的文件上传漏洞_第11张图片

漏洞分析

  • 首先我们直接上传一个PHP文件看看有什么反应?
  • 我们上传之后发现,告诉我们文件上传的格式之能是以下规定的样式的。
    P4 PikaChu_不安全的文件上传漏洞_第12张图片
  • 我们点击上传一个PHP文件抓一个数据包来看看

P4 PikaChu_不安全的文件上传漏洞_第13张图片

  • 在HTTP request报文中MIME类型在Content-Type字段体现。
  • MIME 类型

P4 PikaChu_不安全的文件上传漏洞_第14张图片

  • 通过我们查看代码,可以发现MIME 限制的类型。

绕过姿势

  • 方法1 直接修改MIME type,就可以上传你想要上传的文件了。
  • 方法2Burp Suite抓包修改文件后缀 (好处是只要这个文件上传成功了,MIME type肯定是对的)

方法1 抓包 Burp Suite 抓包修改文件后缀

  • 右键send to repeater,可以在左侧Request框内的Raw栏原报文修改filename="huang.png" 参数,修改 Content-Type: image/png (为png 图片格式)然后发送(Send)。
  • 在右侧Response中 点击Render查看修改后返回响应的信息。
  • 我们可以看到我们上传成功了! 说明在数据包中修改报文可以实现。

P4 PikaChu_不安全的文件上传漏洞_第15张图片 P4 PikaChu_不安全的文件上传漏洞_第16张图片 P4 PikaChu_不安全的文件上传漏洞_第17张图片

方法2 直接修改 MIME type

  • 找到这个服务端上的源码,修改源码
  • 添加:application/octet-stream 就可以上传PHP文件了

P4 PikaChu_不安全的文件上传漏洞_第18张图片 P4 PikaChu_不安全的文件上传漏洞_第19张图片

补充:

P4 PikaChu_不安全的文件上传漏洞_第20张图片

  • 通过检车源码发现 $mime 是一个包含合法MIME类型的数组,也就是MIME类型白名单;然后将这个白名单作为参数传入了upload_sick()函数进行服务器端的检测。
  • upload_sick()函数的定义如下,该函数不安全之处在于两点:
  1. 仅检查了MIME类型,可以通过抓包修改绕过。
  2. 保存文件的时候没有重命名文件,这样即使网页不回显文件保存路径,也有很大概率可以被攻击者猜测到。
  • 整个关卡还有一处不安全,就是回显了文件保存路径。成功上传webshell,并且知道文件保存路径后,攻击者就可以连接shell了。

三、getimagesize

  • 根据题目,我们看出是获取图像信息的题

P4 PikaChu_不安全的文件上传漏洞_第21张图片

漏洞分析

  • 首先我们直接上传一个PHP文件看看有什么反应?发现报错了!

P4 PikaChu_不安全的文件上传漏洞_第22张图片

  • 根据报错我们查看一下文件。发现是源码

P4 PikaChu_不安全的文件上传漏洞_第23张图片

  • 切换一下PHP版本,再上传一下试试:

P4 PikaChu_不安全的文件上传漏洞_第24张图片

  • 上传一个名为huang.php(自定义的)里面实际上是一句话木马文件,发现服务器可以识别出这个来
    assert($_POST['dvwa']);?>

P4 PikaChu_不安全的文件上传漏洞_第25张图片

  • 我们上传之后发现,告诉我们文件上传的格式之能是以下规定的样式的。
  • 我们根据邀请券上传一张正确的图片

P4 PikaChu_不安全的文件上传漏洞_第26张图片

  • 发现了让我们非常惊奇的事情,竟然回显了文件的存储路径。

  • 在浏览器中打开图片:127.0.0.1/pikachu/vul/unsafeupload/uploads/2021/03/21/33969860571310b64da841400433.jpg
    模板:127.0.0.1/pikachu/vul/unsafeupload/回显的路径

  • 服务器将木马文件解析成了图片文件,因此向其发送执行该文件的请求时,服务器只会返回这个“图片”文件,并不会执行相应命令。

  • 利用 文件包含漏洞 可以将图片格式的文件当做php文件来解析执行:http://127.0.0.1/pikachu/vul/fileinclude/fi_local.php?filename=../../unsafeupload/uploads/2021/03/20/9439796055e7a8d1a39396276569.jpg&submit=提交查询

  • 模板:http://127.0.0.1/pikachu/vul/fileinclude/fi_local.php?filename=../../unsafeupload/上传文件的回显路径&submit=提交查询

**加粗样式**

如何生成图片木马:

  1. 在路径下准备好一句话木马.php和一张图片 .png (或者 .jpg )
  2. 输入系统指令: copy 一张图片.png/b+一句话木马.php/a 生成图片名称.png
  3. 这样图片木马就合成好了

在这里插入图片描述

在这里插入图片描述
__
各位路过的朋友,如果觉得可以学到些什么的话,点个赞 再走吧,欢迎各位路过的大佬评论,指正错误,也欢迎有问题的小伙伴评论留言,私信。

每个小伙伴的关注都是本人更新博客的动力!!!
请微信搜索【 在下小黄 】文章更新将在第一时间阅读 !

把握现在 ,展望未来 ,加油 !


由于水平有限 ,写的难免会有些不足之处 ,恳请各位大佬不吝赐教 !

你可能感兴趣的:(#,实验:靶机,CTF等,php,软件测试,安全,安全漏洞)