★安全測試之SQL注入★linux
讀書與實踐是獲取知識的主要渠道,學習的權力只掌握在每一個人本身手中,讓學習成爲一種生活的習慣,這比任何名牌大學的校徽重要得多!程序員
——張老師web
導圖安全
1. 什麼是命令行注入?服務器
2. 實例演練微信
1. 什麼是命令行注入?網絡
命令注入:利用能夠調用系統命令的web應用,經過構造特殊命令字符串的方式,把惡意代碼輸入一個編輯域(例如缺少有效驗證的輸入框)來改變網頁動態生成的內容,最終實現本應在服務端才能工做的系統命令。一個惡意黑客能夠利用這種攻擊方法來非法獲取數據或者網絡資源。svg
命令注入攻擊最初被關注到,是Shell命令注入攻擊(因此最初也被稱爲Shell命令注入攻擊),由挪威一名程序員在1997年意外發現的。學習
在黑客的世界,針對不一樣的軟件系統,有各自特有的命令注入方式。最多見的命令注入攻擊形式是SQL命令注入攻擊(簡稱SQL注入),是指惡意黑客利用設計上的安全漏洞,把SQL代碼粘貼在網頁形式的輸入框內,進而改變服務端數據。PHP應用程序中也有名爲PHP命令注入攻擊的漏洞——國內著名的Web應用程序Discuz!、DedeCMS等都曾經存在過該類型漏洞。
不管哪一種形式,它們的攻擊原理都是同樣的。即當惡意黑客進入一個有命令注入漏洞的網頁時,他們構造數據同時輸入了惡意命令代碼,由於系統對此並未過濾,惡意命令代碼一併執行,最終致使信息泄露或者正常數據的破壞,甚至可能會致使惡意命令掌控該用戶的電腦和他們的網絡。
命令行注入攻擊中經常使用的命令拼接符:
常見的拼接命令: |
|
|
|
&,&&,|,||命令拼接符的區別 |
|
A&B |
拼接,A和B之間無制約關係 |
A&&B |
A執行成功,以後纔會執行B |
A|B |
A的輸出做爲B的輸入 |
A||B |
A執行失敗,以後纔會執行B |
注:因爲&在url中用於分隔參數因此在命令注入中須要轉碼爲 %26 |
2. 實戰演練
一、如下實際場景實驗,打開靶機頁面:
二、這是簡單的ping功能頁面,輸入IP後,執行ping命令並返回內容,在「Enter an IP address: 」輸入框裏輸入「127.0.0.1」,提交後,能夠看到該命令正常執行後返回信息:
三、已知操做系統固有特色,使用鏈接符,能夠執行多條指令:
command1 && command2 若是command1執行成功,則執行command2
command1 | |command2 若是command1執行失敗,則執行command2
(實際鏈接符有多種組合方式,傳說&和|兩種鏈接符在windows和linux環境下都支持)
四、模擬攻擊者,在「Enter an IP address: 」輸入框裏輸入「127.0.0.1&&echo 「hello world」」 ,提交後,能夠看到除了ping命令被正常執行外,echo 「hello world」在最後被執行(hello world帶着引號跑出來了,有點土啊):
五、模擬攻擊者,在「Enter an IP address: 」輸入框裏輸入「123||net user」 ,提交後,能夠看到ping命令執行失敗,net user命令被執行:
六、一旦存在命令注入漏洞,攻擊者就能夠在目標系統執行任意命令,這一般意味着服務器被拱手讓人。
3. 遺留問題
危害有哪些?世界上第一個命令注入攻擊程序能隨意地從一個網站刪除網頁,就像從本地磁盤刪除文件同樣簡單;
什麼類型的網站會執行系統命令?或者說哪些web應用會成爲攻擊的目標羣體?目前只知道域名查詢類的網站會用系統命令執行用戶提交的信息。
接上一個問題,網站的什麼部分會執行系統命令?
發現漏洞,該如何最大化體現漏洞價值?(挖掘價值)
利用完漏洞,該如何毀屍滅跡?(隱匿行蹤)
-
怎麼防範?初步思路是白名單,具體實施方法還須要進一步研究。
點點點點一下嘛
更多專題
1 |
|
2 |
|
3 |
|
想法丨發現丨習慣丨人文
讓閱讀成爲習慣,讓靈魂擁有溫度
shalayang
秀米XIUMI
若是以爲小編的分享對您有所幫助,歡迎轉發和關注
本文分享自微信公衆號 - 軟件測試經驗與教訓(udatest)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。