02命令執行代碼注入漏洞(43頁)ppt課件_第1頁
02命令執行代碼注入漏洞(43頁)ppt課件_第2頁
02命令執行代碼注入漏洞(43頁)ppt課件_第3頁
02命令執行代碼注入漏洞(43頁)ppt課件_第4頁
02命令執行代碼注入漏洞(43頁)ppt課件_第5頁
已閱讀5頁,還剩38頁未讀, 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、命令執行/代碼注入破綻王朋濤深服氣北京平安團隊命令執行/代碼注入破綻概述命令執行/代碼注入破綻分類引見命令執行/代碼注入破綻發掘方法命令執行/代碼注入破綻攻擊防御總結培訓提綱命令執行/代碼注入破綻概述命令執行/代碼注入破綻概述命令執行/代碼注入破綻的出現 運用程序直接/間接運用了動態執行命令的危險函數,并且這個函數的運轉參數是用戶可控的。如php可動態執行系統命令的函數:system、exec、passthru等等,php可動態執行php代碼的有eval;jsp可動態執行系統命令的函數有: Runtime.getRuntime().exec(.);asp/aspx可動態執行asp/aspx代碼

2、的有:eval等等。命令執行/代碼注入破綻的本質 程序設計違背了“數據與代碼分別的原那么。命令執行/代碼注入破綻分類引見命令執行/代碼注入破綻分類引見命令或代碼直接注入執行破綻命令或代碼本地包含執行破綻命令或代碼遠程包含執行破綻命令或代碼反序列化執行破綻命令或代碼動態變量執行破綻命令或代碼動態函數執行破綻命令執行/代碼注入破綻分類引見命令或代碼直接注入執行破綻概述命令注入:運用程序直接運用了危險的可執行系統命令的函數,比如php的system、exec函數等,并且這些函數的運轉參數是用戶可控的,假設過濾不嚴厲,就會增大命令執行破綻的概率。命令或代碼本地包含執行破綻。代碼注入:運用程序直接運用了

3、危險的代碼執行函數,如php/asp/aspx的eval函數等,并且這些函數的運轉參數是用戶可控的,假設過濾不嚴厲,就會增大命令執行破綻的概率。命令執行/代碼注入破綻分類引見命令直接注入例如1(CGI)系統命令注入執行破綻例如,就比如去年很火的Bash破綻,就屬于這類破綻,用戶可直接更改HTTP頭User-Agent的值,就可引發命令注入,如以下圖命令執行結果將從效力器上下載一個php文件到本地:命令執行/代碼注入破綻分類引見命令直接注入例如2(PHP)系統命令注入執行破綻例如,如效力器端用php言語實現,并且有個system.php文件的內容含有如下片段eval(“$_GETarg;); ,

4、或類似的片段,就會存在此破綻。如以下圖:命令執行/代碼注入破綻分類引見命令直接注入例如2假設用戶輸入的參數arg的值為精心組裝過的,如:IP/test.php?arg=cat /etc/passwd最后執行的命令就變成了 system(cat /etc/passwd),輸出結果如以下圖顯示出了效力器機器上的用戶名等敏感信息:命令執行/代碼注入破綻分類引見代碼直接注入例如1(PHP)代碼注入執行破綻例如,如效力器端用php言語實現,并且有個eval.php文件的內容如以下圖:命令執行/代碼注入破綻分類引見代碼直接注入例如1假設用戶輸入精心組裝過的數據,如:/cmdcode/code/eval.p

