Heim > Artikel > Backend-Entwicklung > Vollständige Erklärung der PHP-Schwachstellen (2) – Command-Injection-Angriff.
Command-Injection-Angriff
Die folgenden 5 Funktionen können in PHP verwendet werden, um externe Anwendungen oder Funktionen auszuführen
System, Exec, Durchgang, Shell_exec, "(gleiche Funktion wie Shell_exec)
Funktionsprototyp
string system(string command, int &return_var)
command Der auszuführende Befehl
return_var speichert den Statuswert nach Ausführung des ausgeführten Befehls
string exec (string command, array &output, int &return_var)
command Der auszuführende Befehl
Ausgabe Rufen Sie jede Zeile der String-Ausgabe ab, indem Sie den Befehl
ausführenreturn_var speichert den Statuswert nach der Ausführung des Befehls
void passhru (string command, int &return_var)
command Der auszuführende Befehl
return_var speichert den Statuswert nach Ausführung des Befehls
string shell_exec (string command)
Befehl auszuführender Befehl
Schwachstelleninstanz
Beispiel 1:
命令注入攻击 PHP中可以使用下列5个函数来执行外部的应用程序或函数 system、exec、passthru、shell_exec、“(与shell_exec功能相同) 函数原型 string system(string command, int &return_var) command 要执行的命令 return_var 存放执行命令的执行后的状态值 string exec (string command, array &output, int &return_var) command 要执行的命令 output 获得执行命令输出的每一行字符串 return_var 存放执行命令后的状态值 void passthru (string command, int &return_var) command 要执行的命令 return_var 存放执行命令后的状态值 string shell_exec (string command) command 要执行的命令 漏洞实例 例1:
Wir senden http://www.sectop.com/ex1.php?dir=|.
Nach der Übermittlung wird der Befehl zu system("ls -al | cat /etc/ passwd");
Eval-Injection-Angriff
Die Eval-Funktion führt die eingegebenen String-Parameter als PHP-Programmcode aus
Funktionsprototyp:
mixed eval(string code_str) //eval-Injection tritt normalerweise auf, wenn der Angreifer die Eingabezeichenfolge kontrollieren kann
Wenn wir http://www .com/ex2.php?arg=phpinfo();Die Sicherheitslücke entsteht;
Dynamische Funktion
php
func A()
{
dosomething();
}
func B()
{
dosomething();
}
if (isset($_GET["func" ]) )
{
$myfunc = $_GET["func"];
echo $myfunc();
?>
Die ursprüngliche Absicht des Programmierers besteht darin, die Funktionen A und B dynamisch aufzurufen und dann http://www.sectop.com/ex.php?func=phpinfo Schwachstellengenerierung einzureichen
Präventionsmethoden
4. Verwenden Sie „safe_mode_exec_dir“, um den Pfad der ausführbaren Datei anzugeben.
Die Funktion esacpeshellarg maskiert alle Zeichen, die das Ende von Parametern oder Befehlen verursachen, und ersetzt sie durch „'“, doppelte Anführungszeichen Anführungszeichen „“ , ersetzen Sie das Semikolon „;“ durch „;“
Verwenden Sie „safe_mode_exec_dir“, um den Pfad der ausführbaren Datei anzugeben Advance
safe_mode = On
safe_mode_exec_dir = /usr/local/php/bin/
Das Obige ist die vollständige Erklärung der PHP-Schwachstellen (2) – Command-Injection-Angriff. Für weitere verwandte Inhalte achten Sie bitte auf PHP Chinese Net (www.php.cn)!