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

  • 相关阅读:
    java指定路径写、读文件
    [转]EP3C16Q240C8N 引脚说明
    [转]CMOS器件空闲管脚的处理
    [转]Altium Designer之多图纸设计
    [转]SDRAM驱动笔记
    [转]VHDL语言中方向字buffer与inout有什么异同
    [转]FPGA的边沿检测
    [转]FPGA中为什么要把NCEO设置为普通的IO口
    [转]SignalTap II使用方法简介
    [转]C-SPY
  • 原文地址:https://www.cnblogs.com/endust/p/12081817.html
Copyright © 2011-2022 走看看