一、前言
还是一位师傅联系到我,让我查看一个源码,说有一个文件上传没绕过去,帮他审计审计,于是有了下文。
二、审计过程
其实就是一个上传点没有绕过去,我们可以看下图:
在这里可以看到位于/admin/upload/file当中的一处代码,可以进行上传,但是存在一个过滤即为:
BufferedImage bufferedImage = ImageIO.read(file.getInputStream());
调用了ImageIO.read方法来判断是否上传的为文件,这个方法是干什么用的,我们可以分析一下。
他只是一个读取图像的作用,但是如果读取不到图像的话那么我们的校验就会过不去,导致无法上传恶意文件,其实绕过还是很简单的,直接使用一个图片马即可,这里盲猜原理就是,正常的图片他读取完之后结束了,允许上传,但是在图片后面我们加入了jsp代码等信息,对文件后缀名也没有判断,导致上传成功,进行测试。
这里直接新写了一个代码,把上传代码copy过来了(因为代码本身处于admin下是分析了鉴权机制发现,需要登录后台,登录后台就要把环境搭建好,我这里比较懒就直接放新的路径下,代码不改变)
三、漏洞验证
先进行上传,可以看到确实直接上传png都不行,只是检测了内容,尝试图片数据后面添加内容。
尝试上传图片。
可以看到成功了,试试jsp文件。
但是为什么说失败的文件上传,就是因为这个环境不解析JSP,搞出来之后也是非常友善的(bushi)给这位师傅发过去了。
原文始发于微信公众号(进击安全):一次无效的JAVA任意文件上传审计
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论