首页 > 编程语言 >java文件上传审计

java文件上传审计

时间:2023-04-05 22:24:24浏览次数:47  
标签:审计 java 文件名 -- jpg jsp 上传

审计点简述

 

 审计文件名-审计后缀名-审计文件内容-

审计点--文件名称

1.文件名存在目录穿越漏洞

漏洞原因:开发者直接将用户输入的文件名拼接在路径上进行查找

漏洞修复:开发者直接指定一个路径,不信任用户的路径(添加一个时间戳)

文件名直接拼接产生漏洞:/ab/c+file_name --> /a/b/c/1.jpg --> /a/b/c/../../../1.jpg

2.文件名存在xss

漏洞原因:主要在文件上传后,返回体显示文件 + A+ 上传成功字样可能会有xss

"文件名" +A+ "上传成功" -->  文件<img scr=1 one rror=alert(1)>上传成功

审计点--后缀判断

1.取后缀的方式

indexof(".") --> 1.jpg.jsp --> .jpg.jsp

lastindexof(".") --> 1.jsp.jpg --> .jpg

2.判断后缀与mime文件格式的方式(大小写转化,黑百名单)
tolowercase --> 1.jsp --> ".jsp"

equals(suffix)   #suffix可以是黑名单可以是白名单

审计点--文件格式

BufferedImage image=ImageIO.read(file);

image.getWidth() ---- image.getHeight()

  JPEG FFD8FF

  PNG 89504E47

  GIF 47494638

  TIFF 49492A00  tif

文件上传修复方式

1. 存储路径不完全可控 --> 不要将文件名称拼接或者直接返回

2.后缀名和格式类型白名单判断

3.不解析直接下载 -->取消预览

4.统一资源服务器-->不过要注意ssrf

两种找到上传点的方法

1.全局搜索关键字 例如函数关键字或者中文注释关键字

2.通过抓包看路径后全局搜索

标签:审计,java,文件名,--,jpg,jsp,上传
From: https://www.cnblogs.com/lisenMiller/p/17291111.html

相关文章

  • Java Stream学习笔记(一)
    JavaStream学习笔记Stream是Java8API添加的一个新的抽象,称为流Stream,以一种声明性方式处理数据集合(侧重对于源数据计算能力的封装,并且支持序列与并行两种操作方式)。一、特点1、代码简洁:函数式编程写出的代码简洁且意图明确,使用stream接口让你从此告别for循环。2、多核友好......
  • 在 Linux 中使用 sFTP 上传或下载文件与文件夹
    导读sFTP(安全文件传输程序)是一种安全的交互式文件传输程序,其工作方式与FTP(文件传输协议)类似。然而,sFTP比FTP更安全;它通过加密SSH传输处理所有操作。它可以配置使用几个有用的SSH功能,如公钥认证和压缩。它连接并登录到指定的远程机器,然后切换到交互式命令模式,在......
  • Failed to start bean 'documentationPluginsBootstrapper';nested exception is jav
    报错:Failedtostartbean‘documentationPluginsBootstrapper’;nestedexceptionisjava.lang.NullPointerException错误项目版本:springboot最新版本<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-sta......
  • Java进制转换
    publicstaticvoidmain(String[]args){ Scannerscan=newScanner(System.in); Stringrs="2022"; System.out.println(Integer.parseInt(rs,9)); scan.close();}上述代码实现的功能:将2022的9进制数转化为10进制......
  • JavaScript基础知识之——Location 对象详解
    属性描述location.hash设置或取得URL中的锚location.host设置或取得URL中主机(包括端口号)location.hostname设置或取得URL中的主机名location.href设置或取得完整URL(页面重定向应用)location.pathname设置或取得URL中的路径location.port设置或取得URL中的端口号location.......
  • 【转】Java8之Consumer、Supplier、Predicate和Function攻略
    Java8之Consumer、Supplier、Predicate和Function攻略这几个接口都在 java.util.function 包下的,分别是Consumer(消费型)、supplier(供给型)、predicate(谓词型)、function(功能性),相信有了后面的解释,你应该非常清楚这个接口的功能了。Java8函数式接口Predicate、Consumer、Function......
  • java -- Stringbuild、Date和Calendar类
    Stringbuild类由于String类的对象内容不可改变,每次拼接都会构建一个新的String对象,既耗时,又浪费内存空间这时需要通过java提供的StringBuild类解决这个问题StringBuilder又称为可变字符序列,它是一个类似于String的字符串缓冲区,可以看作是一个容器,容器中可以装很多字符串可......
  • Java基础知识点(代码块)
    一:代码块的分类局部代码块、构造代码块、静态代码块。1.局部代码块publicclassTest{publicstaticvoidmain(String[]args){{}inta=20;System.out.println(a);//这一部分就是局部代码块}}2.构造代码块publicclassSt......
  • Java BIO,NIO,AIO
    一丶IO模型&JavaIOUnix为程序员提供了以下5种基本的io模型:blockingio:阻塞iononblockingio:非阻塞ioI/Omultiplexing:io多路复用signaldrivenI/O:信号驱动ioasynchronousI/O:异步io但我们平时工作中说的最多是,阻塞,非阻塞,同步,异步1.阻塞非阻塞,同步异步阻塞调用是......
  • jsp+servlet实现的人力资源管理系统(实现了注册登录、部门管理、招聘管理、培训管理、
    @目录jsp+servlet实现的人力资源管理系统实现功能截图系统功能使用技术完整源码jsp+servlet实现的人力资源管理系统本系统是一个servlet原生框架实现的人力资源管理系统,实现了注册登录、部门管理、招聘管理、用户管理、薪资管理、职位管理等常用功能。(文末查看完整源码)实现......