Java安全-常規漏洞問題(SQL注入,XXE,SSRF,RCE)

靶場搭建

靶場下載?:

https://github.com/whgojp/JavaSecLab

這個靶場是使用Springboot搭建的所以不要下載 jar?文件運行,要使用IDEA運行他的文件夾

先打開pom?然后進行maven一下

改一下端口

配置完成之后修改一下?運行的模式

使用phpstudy搞一個sql數據庫

導入sql文件

運行應用

????????

SQL注入

先了解一下sql注入的修復形式和漏洞成因 :成因說白了就是使用字符串拼接的形式進行查詢數據庫才導致數據的惡意插入? ? ? ?修復形式就是把字符串拼接的形式改為預編譯(預編譯分為函數的調用和形式的調用)如果只是調用了函數那還是會造成sql問題

第一類:JDBC

JDBC數據庫是一種通過API接口進行數據存儲交互的形式?所以它是可以加載遠程的數據庫的

先看payload

1' and updatexml(1,concat(0x7e,(SELECT user()),0x7e),1) AND '1'='1

這是個報錯注入

從白盒角度去審計一下:

場景二是

漏洞出現的原因 :sql語句仍是拼接模式下的

安全場景 :

第二類MyBatis

還有個注意點就是? #{}? 這樣處理下 {}?內的內容 會轉為字符串

介紹一下Mybatis 數據庫 他的配置和jdbc完全是不一樣的

他不是和JDBC一樣使用一個單個的文件進行處理

所以他的安全問題按理來說是非常好的

但是就是因為? ? #{}? 這樣處理下 {}?內的內容 會轉為字符串

所以一些如order by 1? 如果使用? ?? #{}? ?1會被轉為字符串? 但是 by后面跟的必須是int數字 所以會報錯? ?這樣的話程序員就只能使用 ${} 進行字符串的拼接? 所以就能使用在這個點上進行注入?

可以先把前面的整數進行閉合就能進行注入語句的插入

Order by 漏洞問題

語句:

1' and updatexml(1,concat(0x7e,(SELECT user()),0x7e),1) AND '1'='1

漏洞點 :

通過審計處理 就是因為 ${}

% 和 Like模糊匹配 安全問題

審計一下 上面的多余代碼

