命令注入(Command Injection),是指在某些需要輸入資料的位置,還構造了惡意的代碼破壞了原先的陳述句結構,而系統缺少有效的過濾,最終達到破壞資料、資訊泄露甚至掌控電腦的目的,
low:
原始碼:

對指令沒有任何的過濾處理
target引數為將要ping的ip地址,比如在輸入框輸入127.0.0.1后,對于windows系統,會發出ping 127.0.0.1操作
這里可以引入命令列的幾種操作方式:
A && B: 先執行A,如果成功,執行B;
A || B :先執行A,如果失敗,執行B;
A | B:管道,先執行A后,將A的結果作為B的輸入,列印的是B的結果;
A & B:先執行A,然后不管成功與否,執行B;

medium:
代碼部分和low大致相

可以看到代碼中設定了set blacklist和remove any of charatars部分
相比Low級別的代碼,服務器端對ip引數做了一定過濾,即把”&&” ,”;”洗掉,本質上采用的是黑名單機制,但依舊存在安全風險,部分引數例如 | ,& ,等依舊可以使用,

High:
High等級代碼設定了更多過濾引數,但依舊存在一個問題就符號后增減空格仍然可以進行命令注入操作,

impossible:

除了增加了user_token和session_token欄位
stripslashes(string)
stripslashes函式會洗掉字串string中的反斜杠,回傳已剝離反斜杠的字串,
explode(separator,string,limit)
explode函式把字串打散為陣列,回傳字串的陣列,引數separator規定在哪里分割字串,引數string是要分割的字串,可選引數limit規定所回傳的陣列元素的數目
is_numberic()函式
它的回傳值為:如果指定的變數是數字和數字字串則回傳 TRUE,否則回傳 FALSE,
傳入ip地址(即用戶的輸入內容)后,服務器會利用explode函式將該地址依據.劃分為4個部分,比如127.0.0.1中的3個.將該ip劃分成了4個數字,檢驗每個部分是否為數字,所以如果出現非法字符,is_numberic()就回傳了false,
加入Anti-CSRFtoken,服務器端對token進行驗證,防止黑客利用保存用戶驗證資訊的cookie來偽造請求,
搜集了一些 CTF或滲透測驗中常用于進行命令注入攻擊拼接的命令:
sleep 5:觀察是否存在時間差來檢測是否存在漏洞;
whoami:當前的用戶;
cat /etc/shadow:影子檔案,存盤linux中用戶的密碼資訊
ls -alh /home/:查看用戶
ls -alh /home/用戶名/ : 查看具體用戶的目錄
usname -a:查看系統資訊
參考 <https://zhuanlan.zhihu.com/p/106785478>
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/295336.html
標籤:其他
