天天看點

【滲透測試-web安全】指令注入什麼是指令攻擊過程DOS指令指令注入的成立條件WEB系統中哪些函數能夠執行系統指令

【滲透測試-web安全】指令注入

  • 什麼是指令
  • 攻擊過程
  • DOS指令
  • 指令注入的成立條件
  • WEB系統中哪些函數能夠執行系統指令

什麼是指令

DOS指令、Shell指令等執行指令,可以對系統進行很多敏感性的操作

攻擊過程

黑客構造指令–>伺服器程式解析–>對指令進行拼接–>web端執行執行對應多餘的拼接指令–>執行的指令作用于伺服器

DOS指令

使用&進行指令拼接、ipconfig查詢ip位址資訊、net user 檢視目前使用者、dir檢視目前目錄、find “hello” ./test.txt執行查找操作
|作為管道指令,前面指令的輸出時後面指令的輸入
           

指令注入的成立條件

有調用可執行系統指令需求的系統
函數或函數的參數可控的系統
指令能夠實作拼接的系統(使用系統指令白名單就能打破這一條件)
           

WEB系統中哪些函數能夠執行系統指令

基本指令 文法 傳回值 函數功能
system() string system(string command, int [return_var]); 成功:輸出的最後一行,失敗:FALSE 執行指令,并且顯示輸出
exec() string exec(string command, string [array], int [return_var]); 指令執行結果的最後一行内容 執行 command 指定的指令
shell_exec()  string shell_exec ( string $cmd ) ; 指令執行的輸出,出錯 NULL 通過 shell 環境執行指令
eval() mixed eval ( string $code ) 傳回 NULL,執行錯誤傳回 FALSE 把 code 作為PHP代碼執行
popen() resource proc_open ( string $cmd , array $descriptorspec , array &$pipes [, string $cwd = NULL [, array $env = NULL [, array $other_options = NULL ]]] ) 傳回表示程序的資源類型,如果失敗,傳回 FALSE。 類似 popen() 函數,提供更加強大的控制程式執行的能力
passthru() void passthru ( string $command [, int &$return_var ] ) 沒有傳回值 執行外部程式并顯示原始輸出

繼續閱讀