// Controller層
public R special1OrderBy() {List<Sqli> sqlis = new ArrayList<>();  //新創一個數據庫數據交互列表switch (type) {  //選擇 查詢的類型 case "raw":   //原始類型   sqlis = sqliService.orderByVul(field);   //這個是引用mapping 層的那個 ${} 拼接執行break;case "prepareStatement":  //這個就是使用預編譯參數  sqlis = sqliService.orderByPrepareStatement(field);  //這個是執行的是mapping 中的#{}break;case "writeList":   // 使用白名單模式sqlis = sqliService.orderByWriteList(field);...
// Service層
//自定義SQL-使用#{}
@Override  
//服務層就是對查詢的數據進行回顯		  
public List<Sqli> orderByVul(String field) {return sqliMapper.orderByVul(field);
}
@Override
public List<Sqli> orderByPrepareStatement(String field) {return sqliMapper.orderByPrepareStatement(field);
}
@Override
public List<Sqli> orderByWriteList(String field) {return sqliMapper.orderByWriteList(field);
}

in 后參數問題

我們知道?

第三類? Hibernate

這個漏洞仍然是 原生的拼接導致的 :

預編譯的使用并不是執行的代碼不管用了? 而是被當做了字符串

第四類 SPA

缺陷仍然是原生

小結SQl注入

以上四個不是數據庫,而是數據庫處理的框架? 他們的本意就是優化數據庫到代碼中間的操作

黑盒測試就是使用找參數點 然后盲注

白盒 : 需要先分辨數據庫 :最容易分辨的? MyBatis,所以他的判斷就是 在maping文件中看是否有三個危險的語句

其他的就是尋找 控制器有沒有相應的配置

找到數據庫之后就先找 語句是否使用拼接模式? 或者看是否使用預編譯

各個數據的預編譯 :

-JDBC
1、采用Statement方法拼接SQL語句
2、PrepareStatement會對SQL語句進行預編譯,但如果直接采取拼接的方式構造SQL,此時進行預編譯也無用。
3、JDBCTemplate是Spring對JDBC的封裝,如果使用拼接語句便會產生注入
4、自定義過濾(黑白名單)
安全寫法:SQL語句占位符(?) + PrepareStatement預編譯
-Hibernate
1、setParameter:預編譯
2、username=:username 預編譯-JPA
1、username=:username 預編譯

XXE漏洞

XXE類似于反序列化? 不過就是xml框架的權限比較高可以支持直接進行一些修改框架插入惡意代碼就能執行一些命令

XXE的前提是項目沒有禁用外部的實體(一般是不會禁用的)

他主要就是解析 <> 內的內容實現注入

代碼審計SINK點:1、XMLReader2、SAXReader3、DocumentBuilder4、XMLStreamReader5、SAXBuilder6、SAXParser7、SAXSource8、TransformerFactory9、SAXTransformerFactory10、SchemaFactory11、Unmarshaller12、XPathExpression

RCE

白盒審計下的相關函數

命令執行 :

1、ProcessBuilder

Runtime.getRuntime().exec()

3、ProcessImpl

代碼執行:??Groovy代碼注入

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/909713.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/909713.shtml
英文地址,請注明出處:http://en.pswp.cn/news/909713.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

基于視頻的 AI 內存庫,極速語義檢索

簡介 在大模型應用里&#xff0c;將文本數據分塊嵌入存儲在向量數據庫已經是標準做法。然而&#xff0c;傳統向量數據庫雖然功能強大&#xff0c;但其高昂的RAM和存儲需求&#xff0c;以及復雜的部署運維&#xff0c;常常讓開發者望而卻步。今天&#xff0c;介紹一個名為 Memv…

接口適配器模式實現令牌桶算法和漏桶算法

以下是令牌桶算法、漏桶算法和雪花算法的清晰對比解析。它們屬于完全不同的技術領域&#xff0c;前兩者用于流量控制&#xff0c;后者用于分布式ID生成&#xff1a; 1. 令牌桶算法&#xff08;Token Bucket&#xff09; 領域&#xff1a;流量整形 / 速率限制核心目標&#xff…

618背后的電商邏輯重構:從價格血戰到價值共生

“今年終于沒做數學題。” 618進行到一半&#xff0c;行云已經買了很多&#xff0c;大件的有iPad、iWatch&#xff0c;小件的有運動鞋、面膜、紙巾。往年她要湊湊減減&#xff0c;經常要找個店鋪湊單&#xff0c;下完單再馬上退掉&#xff0c;今年她沒廢太多腦細胞&#xff0c…

解決 PyTorch 與 Python 3.12 的兼容性問題:`operator torchvision::nms does not exist` 深度解析

解決 PyTorch 與 Python 3.12 的兼容性問題 問題現象錯誤根源分析終極解決方案?? 推薦方案:創建 Python 3.11 虛擬環境? 備選方案:使用 PyTorch 夜間構建版(Python 3.12)驗證修復技術深度解析最佳實踐建議問題現象 當在 Python 3.12 環境中運行以下代碼時: from tran…

Git 實戰場景

四、標簽管理 4.1、標簽的理解 在使用 Git 進行版本管理時&#xff0c;**標簽&#xff08;Tag&#xff09;**扮演著非常重要的角色。它其實就是對某次提交&#xff08;commit&#xff09;的一個簡潔標識&#xff0c;相當于給這次提交起了一個可讀、易記的“別名”。比如&…

在同態加密系統中,參與角色以及各角色的功能作用流程圖,私鑰和公鑰分發流程,可能遇到的攻擊

一、角色劃分與職責 角色身份核心任務密鑰權限客戶端數據所有者 &#xff08;如醫院、用戶&#xff09;1. 加密原始數據 2. 上傳密文至服務器 3. 接收并解密結果&#xff08;可選&#xff09;持有公鑰服務器計算服務提供方 &#xff08;如云平臺&#xff09;1. 接收客戶端密文…

langchain從入門到精通(六)——LCEL 表達式與 Runnable 可運行協議

1. 多組件 invoke 嵌套的缺點 prompt ChatPromptTemplate.from_template("{query}") llm ChatOpenAI(model"gpt-3.5-turbo-16k") parser StrOutputParser() # 獲取輸出內容 content parser.invoke( llm.invoke( prompt.invoke( {"query": r…

ArcGIS中批量獲取輸入面圖層A中各要素的四至點的實現方法

一、背景及意義 在日常工作中&#xff0c;我們經常會需要獲取面圖層的四至點&#xff0c;我們能否在ArcGIS中直接獲取面圖層的四至點呢&#xff1f;答案是肯定的&#xff0c;請繼續往下看。 二、大體思路 使用字段計算器計算輸入面圖層A中各面要素的XY的最大值和最小值&…

大IPD之——華為的戰略本質與實踐(二)

華為戰略執行的能力如此強&#xff0c;有兩個核心原因&#xff1a;一是管理體系起了非常重大的作用&#xff1b;二是企業文化導致華為的執行力特別強。華為在戰略方面&#xff0c;為什么每次都能轉型成功&#xff1f;背后是有很多實質性的內容支撐的。而華為如何做戰略&#xf…

『大模型筆記』第3篇:多長的 Prompt 會阻塞其他請求?優化策略解析

『大模型筆記』多長的 Prompt 會阻塞其他請求?優化策略解析 文章目錄 一、更簡單的問題:長 Prompt 阻塞請求隊列1. 請求并行預填方案(Request-Parallel Prefills)二、根本的問題(Fundamental Flaw):Token 生成被并行預填拖慢1. 解耦預填(Disaggregated Prefill):以延遲優…

21 - GAM模塊

論文《Global Attention Mechanism: Retain Information to Enhance Channel-Spatial Interactions》 1、作用 這篇論文提出了全局注意力機制&#xff08;Global Attention Mechanism, GAM&#xff09;&#xff0c;旨在通過保留通道和空間方面的信息來增強跨維度交互&#xf…

Java01--使用IDEA編寫運行第一個Java程序HelloWorld

一.先新建一個文件夾存放項目(后續可以推送到Gitee) 二.創建項目 1.打開IDEA&#xff0c;點擊首頁的新建項目 2.新建空項目并命名&#xff0c;存放路徑為步驟一創建的文件夾&#xff1a; 3.在新項目中新建一個src文件夾&#xff08;用于集中管理文件&#xff09; 4.在src文件夾…

目標檢測相關【清晰易懂】

目標檢測相關 &#xff08;b&#xff09;是語義分割&#xff0c;&#xff08;c&#xff09;是實例分割 目標檢測 每個目標一個框標簽 實例分割 語義分割 識別每一個目標個體 目標檢測基礎上進一步提升模型能力有兩個方向&#xff1a;實例分割、旋轉目標檢測。 實例分割 …

強化學習 A2C算法

3.actor-critic方法 3.1 Reinforce 算法&#xff0c;也稱為蒙特卡洛策略梯度。蒙特卡洛方差 第一節介紹了DQN 在上一節基于策略的方法中&#xff0c;我們的目標是直接優化策略&#xff0c;而無需使用價值函數。更準確地說&#xff0c;Reinforce 是 基于策略的方法 的一個子類…

關于MCU、MPU、SoC、DSP四大類型芯片

目錄 MCU、MPU、SoC、DSP四大類型芯片分析 一、MCU 1、概念 2、特點 3、常見芯片 4、應用場景 二、MPU 1、概念 2、特點 3、常見芯片 4、應用場景 三、SoC 1、概念 2、特點 3、常見芯片 4、應用場景 四、DSP 1、概念 2、特點 3、常見芯片 4、應用場景 MCU、…

【數據結構】圖論最短路圣器:Floyd算法如何用雙矩陣征服負權圖?

最短路徑 穿越負權迷霧&#xff1a;Floyd算法如何解鎖全圖最短路徑&#xff1f;??一、Floyd算法1.1 算法思想1.2 算法邏輯1.3 算法評價1.4 算法限制 二、三種算法對比&#x1f31f;結語 穿越負權迷霧&#xff1a;Floyd算法如何解鎖全圖最短路徑&#xff1f;?? 大家好&…

寶塔面板集成阿里云 OSS 備份失敗的解決方案

寶塔面板集成阿里云OSS備份失敗的解決方案 一、問題背景 在使用寶塔面板配置阿里云OSS云存儲備份功能時,用戶遇到如下錯誤: Traceback (most recent call last):File "class/CloudStoraUpload.py", line 144, in __init__from alioss_main import OSSClient as ocFile "…

如何安全高效地維護CMS智能插件?

作為網站開發者或運維人員&#xff0c;你是否經歷過這樣的場景&#xff1a;滿懷期待地點擊了插件“更新”按鈕&#xff0c;刷新頁面后卻看到一片刺眼的500錯誤&#xff1f;或發現網站加載速度從2秒驟降到10秒&#xff1f;智能插件為CMS系統&#xff08;如WordPress、Drupal、億…

FastAPI如何用角色權限讓Web應用安全又靈活?

title: FastAPI如何用角色權限讓Web應用安全又靈活? date: 2025/06/13 05:46:55 updated: 2025/06/13 05:46:55 author: cmdragon excerpt: 基于角色的路由訪問控制是Web應用中常見的安全控制模式,通過為用戶分配特定角色來管理權限。FastAPI利用依賴注入系統實現權限控制…

利用 SpreadJS 優化表格渲染性能

引言 在當今的數據驅動時代&#xff0c;表格作為一種重要的數據展示和交互方式&#xff0c;廣泛應用于各類 Web 應用中。然而&#xff0c;當表格數據量增大或操作復雜度提高時&#xff0c;渲染性能往往會成為一個關鍵問題。SpreadJS 作為一款功能強大的純前端電子表格控件&…