代碼安全規范1.1

命令注入是指應用程序執行命令的字符串或字符串的一部分來源于不可信賴的數據源,程序沒有對這
些不可信賴的數據進行驗證、過濾,導致程序執行惡意命令的一種攻擊方式。
1 :以下代碼通過 Runtime.exec() 方法調用 Windows dir 命令,列出目錄列表。
import java.io.*;
public class DirList {
public static void main(String[] str) throws Exception {
String dir = System.getProperty("dir");
Process proc = Runtime.getRuntime().exec("cmd.exe /c dir" + dir);
int result = proc.waitFor();
if (result != 0) {
System.out.println("process error: " + result);
}
InputStream in = (result == 0) ? proc.getInputStream() : proc.getErrorStream();
int c;
while ((c = in.read()) != -1) {
System.out.print((char) c);
}
}
}
攻擊者可以通過以下命令利用該程序。
java -Ddir='dummy & echo bad' DirList
該命令實際上執行的是以下兩條命令。
cmd.exe /c dir dummy & echo bad
2 :以下代碼來自一個 Web 應用程序,該段代碼通過運行 rmanDB.bat 腳本啟動 Oracle 數據庫備份,
然后運行 cleanup.bat 腳本刪除一些臨時文件。腳本文件 rmanDB.bat 接受一個命令行參數,其中指明需要
執行的備份類型。
...
String btype = request.getParameter("backuptype");
String cmd = new String("cmd.exe /K \"c:\\util\\rmanDB.bat "+btype+"&& c:\\utl\\cleanup.bat\"");
System.Runtime.getRuntime().exec(cmd);
...
該段代碼沒有對來自用戶請求中的 backuptype 參數做任何校驗。
通常情況下, Runtime.exec() 函數不會執行多條命令,但在以上代碼中,為了執行多條命令,程序調用
Runtime.exec() 方法,首先運行了 cmd.exe 指令,因此能夠執行用兩個與號分隔的多條命令了。如果攻擊者
傳遞了一個形式為 "&& del c:\\dbms\\*.*" 的字符串,那么該段代碼將會在執行其他指定命令的同時執行這
條命令。

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

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

相關文章

Jenkins實現自動化部署Springboot項目到Docker容器(Jenkinsfile)

Jenkins實現自動化部署Springboot項目到Docker容器 引言:為什么需要自動化部署? 在軟件開發中,頻繁的手動部署既耗時又容易出錯。通過 Docker + Jenkins + Git 的組合,您可以實現: ? 一鍵部署:代碼推送后自動構建和部署?? 環境一致性:Docker 確保開發、測試、生產環…

第二屆智慧教育與計算機技術國際學術會議(IECT 2025)

在數字化浪潮中,智慧教育與計算機技術的深度融合正重構教育生態。智能教學系統打破傳統課堂的單向灌輸模式,通過機器學習分析學習數據,為學生生成個性化學習路徑,推動被動接受向主動探索轉型。這對教育體系提出核心訴求&#xff1…

驅控邊界在哪里?知名舵機品牌偉創動力CNTE2025展帶來答案

2025年6月12日,北京國防科技裝備展將再度啟幕。作為微型驅控領域的代表性廠商,偉創動力(Kpower)將帶來覆蓋舵機、減速齒輪箱、無刷電機及一體化驅控模組在內的全系解決方案,舵機產品回應一個至關重要的技術命題——“國…

Day46 Python打卡訓練營

知識點回顧: 1. 不同CNN層的特征圖:不同通道的特征圖 2. 什么是注意力:注意力家族,類似于動物園,都是不同的模塊,好不好試了才知道。 3. 通道注意力:模型的定義和插入的位置 4. 通道注意力后…

專業級PDF轉CAD解決方案

PDF 文件因其出色的便攜性和穩定性,已成為許多用戶的首選格式。但在涉及圖像編輯或精細調整時,CAD 文件顯然更具優勢。 這款 CAD 圖紙轉換工具,界面清爽、操作直觀,是處理圖紙文件的理想助手。 它不僅支持不同版本 CAD 文件之間…

PDF文件如何轉換格式?簡單教程來了

PDF 格式以其高兼容性和穩定性被廣泛使用,但有時為了便于編輯或滿足特定軟件的要求,我們需要將其轉換為其他格式,如 Word、Excel、圖片等。那如何將PDF轉換成其他格式文件呢?其實方法很簡單,不清楚的小伙伴一起來看看吧…

三十四、面向對象底層邏輯-SpringMVC九大組件之FlashMapManager接口設計哲學

在構建符合 RESTful 原則或追求用戶體驗流暢性的 Web 應用時,“重定向后刷新”(PRG - Post/Redirect/Get)模式是避免表單重復提交、實現頁面無刷新跳轉的黃金法則。然而,重定向(REDIRECT:)的本質是客戶端發…

