"리버스 쉘" - 인간이 제어하는 ​​입력을 사용하여 원격 호스트에서 쉘 명령을 추출하시겠습니까?

"리버스 쉘" - 인간이 제어하는 ​​입력을 사용하여 원격 호스트에서 쉘 명령을 추출하시겠습니까?

원격 컴퓨터(바람직하게는 SSH를 통해)에 연결하고 거기에서 명령을 추출하고 싶습니다.

정확하게 말하면 원격 컴퓨터를 로컬 컴퓨터에 연결하여 대화형 콘솔을 사용하고 명령을 보내고 출력을 확인하고 싶습니다.
기능적으로는 Windows Remote Assistant 또는 다른 이름으로 불리는 것과 유사합니다.

나는 GUI를 사용하여 HTTP 서버를 구현하고 요청 시 영원히 연결을 유지하고 내가 입력하는 모든 라인을 GUI에 보내고 상대방이 보내는 모든 것을 출력으로 받을 것이라고 상상할 수 있습니다. HTTP 헤더만 처리하면 됩니다. 그러나 이것은 그다지 우아하지 않습니다.

기성 솔루션이 있나요? 아니면 nc일부 도구를 사용하여 TTY를 수신 포트에 연결할 수 있습니까 ?

답변1

실행하는 경우:

socat "unix-listen:$HOME/.shell-access,mode=600,fork" \
      "exec:$SHELL,pty,stderr,setsid,ctty"

예를 들어 이를 통해 다음을 수행할 수 있습니다.

socat -,raw,echo=0 "unix:$HOME/.shell-access"

로컬로 셸에 연결하고 상호 작용합니다.

그런 다음 SSH를 통해 원격 포트 전달을 수행할 수 있습니다.

ssh -R "/path/to/socket/on/host:$HOME/.shell-access" user@host

(openssh 버전이 상대적으로 새로운 버전이라고 가정합니다(클라이언트 및 서버)).

그런 다음 다음을 수행하여 셸과 상호 작용할 user수 있습니다 .host

socat -,raw,echo=0 "unix:/path/to/socket/on/host"

$SHELL여러 사람이 동일한 화면 세션을 볼 수 있도록 screen -xRS some-screen-session실행하는 대신 특정 세션을 연결하기 위해 실행할 수 있습니다 .screen

답변2

전통적인 netcat을 사용합니다.

섬기는 사람:

$ nc.traditional  -lvp 1234 -e /bin/sh

고객:

$ nc -nv <ip> 1234

SSH를 통해 포트를 전달할 수도 있습니다.

답변3

원격 컴퓨터를 대화형 콘솔이 있는 로컬 컴퓨터에 연결하고 싶습니다.

로캘 컴퓨터에 리스너를 만듭니다.

socat file:`tty`,raw,echo=0 tcp-listen:PORT

원격 컴퓨터에서 다음 명령을 입력합니다.

socat exec:'bash -li',pty,stderr,setsid,sigint,sane tcp:YOUR_IP_ADDRESSE:PORT

관련 정보