版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
命令注入攻擊前言命令注入漏洞是指攻擊者可以隨意執(zhí)行系統(tǒng)命令。它屬于高危漏洞之一,也屬于代碼執(zhí)行的范疇。命令注入漏洞不僅存在于B/S架構(gòu)中,在C/S架構(gòu)中也常常遇到,本章節(jié)我們主要講述Web中的命令注入漏洞。命令注入攻擊原理命令注入攻擊簡介命令注入攻擊防御命令注入攻擊實(shí)踐命令注入攻擊命令注入是一種攻擊,其目標(biāo)是通過易受攻擊的應(yīng)用程序在主機(jī)操作系統(tǒng)上執(zhí)行任意命令。當(dāng)應(yīng)用程序?qū)⒉话踩挠脩籼峁┑臄?shù)據(jù)(表單、cookie、HTTP標(biāo)頭等)傳遞給系統(tǒng)外殼時(shí),這些類型的攻擊是可能的。在這種攻擊中,攻擊者提供的操作系統(tǒng)命令通常以易受攻擊的應(yīng)用程序的權(quán)限執(zhí)行。通常,它們可能主要是由于輸入驗(yàn)證不足。這種攻擊與代碼執(zhí)行不同,代碼執(zhí)行允許攻擊者添加自己的代碼,然后由應(yīng)用程序執(zhí)行。在命令注入中,攻擊者擴(kuò)展了應(yīng)用程序的默認(rèn)功能,無需注入代碼即可執(zhí)行系統(tǒng)命令。命令注入攻擊命令注入攻擊危害利用此漏洞,攻擊者可以使用易受攻擊的應(yīng)用程序的權(quán)限運(yùn)行操作系統(tǒng)命令。根據(jù)當(dāng)前用戶的權(quán)限,此漏洞可能導(dǎo)致訪問系統(tǒng)、泄露關(guān)鍵敏感數(shù)據(jù),并可能導(dǎo)致對(duì)服務(wù)器或系統(tǒng)的完全控制接管。命令注入攻擊漏洞成因Web應(yīng)用程序有時(shí)需要執(zhí)行操作系統(tǒng)命令(OS命令)來與底層主機(jī)操作系統(tǒng)和文件系統(tǒng)進(jìn)行通信。這可以用于運(yùn)行系統(tǒng)命令、啟動(dòng)用另一種編程語言編寫的應(yīng)用程序,或者運(yùn)行shell、python、perl或PHP腳本。對(duì)于任何操作系統(tǒng),包括Windows、Unix和Linux,都可以使用可以執(zhí)行作為shell命令傳遞給其他腳本的命令的函數(shù)。我們知道命令是可以連接的,如果我們?nèi)サ魀ing
的IP,然后拿“|”連接符連接其他命令,會(huì)發(fā)生什么呢?命令注入攻擊示例拿DVWA舉例,DVWA是一個(gè)滲透測(cè)試平臺(tái),來看下命令執(zhí)行這個(gè)模塊,ping命令執(zhí)行如下:命令注入攻擊示例拼接命令:命令注入攻擊原理命令注入攻擊簡介命令注入攻擊防御命令注入攻擊實(shí)踐命令注入攻擊簡介命令注入漏洞是指Web應(yīng)用程序中調(diào)用了系統(tǒng)可執(zhí)行命令的函數(shù),而且輸入?yún)?shù)是可控的,如果黑客在輸入中拼接了命令,就可以進(jìn)行非法操作。命令注入攻擊簡介通常情況下腳本應(yīng)用有時(shí)需要調(diào)用一些執(zhí)行系統(tǒng)命令的函數(shù),如PHP中的system、execshell_exec、passthru、popen、proc_popen等,當(dāng)用戶能控制這些函數(shù)中的參數(shù)時(shí),就可以將惡意系統(tǒng)命令拼接到正常命令中,從而造成命令執(zhí)行攻擊。命令注入攻擊常用函數(shù)system函數(shù)命令執(zhí)行命令注入攻擊常用函數(shù)exec函數(shù)命令執(zhí)行命令注入攻擊常用函數(shù)passthru函數(shù)命令執(zhí)行命令注入攻擊命令連接符shell_exec函數(shù)命令執(zhí)行命令解釋shell1&shell2既執(zhí)行shell1的命令也執(zhí)行shell2的命令shell1&&shell2在shell1執(zhí)行成功的情況下執(zhí)行shell2,shell1執(zhí)行失敗就不會(huì)執(zhí)行shell2,和邏輯與一樣shell1|shell2“|”為管道符,它將shell1執(zhí)行的結(jié)果作為shell2的輸入,因此無論shell1執(zhí)行結(jié)果如何,都會(huì)執(zhí)行shell2shell1||shell2在shell1執(zhí)行失敗的情況下執(zhí)行shell2,shell1執(zhí)行成功則不會(huì)執(zhí)行shell2,和邏輯或一樣shell1;shell2在Linux系統(tǒng)下會(huì)將shell1和shell2都執(zhí)行shell1`shell2`shell2的執(zhí)行結(jié)果會(huì)在shell1的報(bào)錯(cuò)信息中顯示命令注入攻擊命令連接符如果后臺(tái)代碼并未對(duì)用戶輸入的參數(shù)的值進(jìn)行過濾就直接與命令進(jìn)行拼接并執(zhí)行,就會(huì)造成命令注入攻擊。常用的命令注入命令當(dāng)您發(fā)現(xiàn)操作系統(tǒng)命令注入漏洞時(shí),執(zhí)行一些初始命令以獲取有關(guān)您已入侵的系統(tǒng)的信息通常很有用。下面總結(jié)了一些在Linux和Windows平臺(tái)上有用的命令:命令的目的 Linux 視窗當(dāng)前用戶名 whoami whoami操作系統(tǒng) uname-a ver網(wǎng)絡(luò)配置 ifconfig ipconfig/all網(wǎng)絡(luò)連接 netstat-an netstat-an運(yùn)行進(jìn)程 ps-ef tasklistargoptionloadprocessstepreadfunctionreqfeatureexemodulepayloadrunprint常用的命令注入攻擊測(cè)試參數(shù)cmdexeccommandexecutepingqueryjumpcoderegdofunc命令注入攻擊原理命令注入攻擊簡介命令注入攻擊防御命令注入攻擊實(shí)踐命令注入攻擊防御迄今為止,防止操作系統(tǒng)命令注入漏洞的最有效方法是永遠(yuǎn)不要從應(yīng)用層代碼調(diào)用操作系統(tǒng)命令。幾乎在每種情況下,都有使用更安全的平臺(tái)API實(shí)現(xiàn)所需功能的替代方法。如果認(rèn)為使用用戶提供的輸入調(diào)用操作系統(tǒng)命令不可避免,則必須執(zhí)行強(qiáng)輸入驗(yàn)證。一些有效驗(yàn)證的例子包括:·根據(jù)允許值的白名單進(jìn)行驗(yàn)證?!を?yàn)證輸入是否為數(shù)字?!を?yàn)證輸入僅包含字母數(shù)字字符,沒有其他語法或空格。永遠(yuǎn)不要試圖通過轉(zhuǎn)義shell元字符來清理輸入。實(shí)際上,這太容易出錯(cuò)并且容易被熟練的攻擊者繞過。命令注入攻擊防御命令注入攻擊代碼層防御:·盡量少的調(diào)用執(zhí)行系統(tǒng)命令的函數(shù),通過黑名單的方式過濾敏感函數(shù),如在PHP的配置文件php.ini中禁止一部分危險(xiǎn)函數(shù)。disable_functions=system,passthru,shell_exec,exec,popen,白名單的方式對(duì)特殊輸入的類型/長度進(jìn)行限制?!?duì)開發(fā)者要執(zhí)行特定系統(tǒng)命令,必須把命令轉(zhuǎn)換成一個(gè)字符串,然后傳給執(zhí)行者(也就是shell),然后shell再解析,這個(gè)傳遞過程就可能會(huì)出現(xiàn)信息傳遞不對(duì)等的問題,就很容易造成實(shí)際執(zhí)行命令和預(yù)期執(zhí)行的產(chǎn)生差別。·如果非要使用到該功能,盡量使用pcntl_exec這類可以限制一次只執(zhí)行一條命令并且參數(shù)為數(shù)組傳入的函數(shù)而不是system這種直接調(diào)用sh去執(zhí)行命令的函數(shù),同事在執(zhí)行系統(tǒng)命令的時(shí)候檢查用戶輸入?yún)?shù)(即可控部分),在使用pcntl_exec之前也需要小心地檢查被執(zhí)行的命令是否存在執(zhí)行子命令的可能。命令注入攻擊防御命令注入攻擊企業(yè)角度防御:·預(yù)防:在業(yè)務(wù)得研發(fā)初期就需要安全的接入,在軟件的設(shè)計(jì),開發(fā),測(cè)試,運(yùn)行環(huán)境等等環(huán)節(jié)進(jìn)行管控,提前將可能出現(xiàn)的問題扼殺在初期?!z測(cè):在業(yè)務(wù)上線后,對(duì)生產(chǎn)環(huán)節(jié)進(jìn)行周期性檢測(cè),做好各類資產(chǎn)管理,安全問題排查,做好風(fēng)險(xiǎn)評(píng)估工作,對(duì)系統(tǒng)提早發(fā)現(xiàn)并修復(fù)漏洞。·防御:建立完整的漏洞管理方案,漏洞應(yīng)急響應(yīng)流程,建立各種防御系統(tǒng),在漏洞發(fā)生的時(shí)候有效的攔截。命令注入攻擊原理命令注入攻擊簡介命令注入攻擊防御命令注入攻擊實(shí)踐命令注入攻擊實(shí)驗(yàn)環(huán)境存在一個(gè)命令注入漏洞,應(yīng)用程序查看庫存的功能執(zhí)行一個(gè)包含用戶提供的產(chǎn)品和商店ID的shell命令,并在其響應(yīng)中返回該命令的原始輸出。命令注入攻擊使用BurpSuite進(jìn)行抓包,返回包中可以看到庫存的數(shù)量命令注入攻擊使用管道符進(jìn)行拼接,完成命令執(zhí)行盲操作系統(tǒng)命令注入攻擊操作系統(tǒng)命令注入的許多實(shí)例都是盲漏洞。這意味著應(yīng)用程序不會(huì)在其HTTP響應(yīng)中返回命令的輸出。仍然可以利用盲點(diǎn)漏洞,但需要不同的技術(shù)??紤]一個(gè)允許用戶提交有關(guān)該站點(diǎn)的反饋的網(wǎng)站。用戶輸入他們的電子郵件地址和反饋消息。然后,服務(wù)器端應(yīng)用程序生成一封包含反饋的電子郵件給站點(diǎn)管理員。為此,它mail使用提交的詳細(xì)信息調(diào)用程序。例如:mail-s"Thissiteisgreat"-aFrom:peter@
feedback@mail命令的輸出(如果有)不會(huì)在應(yīng)用程序的響應(yīng)中返回,因此使用echo有效負(fù)載將無效。在這種情況下,可以使用各種其他技術(shù)來檢測(cè)和利用漏洞。使用時(shí)間延遲檢測(cè)盲操作系統(tǒng)命令執(zhí)行根據(jù)應(yīng)用程序響應(yīng)所需的時(shí)間來確認(rèn)命令已執(zhí)行。該ping命令是執(zhí)行此操作的有效方法,因?yàn)樗试S指定要發(fā)送的ICMP數(shù)據(jù)包的數(shù)量,以及運(yùn)行該命令所需的時(shí)間:&ping-c10&此命令將導(dǎo)致應(yīng)用程序ping其環(huán)回網(wǎng)絡(luò)適配器10秒。使用時(shí)間延遲檢測(cè)盲操作系統(tǒng)命令執(zhí)行實(shí)驗(yàn)環(huán)境存在一個(gè)命令注入漏洞,應(yīng)用程序命令的輸出不會(huì)在響應(yīng)中返回使用時(shí)間延遲檢測(cè)盲操作系統(tǒng)命令執(zhí)行嘗試替換Ping命令進(jìn)行測(cè)試,可以發(fā)現(xiàn)BurpSuite一直處于Waiting狀態(tài)使用時(shí)間延遲檢測(cè)盲操作系統(tǒng)命令執(zhí)行接著替換ping–c10來測(cè)試,通過響應(yīng)包的時(shí)間判斷,命令確實(shí)執(zhí)行了通過重定向輸出利用盲操作系統(tǒng)命令注入將注入命令的輸出重定向到Web根目錄中的文件中,然后您可以使用瀏覽器檢索該文件。例如,如果應(yīng)用程序從文件系統(tǒng)位置提供靜態(tài)資源/var/www/static,那么您可以提交以下輸入:&whoami
>/var/www/static/whoami.txt&該>字符將whoami命令的輸出發(fā)送到指定的文件。然后,您可以使用瀏覽器獲取hwhoami.txt文件以檢索文件,并查看注入命令的輸出。通過重定向輸出利用盲操作系統(tǒng)命令注入實(shí)驗(yàn)環(huán)境存在一個(gè)命令注入漏洞,命令的輸出不會(huì)在響應(yīng)中返回。但是可以使用輸出重定向來捕獲命令的輸出。利用命令whoami>/var/www/images/output.txt,重定向?qū)⒚畹慕Y(jié)果輸出到一個(gè)文件中。通過重定向輸出利用盲操作系統(tǒng)命令注入前臺(tái)刷新頁面的時(shí)候,可以看到使用filename參數(shù)引用圖片名進(jìn)行展示通過重定向輸出利用盲操作系統(tǒng)命令注入替換圖片為重定向的文件名,如果可以使用../進(jìn)行目錄穿越,那么重定向文件路徑就可以不用爆破,如果不能夠目錄穿越,只能引用指定目錄下的文件,那么就必須猜解,例如該環(huán)境的/var/www/images/目錄。命令注入攻擊利用姿勢(shì)總結(jié)·存在回顯示的話,可以直接讀取各種配置文件,密碼文件,數(shù)據(jù)庫連接文件等等·遇到不回顯的情況,最可靠的方法使用時(shí)間延遲推斷,類似與盲注的方法。通過一些命令的延時(shí)作用來判斷漏洞的存在,例如ping命令·不能在瀏覽器直接看到回顯,可將命令重定向到當(dāng)前目錄下的文件中并查看?;蛘哂肨FTP上傳工具到服務(wù)器,用telnet和netcat建立反向shell,用mail通過SMTP發(fā)送結(jié)果給自己的計(jì)算機(jī)·查看自己的權(quán)限,可以提升自己權(quán)限,訪問敏感數(shù)據(jù)或控制服務(wù)器。命令注入利用場(chǎng)景分類·通用的代碼層命令執(zhí)行:一些商業(yè)應(yīng)用需要執(zhí)行命令,商業(yè)應(yīng)用的一些核心代碼可能封裝在二進(jìn)制文件中,在web應(yīng)用中通過system函數(shù)來調(diào)用:
system("/bin/program--arg$arg");·系統(tǒng)的漏洞造成命令執(zhí)行:bash破殼漏洞(CVE-201
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 新能源汽車智能安全-洞察分析
- 網(wǎng)絡(luò)虛擬化資源調(diào)度優(yōu)化洞察報(bào)告-洞察分析
- 污染物吸附材料研發(fā)-洞察分析
- 歷史中考備考經(jīng)驗(yàn)交流主題發(fā)言稿范文(6篇)
- 外匯市場(chǎng)干預(yù)效果評(píng)估-洞察分析
- 網(wǎng)絡(luò)文化對(duì)表情包的影響-洞察分析
- 文化遺產(chǎn)保護(hù)與環(huán)境保護(hù)-洞察分析
- 醫(yī)生申請(qǐng)換科室申請(qǐng)書范文(6篇)
- 農(nóng)業(yè)教育中的技術(shù)培訓(xùn)與能力提升
- 辦公環(huán)境中提升工作效率的色彩配置
- 掛靠裝修公司合同范例
- 湖南省邵陽市2023-2024學(xué)年高一上學(xué)期拔尖創(chuàng)新人才早期培養(yǎng)競賽(初賽)數(shù)學(xué)試題 含解析
- 2024年執(zhí)業(yè)藥師資格繼續(xù)教育定期考試題庫附含答案
- 微短劇制作手冊(cè)專業(yè)版
- 酒店前臺(tái)消防安全培訓(xùn)
- 2021-2022學(xué)年河北省唐山市高一上學(xué)期期末語文試題
- 【期末復(fù)習(xí)提升卷】浙教版2022-2023學(xué)年八年級(jí)上學(xué)期數(shù)學(xué)期末壓軸題綜合訓(xùn)練試卷1(解析版)
- 山東省臨沂市費(fèi)縣2023-2024學(xué)年八年級(jí)上學(xué)期1月期末生物試題
- PDCA血液透析水循環(huán)案例匯報(bào)
- 巖石鉆機(jī)施工方案
- 山東省煙臺(tái)市2023-2024學(xué)年七年級(jí)上學(xué)期期末數(shù)學(xué)試題(含答案)
評(píng)論
0/150
提交評(píng)論