过完年回来第一博,之前看到公众号“信安之路”(非常棒的讲安全的公众号)发了一篇文章
审计某开源商城中的漏洞大礼包
说的是文件上传的安全漏洞,想到自己之前也做过文件上传模块 自己审计下自己的垃圾代码。
文章中的php代码直接删除imgsrc对应的文件,没有做校验,那么可以指定任意路径删除
我的删除模块
String eid = req.getParameter("eid");
this.enclosureService.deleteResources(eid, LoginCtrlSession.getLoginVO(new ServletRequest[0]));
res.addMessage("删除成功");
其中Id使用的时间戳,偷懒没有使用uuid,碰到暴力的话往前推几百个id可以把文件全部删除,不过外网看不到id,而且是逻辑删除,不是物理删除。或者爬虫可以全部爬下来。不过应该没什么关系,全是开放给外网下载的。
此处这种验证询问了相关的可以通过burp 改包修改content-type 最有效我觉得还是后缀白名单验证
我的上传模块
byte[] datas = IOUtils.toByteArray(in);
if (size > 8388608L) {
FileOutputStream fos= new FileOutputStream(uploadPath+filename);
fos.write(datas);
File file= new File(uploadPath+filename);
fos.close();
}
上传模块中没有做文件类型白名单处理和验证,如果能够渗透到内网,则可以直接通过应用上传脚本,导致获取到数据库等信息。
web安全可以参考web安全-文件上传漏洞解决