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.pswp.cn/news/530284.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/530284.shtml
英文地址,請注明出處:http://en.pswp.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 --創建…