【滲透測試-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 ] ) | 沒有傳回值 | 執行外部程式并顯示原始輸出 |