android手勢創建及識別保姆級教程

手勢交互,簡單來說,就是通過手指在屏幕上的滑動、點擊、縮放等動作與設備溝通的方式,早已成為現代移動設備用戶體驗的核心支柱。想想看,無論是日常刷短視頻時的上下滑動,還是地圖導航時的雙指縮放,甚至是游…

Python | Windows11通過離線方式安裝pyserial

導言 因公司網絡訪問的限制,沒辦法使用pip install pyserial輕松地安裝pyserial庫。 打開網頁:https://pypi.org/project/pyserial/#files 下載.whl cmd命令行 如下是命令行指令: pip install .\pyserial-3.5-py2.py3-none-any.whlpython …

【nano與Vim】常用命令

使用nano編輯器 保存文件 : 按下CtrlO組合鍵,然后按Enter鍵確認文件名。 退出編輯器 : 按下CtrlX組合鍵。 使用vi或vim編輯器 保存文件 : 按Esc鍵退出插入模式,然后輸入:w并按Enter鍵保存文件。 退出編輯器 &#xf…

(Python網絡爬蟲);抓取B站404頁面小漫畫

目錄 一. 分析網頁 二. 準備工作 三. 實現爬蟲 1. 抓取工作 2. 分析工作 3. 拼接主函數&運行結果 四. 完整代碼清單 1.多線程版本spider.py: 2.異步版本async_spider.py: 經常逛B站的同志們可能知道,B站的404頁面做得別具匠心&…

實戰設計模式之模板方法模式

概述 模板方法模式定義了一個操作中的算法骨架,并將某些步驟延遲到子類中實現。模板方法使得子類可以在不改變算法結構的前提下,重新定義算法中的某些步驟。簡單來說,就是在一個方法中定義了要執行的步驟順序或算法框架,但允許子類…

ROS1: 使用rosbag的方式將點云topic保存為pcd文件

ROS1: 使用rosbag的方式將點云topic保存為pcd文件。 分為兩步:步驟1:通過rosbag錄制點云 ,步驟2:通過ros1將rosbag保存為點云pcd文件。 ------------------------ 步驟一:指令示例如下: # topic 名稱&a…

MySQL 高級學習篇

一、連結(Join) 1.1 概念 聯結(Join)操作用于將多個表中的列組合在一起,形成一個新的查詢結果集。它允許我們從多個表中提取數據,并基于表之間的關系進行查詢。 1.2 類型 1. 內聯結(INNER J…

clickhouse 學習總結

在 ClickHouse 中,配置文件通常位于 /etc/clickhouse 目錄下。這個目錄包含了多個配置文件,用于控制 ClickHouse 的各種服務(如服務器、用戶、遠程服務等)的配置。 數據存儲目錄/var/lib/clickhouse 配置 文件目錄 /etc/clickho…

理解JavaScript中map和parseInt的陷阱:一個常見的面試題解析

前言 在JavaScript面試中,map和parseInt的組合常常被用作考察候選人對這兩個方法理解深度的題目。讓我們通過一個簡單的例子來深入探討其中的原理。 問題現象 [1, 2, 3].map(parseInt) // 輸出結果是什么?很多人可能會預期輸出[1, 2, 3],但…

字符串 金額轉換

package heima.Test09;import java.util.Scanner;public class Money {public static void main(String[] args) {//1。鍵盤錄入一個金額Scanner sc new Scanner(System.in);//請輸入一個數據String result "";int money;while (true) {System.out.println("請…

靜態相機中的 CCD和CMOS的區別

文章目錄 CCD處理方式CMOS處理方式兩者區別 首先根據 成像原理,CCD和CMOS的作用是一致的,都是為了將光子轉化為數字圖像,只是 轉換的方式出現差異。 CCD處理方式 獲取光子: 在電荷耦合器件(CCD)傳感器中…

Pycharm的終端無法使用Anaconda命令行問題詳細解決教程

很多初學者在Windows系統上安裝了Anaconda后,在PyCharm終端中運行Conda命令時,會遇到以下錯誤: conda : 無法將“conda”項識別為 cmdlet、函數、腳本文件或可運行程序的名稱。 請檢查名稱的拼寫,如果包括路徑,請確保…

[大語言模型]在個人電腦上部署ollama 并進行管理,最后配置AI程序開發助手.

ollama官網: 下載 https://ollama.com/ 安裝 查看可以使用的模型 https://ollama.com/search 例如 https://ollama.com/library/deepseek-r1/tags # deepseek-r1:7bollama pull deepseek-r1:7b改token數量為409622 16384 ollama命令說明 ollama serve #&#xff1a…