5、hp?arg=phpinfo()那么將執行php代碼命令phpinfo(),結果如以下圖:命令執行/代碼注入破綻分類引見代碼直接注入例如2(Strust2)代碼注入執行破綻例如,如之前紅極一時的Strust2破綻,也是由于未對用戶可控參數進展有效的過濾引發的代碼注入執行破綻,如用戶輸入:XXX/save.action?redirect:$%23a%3d(new java.lang.ProcessBuilder(new java.lang.Stringipconfig,/all).start(),%23b%3d%23a.getInputStream(),%23c%3dnew java.io.In

6、putStreamReader(%23b),%23d%3dnew java.io.BufferedReader(%23c),%23e%3dnew char50000,%23d.read(%23e),%23matt%3d%23context.get(com.opensymphony.xwork2.dispatcher.HttpServletResponse),%23matt.getWriter().println(%23e),%23matt.getWriter().flush(),%23matt.getWriter().close()命令執行/代碼注入破綻分類引見代碼直接注入例如2命令執行/代碼

7、注入破綻分類引見命令或代碼本地 /遠程文件包含執行破綻概述命令本地/遠程包含破綻:運用程序直接包含或執行了用戶可控的上傳腳本文件或遠程文件(URL援用文件),就會觸發此破綻。代碼本地/遠程包含破綻:運用程序直接包含了用戶可控的上傳文件或遠程文件(URL援用文件),就會觸發此破綻,比如php/asp/aspx的include,以及php的include_once、require_once、require等,有些遠程文件包含的有些限制條件,比如PHP的就必需翻開配置選項:allow_url_fopen,才會勝利。命令執行/代碼注入破綻分類引見命令本地文件包含例如1(360平安衛士) 360平安衛士

8、有個“360電腦專家功能,可以聊天,在聊天窗口中輸入如以下圖內容,就會觸發本地包含破綻。這個破綻的原理是360會將聊天內容寫入到文件中去,然后顯示的時候去讀取文件,執行了包含的命令。命令執行/代碼注入破綻分類引見命令本地文件包含例如1就會看到這奇觀的一幕,彈出命令行了.命令執行/代碼注入破綻分類引見命令本地文件包含例如2(php) 假設效力端代碼文件中有個php文件的內容包含有類似代碼【require($_GETp);】的片段,就會引發本地包含的破綻。其中參數p為用戶可控的,假設p指定為一個用戶上傳的文件cmd.txt,并且這個txt的內容為 ,就會觸發此破綻命令執行/代碼注入破綻分類引見命令

9、本地文件包含例如2命令執行/代碼注入破綻分類引見代碼本地文件包含例如1(php) 假設效力端代碼文件中有個php文件的內容包含有類似代碼【require($_GETp);】的片段,就會引發本地包含的破綻。其中參數p為用戶可控的,假設p指定為一個用戶上傳的文件code.txt,并且這個txt的內容為 ,就會觸發此破綻命令執行/代碼注入破綻分類引見代碼本地文件包含例如1命令執行/代碼注入破綻分類引見命令或代碼反序列化執行破綻概述有些動態腳本言語,如php支持實例對象的序列化傳輸,然后效力端將實例對象反序列化出來并執行解析后實例的構造函數、析構函數或_wakeup()函數,假設這些函數利用了用戶可控

10、的參數,那么會觸發命令/代碼注入執行破綻,原理和之前的直接注入一樣。命令執行/代碼注入破綻分類引見反序列化破綻例如1假設效力端代碼文件中有個php文件的內容包含有類似如以下圖代碼片段,就存在反序列化的破綻。命令執行/代碼注入破綻分類引見反序列化破綻例如1訪問serialize.php可以獲取$class_ser的值為:O:1:a:1:s:4:test;s:19:;命令執行/代碼注入破綻分類引見反序列化破綻例如1假設用戶提交如以下圖的序列化后的$class_ser的值給參數test,就會執行phpinfo()代碼。命令執行/代碼注入破綻分類引見命令或代碼動態變量/函數執行破綻概述有些動態腳本言語

11、,如php,支持變量或函數的動態定義,即運轉時可經過參數名來動態組裝變量、變量值或函數。假設代碼中包含有類似如圖中類似代碼片段,就會存在動態變量/函數的執行破綻。命令執行/代碼注入破綻分類引見命令或代碼動態變量/函數執行破綻例如當用戶在閱讀器中輸入:/dynamic.php?dyn_func=system&argument=ipconfig,就相當于執行了系統命令ipconfig,如以下圖命令執行/代碼注入破綻發掘方法命令執行/代碼注入破綻發掘方法發掘方法從破綻的本質以及前面的例如中可以明顯的看出,輸入點是一切注入的根源,發掘破綻就是尋覓這些輸入點,尋覓方法主要有: - 白盒審計 - 黑盒審計

12、 - 灰盒審計 命令執行/代碼注入破綻發掘方法白盒審計概述白盒審計,就是指手上曾經有份完好的源碼,然后分析源碼,選擇一切用戶可控的輸入點,然后分析這些輸入點能否未過濾或過濾不嚴厲,這些點是最易引發注入破綻,比如常見的XSS、SQL、命令以及代碼注入破綻等。白盒審計方法普通采用人工以及工具相結合的方法。純工具的相對一些有些邏輯跳轉的沒法發現,純人工的效率太低,也容易脫漏,正常情況是運用工具找到一切的輸入點,然后人工依次跟蹤變量的處置流程。命令執行/代碼注入破綻發掘方法白盒審計工具Fortify SCA Fortify SCA 是一個靜態的、白盒的軟件源代碼平安測試工具。它經過內置的五大主要分析引

13、擎:數據流、語義、構造、控制流、配置流等對運用軟件的源代碼進展靜態的分析,分析的過程中與它特有的軟件平安破綻規那么集進展全面地匹配、查找,從而將源代碼中存在的平安破綻掃描出來,并給予整理報告。掃描的結果中不但包括詳細的平安破綻的信息,還會有相關的平安知識的闡明,以及修復意見的提供。命令執行/代碼注入破綻發掘方法白盒審計工具Fortify SCA 命令執行/代碼注入破綻發掘方法白盒審計工具SeaySeay源代碼審計系統,Seay源代碼審計系統目前只支持PHP,功能包括不斷在更新: - 高準確度自動白盒審計 ; - mysql數據庫管理 ; - 代碼高亮; - 黑盒敏感信息泄露一鍵審計 ; - 函

14、數查詢 ; - 正那么調試; - 代碼調試 ; - 多種字符編碼轉換; - 函數/變量定位; - 暫時記錄可保管; - 審計報告; - 編輯保管文件; - 自定義規那么 ; - 自動晉級檢測; - 自定義編輯器 ; - POST數據提交;命令執行/代碼注入破綻發掘方法白盒審計工具Seasy命令執行/代碼注入破綻發掘方法黑盒審計概述黑盒審計,就是指無法獲取到源代碼,只能經過現有的WEB運用,進展摸黑測試,測試一切的輸入點。通用的方法是運用掃描工具掃描WEB的目錄列表以及一切參數列表,并分析掃描報告,查看能否有可疑的輸入點。黑盒審計工具常用的有wvs、appscan、nessus、w3af等等,有

15、很多,就不一一列舉了,下面就簡單的引見下這幾個軟件。命令執行/代碼注入破綻發掘方法黑盒審計工具WVS(Web Vulnerability Scanner)是一個自動化的Web運用程序平安測試工具,它可以掃描任何可經過Web閱讀器訪問的和遵照HTTP/HTTPS規那么的Web站點和Web運用程序。適用于任何中小型和大型企業的內聯網、外延網和面向客戶、雇員、廠商和其它人員的Web網站。命令執行/代碼注入破綻發掘方法黑盒審計工具WVS命令執行/代碼注入破綻發掘方法灰盒審計概述灰盒審計,就是指結合前面引見的兩種方法白盒和黑盒審計,邊黑盒掃描,邊白盒審計,這樣就能快速的定位到哪個輸入點可疑,并且經過白盒審計,就可迅速的找到并編寫POC代碼?;液袑徲嬈胀ㄒ蕾囬啔v,閱歷越豐富,普通就能很快的定位到問題所在點以及問題重現,快速的編寫出exp代碼。命令執行/代碼注入破綻攻擊防御命令執行/代碼注入攻擊防御灰盒審計概述基于前面的分析,注入破綻的根源在于過分的置信了每一位用戶,總假設用戶的輸入是正常

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論