java相关漏洞学习

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java相关漏洞学习相关的知识,希望对你有一定的参考价值。

  本文来自对看雪论坛一篇文章的学习的记录:https://bbs.pediy.com/thread-210876.htm

一.认证的测试

  目前很多页面在注册前采用ajax,jquery无刷新判断用户名是否注册,引入账户名枚举问题

客户端ajax代码

  function validatorloginName(){

  var loginName=document.getElementById("uname").value;

  if(loginName==""){

  alert("用户名不能为空");

  return;

}

  $.ajax({

  type:"POST",

  url:"ValidateName",

  data:"loginName="+loginName;

  success:function(data){

  if(data=="true"){

  alert("恭喜您,用户名没有被使用");

}else{

  alert("抱歉!用户名存在");

}

}

});

}

修复方法:添加验证码,一次性token

二.非授权访问

  产生原因:

需要登录才能访问的页面,缺乏对用户登录会话,token进行验证有效性判断,导致非合法用户,token可以访问需要登录才能访问的页面

检测方法:

借助Dirbuster进行目录猜解,点击测试需要授权访问页面是否能在非授权情况下打开

修复方法:

在某个页面文件包含一个用户验证会话/token是否有效的文件,或者新建过滤器

三.关于验证码容易出现的问题

1.验证码保存在cookie中,可以直接查看到

2,验证码在验证失败后没有刷新验证码,导致暴力破解

3.验证码噪点或者扭曲度不高,导致可以用工具识别

四.手机otp认证绕过

存在风险:

  1,手机otp动态码失效时间设计有问题,失效时间设置过长和动态码位数过少会存在爆破风险

  2.动态码发送之后,在网页源代码中显示

  3.手机otp验证结果在前端认证,修改返回状态码,可绕过

  4.是否可以抓包修改手机号,导致发送到攻击者手机

五,会话固定漏洞:

  web应用程序没有正确执行会话管理,例如用户登录前的会话cookie和登录后的是一样的,另外是当用户点击退出,session不会失效

  测试方法:观察登录前,登录后,退出状态下cookie,sessionId是否变化

修复方法:一旦用户登录成功,马上invalidate用户的会话

   文章后面的就不总结了,虽然有很多知识点都讲的不是特别清楚,不过,总体来说,覆盖的知识点还是挺全的,还有的话就是对于java语言特有的安全问题,比如ognl,容器配置的问题,都没有讲到,比较遗憾

  

以上是关于java相关漏洞学习的主要内容,如果未能解决你的问题,请参考以下文章

初探Java反序列化漏洞学习笔记

CVE-2019-0708 漏洞分析及相关测试

web安全Spel表达式注入漏洞

文件上传漏洞代码

7-Web安全——java反序列化漏洞CC链1学习

Java反序列化漏洞分析