java 审计 漏洞函数_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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/530284.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java前期_【JAVA】前期环境配置

一、java的环境配置及在eclipse中如何安装JRE或JDK环境eclipse下载地址:JDK下载地址:1)安装JDK或JRE注:JDK使用与开发者运用,其中包含了开发环境和运行环境。而JRE只包含了java的运行环境。2)配置设置执行路径UNiX:在C…

php截取指定字符串之后,php截取字符串(截取指定字符串之间的字符串)

一、PHP截取两个指定字符后边的字符$a "123abc#456";$b (strpos($a,""));$c (strpos($a,"#"));echo substr($a,$b1,$c-1);二、常用截取字符串技巧。//构造字符串$str "ABCDEFGHIJKLMNOPQRSTUVWXYZ";echo "原字符串:…

php 日志按天截取,Laravel 日志管理:按日期切割日志

日志存储Laravel 默认的错误文件记录在一个文件里,随着时间的推移,此文件将会变得巨大,不方便查阅。我们可以通过修改 config/app.php 配置文件中的 log 选项来配置 Laravel 使用的存储机制。如果你希望每天产生日志都存放在不同的文件中&…

php xcache 方法,php xcache 解密

NO.2 /index.php?actionmd5webcrack 很强大,需要登陆论坛才能解密,点击右上角的“register”进行注册,都是一些简单的单词,应该能看懂吧?...() A.PHP B.JSP D.Ajax 4.配置 ...假设$aarray(‘x’,’y’);,则$aarray_pad...xcache 15 四个模块 Admin Common Member Article 用户…

ecshop category.php?id=4,categoryall.php

//by 琅琊源码 QQ:27392236define(IN_ECS, true);require dirname(__FILE__) . /includes/init.php;if ((DEBUG_MODE & 2) ! 2) {$smarty->caching true;}require ROOT_PATH . /includes/lib_area.php;$area_info get_area_info($province_id);$area_id $area_info[r…

php 获取key的位置,PHP获取当前所在目录位置的方法

本文实例讲述了PHP获取当前所在目录位置的方法。分享给大家供大家参考。具体分析如下:如果要获取脚本文件的目录,要应用函数getcwd()来实现。函数声明如下:string getcwd ( void ) ;成功执行后返回当前目录字符串,失败返回FALSE。…

java8收集器,Java 8中的收集器collectionAndThen()方法

collectingAndThen()Java Collectors类中的方法使Collector适应于执行其他完成转换。它返回执行下游收集器动作的收集器,然后执行附加的结束步骤。语法如下。static Collector collectingAndThen(Collector downstream, Functionfinisher)在这里,参数T-…

php 精度运算,PHP BC 库(任意精度数字运算) | 网游世界

留意:备选参数$scale以设置运算精度(保留小数位)。bcscale(设置运算精度)bool bcscale ( int $scale )说明:设置运算精度(保留小数位),成功返回TRUE否则为FALSE。bcadd(加法运算)string bcadd ( string $left_operand , string $right_operan…

php 不允许外部访问,[日常] 解决mysql不允许外部访问

1.在端口已经开放的情况下,ubuntu mysql 3306允许远程访问vim /etc/mysql/mysql.conf.d/mysqld.cnf注释#bind-address 127.0.0.12.给用户授权允许远程访问:grant all privileges on *.* to root"%" identified by "pwd" with grant option;flush privileg…

elementary安装Java,elementary os怎么样安装java

elementary os的安装方法elementary os 的安装镜像文件准备好以后,这里以虚拟机上安装为例,配置好以后启动虚拟机进入安装界面。在初始化安装界面中先选择“中文简体”,再点击“安装elementary os”按钮随后系统会显示硬件安装需求界面&#…

java jni框架,Java JNI 简明教程(一)——传智播客JNI笔记(王泽佑)

package cn.itcast;public calss TestNative {public native void sayHello();public static void main(String[] arg){}}2. 用javah.exe生成包含native方法的C/C头文件javah -jni(默认)javah cn.itcast.TestNative //由类名执行生成C/C头文件生成的头文件内容:JNIE…

java自定义变量解析,Thymeleaf内置对象、定义变量、URL参数及标签自定义属性

如标题所述,这篇文章主要讲述Thymeleaf中的内置对象(list解析、日期格式化、数字格式化等)、定义变量、获取URL的参数和在页面标签中自定义属性的应用。如果对Thymeleaf的基本使用、maven依赖等不清楚的可以先阅读我的另一篇文章《Thymeleaf 之 初步使用》。Control…

linux php curl.so,linux中php如何安装CURL扩展方法

如果php已经在系统编译好,后来又需要添加新的扩展。一种方式就是重新完全编译php,另一种方式就是单独编译扩展库,以extension的形式扩展。下面以安装curl扩展为例:1、下载curl安装包。(我的php是4.4.4的,下载最新的cur…

matlab线性拉伸函数,采用线性变换对图像的每一个像素灰度作线性拉伸-Read.PPT

采用线性变换对图像的每一个像素灰度作线性拉伸-Read第4章 图像增强(1) 4.1 图像增强概述 图像增强(image enhancement)的定义: 在图像的获取过程中,由于多种因素的影响,导致图像质量退化。图像增强是对退化图像的某些特征,如边缘…

php js 循环对象属性,js 遍历对象的属性的代码_javascript技巧

如:Function.prototype.addMethodfunction(methodName,func){if(!this.prototype[methodName]){this.prototype[methodName]func;//给原型增加方法,此方法会影响到该类型的实例上}return this.prototype;//返回原型,此类型实例可以进行链形调…

php连接数据库navicat,navicat数据库如何连接php

第一步,打开Navicat,新建数据库。第二步,在数据库中新建表。相关推荐:《Navicat for mysql使用图文教程》第三步,保存表。第四步,表中添加数据。第五步,打开ide,输入以下php代码&…

每日一题:LCR 095.最长公共子序列(DP)

题目描述: 给定两个字符串 text1 和 text2,返回这两个字符串的最长 公共子序列 的长度。如果不存在 公共子序列 ,返回 0 。 一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些…

php自动合并,php实现合并数组并去除重复的方法

php实现合并数组并去除重复的方法发布时间:2020-08-12 10:35:05来源:亿速云阅读:99作者:小新这篇文章主要介绍了php实现合并数组并去除重复的方法,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这…

oracle存储数据方式,Oracle 数据类型及存储方式

Oracle 数据类型及存储方式袁光东 原创概述通过实例,全面而深入的分析oralce的基本数据类型及它们的存储方式。以ORACLE 10G为基础,介绍oralce 10g引入的新的数据类型。让你对oracle数据类型有一个全新的认识。揭示一些不为人知的秘密和被忽略的盲点。从…

oracle的一些基本操作,Oracle中的一些基本操作

关于Oracle中的一些基本操作,包括表空间操作,用户操作,表操作1 --创建表空间2 create tablespace itheima3 datafile I:\oracle\table\itheima.dbf4 size 100m5 autoextend on6 next 10m;7 --删除表空间8 drop tablespace itheima;910 --创建…