In der PHP -Programmierung ist die Funktion php_uname () ein häufig verwendetes Tool, mit dem der Name, die Versionsinformationen des aktuellen Betriebssystems und der Typ der Maschinenhardware zurückgegeben werden. Obwohl diese Funktion Entwicklern grundlegende systembezogene Informationen liefert, kann sie auch von böswilligen Angreifern missbraucht werden, um vertrauliche Informationen auf den Server zu lenken. In diesem Artikel wird eingehende typische Fälle von PHP_uname () analysiert, die von Angreifern missbraucht werden, und untersuchen, wie Angreifer Systeminformationen durch sie erhalten können, um potenzielle Angriffe durchzuführen.
In PHP besteht die Funktion der Funktion pHP_uname () darin, detaillierte Informationen zum aktuellen Betriebssystem zu erhalten. Die grundlegende Verwendung ist wie folgt:
$system_info = php_uname();
echo $system_info;
Der von dieser Funktion zurückgegebene Inhalt enthält im Allgemeinen die folgenden Teile:
Betriebssystemname (wie Windows, Linux, Darwin usw.)
Informationssystemversionsinformationen
Maschinenhardware -Typ (z. B. x86_64)
Entwickler können diese Informationen verwenden, um eine Optimierung oder Debuggierung auf Systemebene durchzuführen. Wenn ein Angreifer auf diese Informationen über bestimmte Mittel zugreifen kann, kann er die spezifische Betriebssystemumgebung des Zielservers verstehen und Hinweise für nachfolgende Angriffe liefern.
Die vom Angreifer verwendeten Systeminformationen unter Verwendung von PHP_uname () können verwendet werden, um das Betriebssystem und die Version des Servers zu identifizieren, wodurch die entsprechende Angriffsmethode ausgewählt wird. Hier sind einige Strategien, die ein Angreifer anwenden könnte:
Angreifer können den Typ und die Version des Betriebssystems über Php_uname () erhalten. Wenn das zurückgegebene Ergebnis beispielsweise zeigt, dass der Server unter Windows ausgeführt wird, könnte ein Angreifer versuchen, eine Windows-spezifische Sicherheitsanfälligkeit auszunutzen. Wenn es sich um ein Linux -System handelt, kann es versuchen, Schwachstellen für eine bestimmte Linux -Verteilung zu finden.
$system_info = php_uname();
if (strpos($system_info, 'Windows') !== false) {
// gegenWindowsOS -Angriffsstrategie
}
Durch das Erhalten von Systeminformationen kann der Angreifer auch den Hardware -Typ, die Prozessorarchitektur des Servers usw. bestimmen. Diese Informationen helfen Angreifer, festzustellen, ob bestimmte böswillige Code ausgeführt werden kann oder ob einige architektonische Schwachstellen ausgenutzt werden können. Beispielsweise können einige Schwachstellen nur auf einer bestimmten Hardwareplattform vorhanden sein.
Wenn ein Angreifer feststellen kann, dass der Zielserver eine bestimmte Version des Betriebssystems ausführt, kann er eine öffentliche Verwundbarkeitsdatenbank (wie CVE) ausnutzen, um bekannte Schwachstellen im Zusammenhang mit dieser Betriebssystemversion zu finden. Diese Schwachstellen können verwendet werden, um weitere Angriffe zu starten.
Angreifer können auch Systeminformationen als Mittel für Social Engineering -Angriffe verwenden. Wenn ein Angreifer genügend Systeminformationen erhält (z. B. Betriebssystemversion, Hostname, Domainnamen usw.), können diese Informationen mit anderen Informationen kombiniert, um das Opfer durch Phishing -E -Mails, böswillige Websites usw. weiter anzugreifen.
In einigen Fällen kann ein Angreifer die Server -Betriebssystemversion über einen einfachen Funktionsaufruf von PHP_uname () identifizieren. Beispielsweise findet ein Angreifer einen Zielserver, der die folgenden Informationen zurückgibt:
Linux webserver 4.15.0-74-generic #83-Ubuntu SMP Fri May 10 16:11:12 UTC 2019 x86_64
Die Informationen geben dem Angreifer mit, dass der Zielserver ein Ubuntu -Linux -System mit Version 4.15 ausführt. Durch die Abfrage der öffentlichen Verwundbarkeitsdatenbank stellte der Angreifer fest, dass in dieser Version bestimmte Schwachstellen bekannt sind (z.
Angenommen, der Angreifer betritt den Zielserver über eine schwache Verwundbarkeit des Kennworts und ruft die Funktion PHP_uname () auf, um Betriebssysteminformationen zu erhalten. Das zurückgegebene Ergebnis lautet wie folgt:
Darwin MacBookPro 19.6.0 Darwin Kernel Version 19.6.0: Mon Apr 6 22:14:47 PDT 2020; root:xnu-6153.141.1~1/RELEASE_X86_64 x86_64
Aus dem Ergebnis weiß der Angreifer, dass der Zielserver ein Mac OS -System ausführt und eine bestimmte Version von MacBookPro ist. Mit diesen Informationen kann ein Angreifer nach bekannten Schwachstellen gegen diese bestimmte Version suchen und damit weitere Angriffe auf den Markt bringen.
Um zu vermeiden, dass die Funktion von PHP_uname () zu viel vertrauliche Informationen ausübt, können Entwickler die folgenden Maßnahmen ergreifen:
Für einige Anwendungen, die keine Betriebssysteminformationen anzeigen müssen, sollten Entwickler die Funktion von PHP_uname () deaktivieren oder bedingte Urteile entscheiden, um sicherzustellen, dass nur authentifizierte Benutzer diese Funktion aufrufen können.
if (isset($_SESSION['admin'])) {
echo php_uname();
} else {
echo "Keine Erlaubnis zum Zugriff auf Systeminformationen";
}
In der Php.ini -Konfigurationsdatei des Servers können Entwickler einige Funktionen deaktivieren, die möglicherweise missbraucht werden, und die Angriffsfläche reduzieren. Beispielsweise können Sie die Funktion php_uname () deaktivieren:
disable_functions = php_uname
Webanwendungsfeuerwalls können dazu beitragen, Angriffe gegen bekannte Schwachstellen zu blockieren. Entwickler können WAF so konfigurieren, dass böswillige Anforderungen erkennen und blockieren, um Angreifer daran zu hindern, weitere Angriffe zu starten, indem sie Systeminformationen erhalten.
Rahmen Aktualisierungen für Sicherheitspatches für Betriebssysteme und Software sind ein effektiver Weg, um Angreifer daran zu hindern, bekannte Schwachstellen zu nutzen. Entwickler sollten sicherstellen, dass die Betriebssysteme und Anwendungen auf dem Server auf dem neuesten Stand sind und das Risiko einer Ausbeutung verringern.
Obwohl die Funktion php_uname () ein nützliches Instrument in der Entwicklung ist, können seine durchgesickerten Systeminformationen auch ein Einstiegspunkt für Angreifer werden, um weitere Angriffe durchzuführen. Durch die Analyse der von der Funktion zurückgegebenen Informationen kann der Angreifer den Betriebssystemtyp, die Version, die Version und sogar den Maschinenhardware -Typ des Servers schließen und so die entsprechende Angriffsstrategie auswählen. Daher sollten Entwickler das Bewusstsein für diese potenziellen Risiken schärfen und die erforderlichen Vorkehrungen zum Schutz des Servers vor Angriffen treffen.