- 14 Eki 2022
- 602
- 496
Execution After Redirect (EAR) Zafiyetini Tanıyalım.
Bu yazımda çoğunluğun no-redirect olarak bildiği "Yönlendirmeden sonra yürütme" zafiyetinden bahsedeceğim. Bu zafiyet, kullanıcının izni olmadığı halde bir sayfayı görüntülemeye çalışmasından doğan bir güvenlik zafiyetidir. Sistem kullanıcının yetkisi olmadığı için başka bir sayfaya yönlendirme yapar, fakat yönlendirme işleminden sonra yapı die() fonksiyonunu kullanarak sonlandırılmadığı için yönlendirmelerin kapalı olduğu bir kural yazmanız dahilinde, görüntüleme izninizin olmadığı kısımlarını görüntüleyebilmenizi sağlar.
Bu yazımda çoğunluğun no-redirect olarak bildiği "Yönlendirmeden sonra yürütme" zafiyetinden bahsedeceğim. Bu zafiyet, kullanıcının izni olmadığı halde bir sayfayı görüntülemeye çalışmasından doğan bir güvenlik zafiyetidir. Sistem kullanıcının yetkisi olmadığı için başka bir sayfaya yönlendirme yapar, fakat yönlendirme işleminden sonra yapı die() fonksiyonunu kullanarak sonlandırılmadığı için yönlendirmelerin kapalı olduğu bir kural yazmanız dahilinde, görüntüleme izninizin olmadığı kısımlarını görüntüleyebilmenizi sağlar.
PHP:
<?php
session_start();
if (!isset($_SESSION['user'])) {
header('Location: login.php');
}
echo 'bu görüntülenmemesi gereken bir metindir.';
?>
Yukarıda ki kodda if() koşulu ile kullanıcının bir oturumu olup olmadığı kontrol edilir ve oturumun bulunmadığı takdirde kullanıcıyı login.php sayfasına yönlendirir. Burada yapılan hata header() fonksiyonundan sonra die() fonksiyonunun kullanılmamasıdır. die() fonksiyonu kullanılmadığı için if koşulundan sonra ki kod çalıştırılacaktır ve ekrana "bu görüntülenmemesi gereken bir metindir." metinini çıkaracaktır.
Örnek olarak:
Zafiyetin Sömürülmesi
Zafiyetten yararlanabilmek için firefox'un eski sürümlerinde çalışan no-redirect eklentisini kullanılabilirsiniz ancak bu konumda daha kolay olması bakımından burp suite için bir kural yazacağız. Öncelikle burp suite'yi açıyoruz daha sonra ise proxy sekmesinde bulunan proxy settings butonuna tıklıyoruz. Bulunduğunuz sayfada aşağı kaydırarak "Match and replace rules" bölümünü bulmanız gerekiyor.
Add butonuna bastığınızda karşınıza kural ekleyebileceğiniz bir sayfa gelecektir buraya aşağıda ki verileri karşılık geleceği şekilde yerleştirin ve "regex match" kutucunu seçip tamamlayın.
Type: Response header
Match: 30[12] Found
Replace: 200 OK
Comment: turkhackteam (buraya istediğinizi yazabilirsiniz)
Bu işlemden sonra tarayıcınızın proxy ayarlarını burp suite'ye uygun olarak yapılandırdıktan sonra veya burp suite'nin içerisinde bulunan tarayıcıyı kullanarak zafiyetin bulunduğu sayfaları görüntüleyebilirsiniz.
Zafiyetin Tespit Edilmesi
Zafiyetin tespiti çokta zor bir iş değil aslında. Yapmanız gereken sadece panelde bulunabilecek sayfaları teker teker url üzerinde deneyerek bir sayfaya erişmeye çalışmaktır, fakat bu işlem bazen çok can sıkıcı olabiliyor. Bu işlemi hızlıca yapabilmeniz için sizlere bir kaç gün önce github.com adresinde paylaştığım earscan aracını göstereceğim.
Bu araç, öncelikle panelde olmayan bir sayfayı kullanarak, sayfanın döndürdüğü içerik uzantısını alıyor ve devamında belirttiğiniz dosya listesinde ki dosyaların uygulama üzerinde görüntülenip görüntülenmediğini, önceden bulduğu içerik uzantısı ile karşılaştırarak anlıyor ve ekrana yazdırıyor.
Programı çalıştırabilmek için öncelikle
Örnek olarak:
Zafiyetin Sömürülmesi
Zafiyetten yararlanabilmek için firefox'un eski sürümlerinde çalışan no-redirect eklentisini kullanılabilirsiniz ancak bu konumda daha kolay olması bakımından burp suite için bir kural yazacağız. Öncelikle burp suite'yi açıyoruz daha sonra ise proxy sekmesinde bulunan proxy settings butonuna tıklıyoruz. Bulunduğunuz sayfada aşağı kaydırarak "Match and replace rules" bölümünü bulmanız gerekiyor.
Add butonuna bastığınızda karşınıza kural ekleyebileceğiniz bir sayfa gelecektir buraya aşağıda ki verileri karşılık geleceği şekilde yerleştirin ve "regex match" kutucunu seçip tamamlayın.
Type: Response header
Match: 30[12] Found
Replace: 200 OK
Comment: turkhackteam (buraya istediğinizi yazabilirsiniz)
Bu işlemden sonra tarayıcınızın proxy ayarlarını burp suite'ye uygun olarak yapılandırdıktan sonra veya burp suite'nin içerisinde bulunan tarayıcıyı kullanarak zafiyetin bulunduğu sayfaları görüntüleyebilirsiniz.
Zafiyetin Tespit Edilmesi
Zafiyetin tespiti çokta zor bir iş değil aslında. Yapmanız gereken sadece panelde bulunabilecek sayfaları teker teker url üzerinde deneyerek bir sayfaya erişmeye çalışmaktır, fakat bu işlem bazen çok can sıkıcı olabiliyor. Bu işlemi hızlıca yapabilmeniz için sizlere bir kaç gün önce github.com adresinde paylaştığım earscan aracını göstereceğim.
Bu araç, öncelikle panelde olmayan bir sayfayı kullanarak, sayfanın döndürdüğü içerik uzantısını alıyor ve devamında belirttiğiniz dosya listesinde ki dosyaların uygulama üzerinde görüntülenip görüntülenmediğini, önceden bulduğu içerik uzantısı ile karşılaştırarak anlıyor ve ekrana yazdırıyor.
Programı çalıştırabilmek için öncelikle
git clone https://github.com/rk400/earscan/
komutunu kullanarak indirmeli, cd earscan
komutunu kullanarak bulunduğu dizine gitmeli pip3 install -r requirements.txt
komutunu kullanarak gerekli kütüphaneleri kurmalısınız. Daha sonra python3 main.py
komutunu kullanarak programı çalıştırabilirsiniz.
Son düzenleme: