Java Web代码审计流程与漏洞函数
常见框架与组合
常见框架
- Struts2
- SpringMVC
- Spring Boot
框架执行流程
- View层:视图层
- Controller层:表现层
- Service层:业务层
- 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 Web代码审计流程与漏洞函数的更多相关文章
- idea 创建 SSM + maven Java Web 项目流程
idea 创建 SSM + maven Java Web 项目流程 一.idea 中选择File,New Project 新建项目 二.选择Maven,勾选上面的Create from archety ...
- Java WEB安全问题及解决方案
1.弱口令漏洞 解决方案:最好使用至少6位的数字.字母及特殊字符组合作为密码.数据库不要存储明文密码,应存储MD5加密后的密文,由于目前普通的MD5加密已经可以被破解,最好可以多重MD5加密. ...
- Java Web程序设计笔记 • 【第5章 Servlet技术】
全部章节 >>>> 本章目录 5.1 Servlet 技术介绍 5.1.1 为什么需要Servlet 5.1.1 Servlet 简介 5.1.2 Java Web 处理流 ...
- Java Web开发 - 持久型/存储型XSS漏洞
Java Web开发 - 持久型/存储型XSS漏洞 1.什么是XSS漏洞攻击? XSS是跨站脚本攻击(Cross Site Scripting)的简称,之所以叫XSS而不是CSS相比大家都能明白了吧, ...
- Java Web使用过滤器防止Xss攻击,解决Xss漏洞
转: Java Web使用过滤器防止Xss攻击,解决Xss漏洞 2018年11月11日 10:41:27 我欲乘风,直上九天 阅读数:2687 版权声明:本文为博主原创文章,转载请注明出处!有时候 ...
- java 工作流项目源码 SSM 框架 Activiti-master springmvc 集成web在线流程设计器
即时通讯:支持好友,群组,发图片.文件,消息声音提醒,离线消息,保留聊天记录 (即时聊天功能支持手机端,详情下面有截图) 工作流模块---------------------------------- ...
- 一个简单的Java Web项目搭建流程
今天试图在服务器上搭建一个web服务器,顺便回顾了java web项目的入门,使用Servlet处理HTTP请求,并记录日志等操作.当很久没有做过web项目时,有些东西还是很容易忘记的. Maven配 ...
- java Web工程师面试题集绵
一.Java 基础 1.JDK .JRE 和JVM关系是什么? 答:A. JDK(Java Development Kit)即Java开发工具包,包含编写Java程序所必须的编译.运行等开发工具以及J ...
- 12 自定义标签/JSTL标签库/web国际化/java web之设计模式和案例
EL应用 自定义一个标签,实现两个字符串的相加 1回顾 1.1servlet生命周期 init(ServletConfig) service ...
随机推荐
- Arduino上搭建ESP8266环境
我尝试了各种方法都无法在Arduino上安装ESP8266的环境,最后发现离线安装最稳妥. 1. 下载安装包,提取码:pktw 2. 将安装包内所有文件拷贝到C:\Users\Administrato ...
- mui ajax
<!doctype html><html> <head> <meta charset="UTF-8"> <title>直 ...
- 【spring boot】SpringBoot初学(2.1) - properties读取明细
前言 算是对<SpringBoot初学(2) - properties配置和读取>的总结吧. 概念性总结 一.Spring Boot允许外化(externalize)你的配置.可以使用pr ...
- gulp常用插件之gulp-rev-css-url使用
更多gulp常用插件使用请访问:gulp常用插件汇总 gulp-rev-css-url这是一款用于在gulp-rev之后覆盖js.css文件中的URL进行替换. 更多使用文档请点击访问gulp-rev ...
- java连接Sqlserver数据库问题总结
网上说的要在:Sqlserver配置管理器中设置SQL Server网络配置->SQLEXPRESS的协议->TCP/IP的方法试了没啥用 不知道是不是自己测试设置的时候改了啥参数给整好了 ...
- idea中如何配置git以及在idea中初始化git,并push到码云
一.给idea配置git 打开IDEA,按照路径 Fie-->Settings --> Tools -->Terminal 找到后设置右边的Shell path(自己安装的Git路 ...
- 路由算法之LS算法和DV算法全面分析
转载文章:https://blog.csdn.net/qq_22238021/article/details/80496138 很透彻!!!
- linux--python3安装以及虚拟环境配置
linux下python3的编译安装以及项目运行 普通版安装编译python3并运行项目 最好指定目录进行操作 1.解决系统的基础开发工具,防止python3编译过程出错 yum install gc ...
- 518-零钱兑换 II(完全背包-求方案总数)
518-零钱兑换 II(完全背包-求方案总数) 给定不同面额的硬币和一个总金额.写出函数来计算可以凑成总金额的硬币组合数.假设每一种面额的硬币有无限个. 示例 1: 输入: amount = 5, c ...
- Invalid Native Object
发现是因为没有addChild到父节点上引起的