Kann ich eine Konsolenanwendung über Netcat weiterleiten / umleiten, damit sie remote verwendet werden kann?

10

Ist es möglich, eine Instanz einer Konsolenanwendung über netcat weiterzuleiten, sodass netcat auf eine neue Verbindung wartet und die stdinund stdoutüber die Netzwerkverbindung umleitet?

jammmie999
quelle
Ja, aber es muss vielleicht ein Einzeiler sein, was in Ordnung ist, Rohre sind so. Ich weiß nicht, ob Sie nc und Pipe per PID an eine bereits laufende Instanz senden können. Sie können nc zu einer IP und leiten Sie es zu einem nc, der lauscht, und leiten Sie das zu einem nc, das lauscht usw. und leiten Sie das zu nc zu einer IP weiter.
Barlop
Ich habe den Titel geändert, weil das, was Sie erwähnen, eher nach E / A- Umleitung als nach Verwendung einer Pipe klingt (bei der nur die Ausgabe eines Prozesses auf die Eingabe eines anderen verschoben wird).
Durchbruch
@Breakthrough Wie unterscheidet sich das von Rohren? Wie unterscheidet es sich von Piping, wenn er über die E / A-Umleitung und nicht über Dateien spricht?
Barlop
Die @barlop-E / A-Umleitung ( <oder >) unterscheidet sich erheblich von der Rohrleitung ( |), obwohl Sie manchmal eine gleichwertige Operation mit einer Mischung aus beiden erzielen können. Mit der E / A-Umleitung können Sie jedoch den Speicherort beider Streams ändern . Piping leitet nur die Standardausgabe eines Prozesses zur Standardeingabe eines anderen um.
Durchbruch
@ Durchbruch sehen, was ich dich gefragt habe. > und <unterscheiden sich natürlich von Piping, da <und> Dateien verwenden. Aber er spricht nicht von Akten. Ich fragte Sie: "Wie unterscheidet sich diese [E / A-Umleitung] von Pipes? Da er über E / A-Umleitung und nicht über Dateien spricht, wie unterscheidet sie sich dann von
Pipings

Antworten:

16

Nun, wie dokumentiert in Wikipedia und netcatDokumentation gibt es eine -eOption , die es zu laichen verursacht ( e Xecute) ein Programm , bei Empfang einer Verbindung, Anbringen der Buchse an stdin, stdout und stderr des Prozesses. Anwendungsbeispiel:

nc -l -pport_number -eprogramm_name

Beispiele zeigen häufig /bin/shoder bashwerden als Programmname verwendet . Von der Verwendung dieser Option wird abgeraten, da dadurch grundsätzlich ein anonymes, kennwortloses Zugriffsportal auf Ihrem Computer geöffnet wird. Dies wird natürlich dadurch gemindert, dass ein Programm mit weniger Leistung als die Shell verwendet wird (eines, das nicht in die Lage versetzt wird, in eine Shell zu entkommen), die Verwendung minimiert und geheim gehalten wird. Die ursprünglichen Entwickler von waren jedoch netcatder festen Überzeugung, dass diese Option eine schlechte Idee war, sie standardmäßig zu deaktivieren und sie unter der Kompilierungsoption "GAPING_SECURITY_HOLE" zu konditionieren. Dies wird in diesem NetCat-Lernprogramm und in anderen netcatDokumentationen kurz erwähnt.

Eine Google-Suche führte mich zu Diskussionen über dieses Problem auf anderen Stack Exchange-Websites: Stapelüberlauf und Serverfehler . Mehrere Mitwirkende boten die folgende Technik an, um dasselbe zu tun, ohne die -eOption zu verwenden (dh in einer Version netcatdavon ist die -eOption deaktiviert):

Auf dem Server:
mkfifopipe_name
nc -l -pport_number <pipe_name   | programm_name >pipe_name

Auf dem Client:
nc Servername  Maschinenname Portnummer

Ein paar Anmerkungen:

  • Bei einigen Versionen von netcat, -limpliziert -p, sagen , man sollte so einfach -lund dann die Portnummer.
  • Möglicherweise möchten Sie Ihre Lösung in eine while trueSchleife einschließen.
Scott
quelle