栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

《网络安全java代码审计实战》笔记

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

《网络安全java代码审计实战》笔记

学习笔记↓

sql注入
  1. sql语句参数直接动态拼接
String id=request.getParameter("id");
  1. 预编译有误

开发者的个人习惯,没有按照PrepreStatement正确的 开发方式进行数据库连接查询,再预编译语句中也sql语句拼接

String id="2";
String username="user%' 'or'='1'#";
String sql="SELECt * FROM user where id=?";
sql+="and username like '%" +username+"%";
PrepareStatement ps=conn.prepareStatement(sql);
ps.setString(1,id);
  1. order by 注入
    特殊情况下,不能使用prepareStatement。典型的是order by子句进行排序。
    order by子句后需要加字段名或字段位置,而字段名不能带引号,否则会被认为是个字符串。
    prepareStatement是使用占位符传参数,传递的字符都会有单引号包裹,”ps.setString(1,id);"会自动给值加引号,会导致order by子句失效。
  2. %和_模糊查询
    java预编译查询不会对%和_进行转义处理,而这俩刚好是like查询的通配符。
    防御:过滤%
  3. Mybatis中#{}和${}的区别
    #{}底层是?占位符
  4. Mybatis常见sql注入

1)order by查询:只能用${}

2)like查询:只能用${}

3)in参数
in子句中使用#{}会将多个参数当作一个整体。只能用${}

示例:二次注入代码审计

搜索select关键字,在UserMapper.java找到不安全的$号.UserService.java中找到对应的调用。
发现其逻辑为从session中取出username,随后拼接到sql语句进行查询。
接着照哦session的调用,找到session的赋值依据。
在login逻辑中找到username值是登陆后的用户名获取的。
接着找注册逻辑,并没有对用户名进行过滤。
存在二次注入。
需注册一个存在注入语句的用户名进行登录。

sql注入防御:

  1. 预编译
  2. 类型转换。如:id参数应为数字,对id参数进行强制类型转换。
任意文件上传漏洞

常见文件上传方式,主要讲解三种

  1. 文件流方式
  2. ServletFileUpload方式
  3. MultipartFile方式

一、文件流方式

文件上传漏洞的本质还是未对文件名做校验。
常见的有:未对文件做任何过滤,仅在前端通过js检验,只判断了Content-Type,后缀过滤补全,读取后缀方式错误等。
如:通过suffixName=filename.substring(fileName.indexOf("."));获取后缀,是不安全的。当文件名是abc.jpg.jsp时,suffixName将等于.jpg.jsp

漏洞修复:
限制上传类型并对文件进行重命名:采取白名单策略限制上传的类型;对文件名进行重命名;去除文件名中特殊字符;上传图片时,通过图片库检测上传文件是否为图片。



XSS

一、常见触发位置

输入/输出点
java中常使用request.getParameter(param) 或者 ${param} 获取用户的 输入 信息。
输出 主要表现为前端的渲染,定位前端中一些常见的标识,再根据后端逻辑来判断漏洞是否存在。

  1. jsp表达式


二、 反射型XSS

通过搜索特定关键字找到数据的交互点,判断这些数据是否可控及输出 位置。

resp.getWriter().print(),直接将数据传入到前端html页面进行展示。

三、 存储型XSS

常见攻击点:文章编辑、用户留言,个性签名等。
审计示例:/show 路由会打印用户的留言,根据web.xml 找到对应类servlet。
。。。。。找到最开始数据存储的时候是req.getParameter("xxx");

XSS漏洞修复

  1. 全局过滤器,并在web.xml 进行配置


目录穿越漏洞

一般出现在需要用户提供路径或文件名时,如文件下载。

访问者提供需要下载的文件后,web应用程序没有去检验文件名是否存在…/等特殊字符,没有对访问的文件进行限制。
优先查找java.io.File引用。根据经验判断Paths,path,System.getProperty(“user.dir”)等各类可能会用来构造路径的关键字。

漏洞修复:
对文件名进行过滤,防止出现 ./ 等特殊字符;采用id索引的方法来下载文件,而不是通过文件名;对目录进行限制;合理配置权限等。

针对已知路径的,如 .jpg 后缀,可直接在路径后拼接 .jpg 后缀来防止用户逃逸。

URL跳转漏洞




修复:严格控制要跳转的域名

命令执行漏洞
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/390010.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号