文件上传漏洞审计与防范

admin 2022年10月5日22:56:32评论49 views字数 2328阅读7分45秒阅读模式

黑客视频教程免费看

文件上传漏洞审计与防范

扫码免费看

1、前言

随着微服务与前端UI框架的兴起,目前多数java应用已不再使用JSP作为视图层,造成上传jsp、jspx等脚本文件后无法解析,导致利用失败。

因此单纯的文件上传漏洞在java应用的漏洞挖掘中的影响也在降低。

在微服务环境下如何通过文件上传漏洞拿到java应用的权限是一个值得思考的新方向。


要挖掘新方向新的利用手法就需要对目前的文件上传漏洞利用做一个总结,

11年发布的Upload Attack Framework总结的比较全面,

本文也以此为基础结合java应用做一个总结,尽量包含现有文件上传的利用方法,

再通过一个开源cms的代码审计来实践文件上传的挖掘过程,

最后总结java应用如何防范文件上传漏洞。


2、文件上传漏洞利用

文件上传的流程顺序为:

客户端检测、服务端MIME检测、服务端路径检测、服务端文件扩展名检测、服务端内容检测5个部分,这里只列出方法,详细利用参见参考链接。


2.1 客户端javascript 检测

通常为前端js检查文件扩展名,轻量级检测,表现为网页直接操作弹窗后缀不合法。

利用方法:
burp提交请求绕过,不涉及后端,可参见我第一篇文件上传审计的文章


2.2 服务端MIME 类型检测

后端检测Content-Type 内容,目前使用此方法的应用较少遇到。
利用方法:
burp修改请求的MIME绕过


2.3 服务端目录路径检测

检测跟路径参数相关的内容,是否存在目录穿越、%00截断等

如路径是否可控,是否前端传入,有无路径合法检测,需重点关注

利用方法:
如前端传入可以考虑目录穿越,路径截断等


2.4 服务端文件扩展名检测

检测跟文件后缀相关的内容,分为黑名单检测和白名单检测,需要注意的是空字节截断漏洞版本JDK < java 7u40。

java应用似乎没有解析漏洞问题。

利用方法:

  1. 黑名单:可尝试文件名大小写、不常见扩展名、特殊文件名、截断绕过,解析漏洞。

  2. 白名单:截断、解析漏洞,文件包含配合。


2.5 服务端文件内容检测

检测内容是否合法或含有恶意代码,文件内容检测,幻数、文件合法验证等


利用方法:
> 插入合法内容,伪造幻数,尝试绕过文件渲染插入恶意数据

可能的其他利用方法:

比如双文件上传,office文件的xxe,zip文件的解压,war包解压,zip拒绝服务,上传后后台可修改后缀等等可以根据实际情况变通。


3、文件上传审计实战

纸上得来终觉浅,绝知此事要躬行。

3.1 js查找入口

还拿mcms来练手,选用5.0版本,上次我们分析了4.7的上传问题,前端上传js为ms.upload.js,前端限制的绕过不去分析,直接看js能给我们带来什么信息

文件上传漏洞审计与防范

3.2 根据入口查找处理类

根据上图过一遍我们的总结的利用方法,发现文件后缀allowedFile,

路径uploadPath、文件名isRename可能是可控的,这么多利用的点后端大概率有问题。


后端定位到ms-basic,路径为netmingsoftbasicactionwebFileAction.class


3.3 构造上传下断点

在upload方法上下断点,本地html构造上传测试

<form action="http://ip:8090/ms-mcms/file/upload.do" enctype="multipart/form-data" method="post">
<input name="file" type="
file" />
<input type="submit" />

文件上传漏洞审计与防范


F8跟进到78行,upload,发现逻辑为先存储,后验证

文件上传漏洞审计与防范


3.4 跳入处理类仔细分析

F7跟入,发现从ms.upload.denied读入黑名单,默认拒绝.exe .jsp

文件上传漏洞审计与防范


F8到45行,用substring(fileName.indexOf("."))读取文件后缀存到fileType

56行 如果前断传入isRename参数,就是用原始文件名和后缀,否则使用当前时间戳命名
63行遍历黑名单使用equals方法判断是否与黑名单相符,相符则返回空

文件上传漏洞审计与防范


后续为常规的文件保存,89行返回上传文件的路径,最后通过BaseAction的outString方法输出


3.5 总结利用点

到此文件上传的后端分析就完成我们来缕一缕。

  1. 客户端检测:前端js有限制,可以绕过,且上传接口可未授权访问

  2. 服务端MIME:不涉及

  3. 服务端路径检测:路径可控,后端未检查过滤

  4. 服务端扩展名检测:文件名可控,黑名单机制,java默认配置不解析大小写

  5. 服务端内容检测:不涉及
    3和4组合就可以有很多骚操作,比如绕过解析,这里暂且不表留给大家思考,感兴趣的可以留言互动。

4、文件上传的防御总结

最后我们总结java如何防御,和php相比默认配置的java应用解析漏洞几乎没有,后端只要使用白名单方式合适就可以避免大多数文件上传问题。

为防止红队的骚操作我们应当注意一下几点

  1. 前端js检测必不可少,减轻后端的负载,拦截少量攻击行为;

  2. 上传接口加授权访问,捋顺文件上传逻辑,合法性检测须先做;

  3. 尽量使用白名单机制,并正确的检测路径与文件后缀合法性;

  4. 正确检测内容合法性,如裁剪,二次渲染等,防止图片马与文件包含问题;

  5. 允许上传zip,office文档时,还要注意zip的正确解压,防止跨目录文件覆盖,zip大文件,office文档的xxe问题。

转载自:https://bbs.ichunqiu.com/thread-58031-1-1.html


黑客视频教程录播+进内部群+黑客工具+攻防靶场

扫下方二维码直接领各资料

文件上传漏洞审计与防范

扫码免费领资料

文件上传漏洞审计与防范

(正在为你配置合适的助教)


文件上传漏洞审计与防范

往期内容回顾

文件上传漏洞审计与防范


手把手教你如何远程监听他人手机

八款白嫖的开发安全测试工具

黑信息提取工具!Linux的各类密码提取


文件上传漏洞审计与防范






原文始发于微信公众号(白帽子左一):文件上传漏洞审计与防范

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年10月5日22:56:32
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   文件上传漏洞审计与防范http://cn-sec.com/archives/957732.html

发表评论

匿名网友 填写信息