Ausführliche Erklärung der Angriffsmethoden auf PHP-Websites – Befehlsinjektionsangriff

零到壹度
Freigeben: 2023-03-23 15:40:02
Original
5515 Leute haben es durchsucht

In diesem Artikel werden hauptsächlich Befehlsangriffe als gängige Angriffsmethoden auf PHP-Websites vorgestellt. Unter Command Injection versteht man eine Angriffsmethode, bei der Hacker den dynamisch generierten Inhalt einer Webseite ändern, indem sie HTML-Code in einen Eingabemechanismus eingeben (z. B. ein Formularfeld, das keine wirksamen Validierungsbeschränkungen aufweist). Die Verwendung von Systembefehlen ist ein gefährlicher Vorgang, insbesondere wenn Sie versuchen, Remote-Daten zum Erstellen des auszuführenden Befehls zu verwenden. Bei Verwendung kontaminierter Daten entstehen Command-Injection-Schwachstellen.

Command-Injection-Angriff

Die folgenden 5 Funktionen können in PHP zur Ausführung verwendet werden externe Anwendung oder Funktion

System, Exec, Passthru, Shell_exec, "(gleiche Funktion wie Shell_exec)

Funktionsprototyp

Stringsystem (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

Output Holen Sie sich jede Zeile der String-Ausgabe, indem Sie den Befehl ausführen

return_var speichert der ausgeführte Befehl Der Statuswert

void passhru (string command, int &return_var)

command Der auszuführende Befehl

return_var speichert den Statuswert nach der Ausführung des Befehls

string shell_exec (string command)

Befehl Befehl zum Ausführen

漏洞实例

例1:

  1. //ex1.php 
    $dir = $_GET["dir"]; 
    if (isset($dir)) 
    { 
    echo "";
    system("ls -al ".$dir); 
    echo ""; 
    } 
    ?>
    Nach dem Login kopieren

我们提交http://www.sectop.com/ex1.php?dir=| cat /etc/passwd

提交以后,命令变成了 system("ls -al | cat /etc/passwd");


eval注入攻击

eval函数将输入的字符串参数当作PHP程序代码来执行

函数原型:

mixed eval(string code_str) //eval注入一般发生在攻击者能控制输入的字符串的时候

  1. //ex2.php 
    $var = "var"; 
    if (isset($_GET["arg"])) 
    { 
    $arg = $_GET["arg"]; 
    eval("\$var = $arg;"); 
    echo "\$var =".$var; 
    } 
    ?>
    Nach dem Login kopieren

当我们提交http://www.sectop.com/ex2.php?arg=phpinfo();漏洞就产生了;

动态函数

  1. php 
    func A() 
    { 
    dosomething(); 
    } 
    func B() 
    { 
    dosomething(); 
    } 
    if (isset($_GET["func"])) 
    { 
    $myfunc = $_GET["func"]; 
    echo $myfunc(); 
    } 
    ?>
    Nach dem Login kopieren

程序员原意是想动态调用A和B函数,那我们提交http://www.sectop.com/ex.php?func=phpinfo漏洞产生

防范方法

1、尽量不要执行外部命令

2、使用自定义函数或函数库来替代外部命令的功能

3、使用escapeshellarg函数来处理命令参数

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 Setzen Sie „“ in Anführungszeichen, ersetzen Sie es durch „““ und ersetzen Sie das Semikolon „;“ durch „;“

Verwenden Sie „safe_mode_exec_dir“, um den Pfad der ausführbaren Datei anzugeben Pfad im Voraus

safe_mode = On

safe_mode_exec_dir = /usr/local/php/bin/


Das obige ist der detaillierte Inhalt vonAusführliche Erklärung der Angriffsmethoden auf PHP-Websites – Befehlsinjektionsangriff. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!