文件安全-上传&下载&读取&写入等
1、搜索类别:业务关键字&相关操作类&封装关键字
2、功能点也适用,直接找文件操作功能进行代码追溯
newFile(
String path
String fileName
newFileInputStream(
newFileOutputStream(
newFileReader
response.setContentType(“application/octet-stream;
file.delete();
FileUtils.
newZipEntity(
file.getName(
.unzip(
.mkdirs(
stream.write(
save2File(
fos、fis.close()
MultipartFile(
file.getOriginalFilename(
IOUtil
FileUtil
download
fileName
filePath
write
getFile
getPath
getWriter
上传 // 搜注释
下载 // 搜注释
……..
文件上传-Inxedu
功能点->前台上传->ImageUploadController.class->gok4->fileType->jspx
/image/gok4?¶m=temp&fileType=jspx,jpg,gif,png,jpeg
修改配置
先上后台随便找个用户,登陆
上传头像
抓包,提取上传数据包
http://127.0.0.1:8282/image/gok4?¶m=temp&fileType=jpg,gif,png,jpeg
搜上面的路径信息,没找到相关类,猜测被封装到jar包中,找配置文件看jar被打包到哪里
找到路由路径
判断大小和判断文件上传类型fileType=jpg,gif,png,jpeg,将前端改为fileType=jspx,jpg,gif,png,jpeg
getSuffix跟进去发现该函数是获取文件名最后一个.之后的后缀,再回到之前代码,判断后缀名,不为jsp才执行接下来的流程
思路直接上传jspx后门,上哥斯拉
后台配置环境时记得修改上传权限
配合过滤器上传-Tmall
1、搜newFile(->filePath->fileName->extension->originalFileName->file
2、AdminPermissionFilter.java->doFilter->contains(“/admin/login”)
/admin/login/../../tmall/admin/uploadAdminHeadImage
文件上传
搜关键字
跟进去发现后端文件没有过滤
前端有过滤,抓个包修改后缀绕过就行。
鉴权漏洞
这里代码有逻辑鉴权漏洞,只要url包含/admin/login就不鉴权了
/admin/login/../../tmall/admin/uploadAdminHeadImage
这样就可以配合前面的上传漏洞
文件下载-Ruoyi
搜FileInputStream->writeBytes->resourceDownload->resource
common/download/resource?resource=/profile/../RuoYi-v4.5.0/ruoyi-admin/src/main/resources/application-druid.yml
如果不确定路径变量名是什么可以打印看一下
文件读取-Oasys
搜索new FileInputStream(->image->f.getPath()->path->startpath
/image///image..//image..//image..//image..//image..//image..//IDEA.txt
把上面地址都输出打印确定一下,打印出来位置,确定和想要读取的文件位置之前的关系,进行绕过
总结:
鉴权
1、过滤器:看逻辑
2、自定义代码:看逻辑
3、shiro框架:找版本漏洞