zoukankan      html  css  js  c++  java
  • Java Web代码审计流程与漏洞函数

    常见框架与组合

    常见框架

    • Struts2
    • SpringMVC
    • Spring Boot

    框架执行流程

    1. View层:视图层
    2. Controller层:表现层
    3. Service层:业务层
    4. Dom层:持久层

    常见组合

    • Spring+Struts2+Hibernate
    • Spring+SpringMVC+Mybatis
    • Spring Boot+Mybatis

    代码审计方法

    根据业务功能审计

    优点:明确程序的架构以及业务逻辑,明确数据流向,可以从获取参数-->表现层-->业务层-->持久层,通读源码;

    缺点:耗费时间;

    根据敏感函数审计

    优点:可以快速高效的挖出想要的漏洞,判断敏感函数上下文,追踪参数源头;

    缺点:覆盖不了逻辑漏洞,不了解程序的基本框架;

     

    审计流程

    1、确定框架;

    通过以下三种方式确定框架:

    • web.xml
    • 看导入的jar包或pom.xml
    • 看配置文件
      • Struts2 配置文件:struts.xml
      • Spring 配置文件:applicationContext.xml
      • Spring MVC 配置文件:spring-mvc.xml
      • Hibernate 配置文件:Hibernate.cfg.xml
      • Mybaits 配置文件:mybatis-config.xml

     2、查看是否存在拦截器

    通过查看web.xml文件,确定是否配置相关拦截器。

    命令执行函数

    • GroovyShell.evaluate()
    • Runtime.getRuntime().exec()
    • ProcessBuilder().start()

    文件上传函数

    • ServletFileUpload()
    • FileItemStream()
    • MultipartFile()

    SSRF函数

    在Java中分为两类:一类只支持http,https协议,如HttpURLConnection、HttpClient、Request、okhttp;一类支持所有协议,如URLConnection、URL。

    HttpURLConnection.getInputStream()

    URLConnection.getInputStream()

    Request.Get.execute()

    Request.Post.execute()

    URL.openStream()

    ImageIO.read()

    OkHttpClient.newCall.execute()

    HttpClents.execute()

    HttpClent.execute()

    CORS跨域漏洞 

    CORS跨域设置:

    response.setHeader("Access-Control-Allow-Origin","*");
    response.setHeader("Access-Control-Allow-Credentials","true");

     或者

    @CrossOrigin("*")
    

     

    Jsonp劫持

    • jsonp跨域设置
    response.setHeader("Access-Control-Allow-Origin","*");
    •  callback

    反序列化

    • readObject

    杂项

    out

    XSS漏洞

    当out.print("");可控的时候,就会导致XSS漏洞。

    requests

     

    response

    session

    session失效时间问题

    session.setMaxInactiveInterval();

    用户退出,session未销毁问题

    session.invalidate(); //销毁Web应用所有的session
    session.removeAttribute(); //移除指定session

    application

    pageContent

  • 相关阅读:
    【渗透测试】hydra使用小结
    Git/SQL/正则表达式的在线练习平台
    加密算法的前世今生
    Linux的进程、线程、文件描述符是什么
    一文看懂 session 和 cookie
    Linux 文件目录都是什么鬼?
    Linux shell 的实用小技巧
    关于 Linux shell 你必须知道的
    我用四个命令概括了 Git 的所有套路
    如何寻找最长回文子串
  • 原文地址:https://www.cnblogs.com/endust/p/12081817.html
Copyright © 2011-2022 走看看