【漏洞靶场】文件上传只验证Content-type绕过--upload-labs

一、漏洞描述

Content-Type是http头中一个字段,在响应中Content-Type标头告诉客户端实际返回的内容的内容类型。在请求中客户端告诉服务器实际发送的数据类型,如果服务器对改字段的内容做了限制可以通过burp改包绕过

二、漏洞发现

在upload-labs第二关中就是采用了限制content-type 的类型做文件上传的限制,先在本地写php脚本若上传成功,且知道上传后文件在网站保存的路径,可通过网页访问获得服务器配置信息,命名为z.php

上传后发现返回文件类型不正确,请重新上传,猜测是服务器端验证了content-type字段

对于content-type常见字段有

text/html :HTML格式 text/plain :纯文本格式 text/xml :XML格式

image/gif :gif图片格式 image/jpeg :jpg图片格式 image/png :png图片格式

application/xml : XML数据格式 application/json : JSON数据格式 application/pdf : pdf格式

application/msword : Word文档格式 application/octet-stream : 二进制流数据(如文件下载)

application/x-www-form-urlencoded:浏览器的原生form表单

我们通过抓包得知application/octet-stream意思是文件以二进制方式提交

可以猜测服务器对只允许“image/gif :gif图片格式 , image/jpeg :jpg图片格式 , image/png :png图片格式”这三种方式提交,查看源码验证猜想。

$_FILES['myFile']['name'] 客户端文件的原名称

$_FILES['myFile']['type'] 文件的 MIME 类型,需要浏览器提供该信息的支持(就是content-type字段带的类型)

$_FILES['myFile']['tmp_name'] 文件被上传后在服务端储存的临时文件名,一般是系统默认

move_uploaded_file(file,newloc)//file是要传入的文件,newloc是规定文件的新位置

由源码可知:服务器端拿上我们的http包后,先是取出MIME类型比对是否为“images/jpeg”或者“image/png”或者“image/gif”。如果是就将文件传入对应路径并且存入时名字就是我上传时候的文件名字

三、漏洞利用

抓包后改变content-type的值为服务器验证的正确类型,三种类型都可以

上传成功,并且通过文件在服务器的位置访问,获取服务器配置,也可上传一句话木马,通过蚁剑,菜刀等后门工具链接获取webshell。一般网站在这方面都会将文件名存入服务器的时候把文件名改为随机数,防止攻击者知道文件名利用访问。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Edward Hopper

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值