悟空雲課堂 第五期 OS命令注入漏洞

2021-10-06 00:19:45 字數 1388 閱讀 5222

本期主題為os命令注入漏洞的相關介紹。

01 什麼是os命令注入?

軟體在構造os命令時使用了外部輸入的資料,如果沒有對外部輸入中可能影響os命令的特殊元素進行過濾,或是過濾不充分/不正確,就有受到os命令注入攻擊的風險。

os命令注入缺陷允許攻擊者直接在作業系統執行各種命令,當缺陷存在於網頁應用等無法直接訪問作業系統的軟體中時,會造成一些脆弱性問題。而當該缺陷存在於有高階許可權的軟體中時,攻擊者可通過缺陷獲得高階許可權,從而造成極大的危害。

02 os命令注入兩種常見的子型別有哪些?

1、應用程式通過使用者輸入的引數來構造os命令。

例如,程式可能使用system(「nslookup [hostname]」)來執行nslookup命令,其中的hostname由使用者輸入。由於沒有檢查hostname中是否存在命令分隔符,攻擊者可將想執行的命令通過分隔符加在hostname中,當系統執行完nslookup後就會執行攻擊者的命令;

2、應用程式將輸入的整個字串作為乙個os命令。

例如,通過exec([command])來執行命令,其中command由使用者輸入,此時攻擊者可以通過命令分隔符注入命令。

03 os命令注入漏洞會造成哪些後果?

攻擊者可以執行未經授權的命令,然後可以使用這些命令來禁用軟體,或者讀取和修改攻擊者無權直接訪問的資料。由於目標應用程式直接執行命令而不是攻擊者,因此任何惡意活動似乎都來自應用程式或應用程式的所有者。

04 如何防範修補os命令注入漏洞?

從架構和設計的角度來說:

1、要用最小許可權去執行程式,不要給予程式多餘的許可權,最好只允許在特定的路徑下執行,可以通過明確的路徑執行命令;

2、盡可能使用庫或框架:使用不允許此弱點出現的經過審核的庫或框架,或提供更容易避免此弱點的構造。盡可能地使用庫呼叫,而不是呼叫外部程序來完成所需功能。

3、減少被攻擊面:對於那些被用於生成待執行命令的資料,盡可能避免其被外部可控的資料汙染。

從實現的角度來說:

1、雖然使用動態生成的查詢字串,**或命令將控制和資料混合在一起是有風險的,但有時它可能是不可避免的。正確引用引數並轉義這些引數中的任何特殊字元。最保守的方法是轉義或過濾所有未通過極其嚴格的白名單的字元(例如不是字母數字或空格的所有內容)。如果仍然需要一些特殊字元,例如空格,則在轉義/過濾步驟之後將每個引數包裝在引號中;

2、如果只允許執行有限的命令,使用白名單方式過濾。

05 os命令注入漏洞樣例:

public process example()

catch

(ioexception e)

return p;

}

第五期c語言答案

輸入兩個字串,從第一字串中刪除第二個字串中所有的字元,例如,輸入 they are students 和 aeiou 則刪除之後的第乙個字串變成 thy r studnts 編寫乙個函式,求乙個數字是否是回文數,回文數的概念 給定乙個數,這個數順讀和逆讀都是一樣的,例如 121,1221是回文數,1...

Python課堂筆記 第五期丨慕課練習

mooc中國慕課 python 程式設計 2020 商丘學院 1 判斷乙個整數是否是回文數。回文數是指正序 從左向右 和倒序 從右向左 讀都是一樣的整數,如果是回文數則輸出yes,否則輸出no。使用下面的函式頭 def main s 題目內容 判斷乙個整數是否是回文數。回文數是指正序 從左向右 和倒...

程式筆記 第五期 你好,NOIP

解釋一下 這篇 blog 不是我自發地要寫的,因此可能會有點水,不要在意 老師讓程式設計社的全體學員在這noip的暴風雨來臨之前的寧靜中寫下了這一篇blog,就這樣,數篇世界級的水部落格誕生了!然後再說一下,本來這篇 blog 是準備在noip開始之前寫好給自己打打底氣的,不過現在看來好像沒有什麼用...