Heim  >  Artikel  >  Backend-Entwicklung  >  Vollständige Erklärung der PHP-Schwachstellen (2) – Command-Injection-Angriff.

Vollständige Erklärung der PHP-Schwachstellen (2) – Command-Injection-Angriff.

黄舟
黄舟Original
2016-12-22 09:09:551563Durchsuche

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ühren

return_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");


Vollständige Erklärung der PHP-Schwachstellen (2) – Command-Injection-Angriff.

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

1. Versuchen Sie, keine externen Befehle auszuführen

2. Verwenden Sie benutzerdefinierte Funktionen oder Funktionsbibliotheken, um die Funktionen externer Befehle zu ersetzen

3

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)!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn