pikachu---Unsafe Filedownload Fileupload

不安全文件下载

概述:

很多网站都会提供文件下载功能,即用户可以通过点击下载链接,下载到链接对应的文件。

但是如果文件下载功能设计不当,则可能导致攻击者可以通过构造文件路径,从而获取到后台服务器上的其他敏感文件。

又称任意文件下载。

漏洞演示:

右击头像在新标签页中打开,随意点击下载一张头像图片。

新标签的url中有filename参数,过程其实就是将filename的值传到后台,后台找对应的文件并返回到前端,浏览器对其进行下载。

修改filename参数,根据后台操作系统类型,使用多个../跳转到根目录,再从根目录逐级访问实现目录遍历。

查看后台代码:

发现其获得文件名后,没有做任何校验,直接拼接到download中,导致不安全文件下载漏洞。

应该对要下载的文件进行校验,是否在可下载文件中,不是就拒绝。

防范措施:

  1. 对传入的文件名进行严格的过滤和限定。
  2. 对文件下载的目录进行严格的规定。

不安全文件上传

概述:

因为业务功能需要,很多web站点都有文件上传的接口,比如:

  1. 注册时上传头像图片(jpg/png/gif等)
  2. 上传文件附件(doc/xls等)

而在后台开发时并没有对上传的文件功能进行安全考虑或者采用了有缺陷的措施,导致攻击者可以通过一些手段绕过安全措施从而上传一些恶意文件(如一句话木马),从而通过对该恶意文件的访问来控制整个web后台。

测试流程:

  1. 对文件上传的地方按照要求上传文件,查看返回结果(路径/提示等)。
  2. 尝试上传不同类型的“恶意”文件,如xx.php,分析结果。
  3. 查看html源码,看是否通过js在前端做了上传限制,可以绕过。
  4. 尝试使用不同方式进行绕过:黑白名单绕过/MIME类型绕过/目录0x00截断绕过等。
  5. 猜测或者结合其他漏洞(敏感信息泄露等)得到木马路径,连接测试。

client check:

点击浏览,上传php类型文件,页面弹窗上传文件不符合要求,推测在前端页面做了限制。

打开火狐浏览器的工具---Web开发者---Firebug,选中浏览选项框,发现只要文件类型改变就会调用checkFileExt(this.value)函数。

右击查看页面源代码:

发现此函数对上传文件类型进行了限制,将函数删除,再次上传php类型文件,成功上传。

攻击者上传成功的“恶意”文件需要知道其下载的路径,然后进行访问。

这里上传x为随意的系统命令,成功被执行。

MIME type:

MIME介绍:

$_FILES()

点击浏览,上传php类型文件失败。

查看后台源代码:

发现其通过$_FILES获得当前文件类型,并和已经定义好的$mime作比较,有就上传,没有就拒绝。

但是$_FILES是从前端获得到的文件类型,所以可以绕过。

漏洞演示:

将火狐浏览器使用burpsuite抓包并关闭拦截。

先上传正确的图片文件,抓包,复制其文件类型。

再上传php文件,抓包并发送到Repeater模块,并将文件类型替换为图片文件包的文件类型,点击重放,在Render模块发现上传成功。

上传成功后就可以通过访问一句话木马文件间接控制整个web后台。

getimagesize():

Getimagesize()返回结果中有文件大小和文件类型,如果用这个函数来获取类型,从而判断是否是图片的话,会存在问题。

原理是通过判断图片头的十六进制编码,因为相同类型的图片头编码都是一样的,所以可以伪造图片,在图片编码中插入恶意代码,再将图片上传。

图片头编码:

图片木马的制作:

将制作好的图片木马上传,成功。

但是访问图片并不能执行恶意代码。

可以通过文件包含中的include()函数去执行图片中的恶意代码,因为图片不能执行,但它会一直执行到最后的恶意代码,从而实现攻击。

将图片上传的路径复制下来粘贴到文件包含中的filename参数中,在路径前尝试加入../直到可执行为止。

unsafeupload/uploads/2020/05/13/1953235ebbd0a2bad50533647388.jpg

防范措施:

posted @ 2020-03-24 18:31  强霸卓奇霸  阅读(289)  评论(0)    收藏  举报
https://blog-static.cnblogs.com/files/xiaokang01/js.js 这是添加的文件的链接 color="240,230,140" 粒子的颜色设置 opacity="1" 粒子的透明度 count="75" 粒子的个数