- Katılım
- 2 Ocak 2026
- Mesajlar
- 106
- Tepkime puanı
- 122
- Puan
- 43
Bu yazımızda Laravel ve WordPress’i olabilecek en detaylı şekilde ele alıp bir Pentester gözüyle hangisinde nasıl zafiyetler var ona bakacağız.
Bismillah..
Laravel 2011 yılında kurulan modern web tasarımlarının çatısıdır.
Günümüz ileri düzey ,gelişmiş web sitelerinde sıklıkla kullanılır. Özel projelerde kullanılır bunun en temel sebebi hacklenmesi, yanlış yapılandırılmadığı müddetçe, çok zor olmasıdır. Bu özelliği onu wordpressten ayıran en büyük farktır.
Laravel bir web sitesinin temel mimarisi MVC’dir. (Model,View,Controller)
MODEL: Veri tabanı
VİEW: Kullanıcıya görünen arayüz
CONTROLLER: İş Mantığı
İş Akışı şu şekildedir .
İstek → Yönlendirme(routing) → Controller →Model → Veri Tabanı→ View → Web sitesinin cevabı
Çok ileri düzey çalışan ve büyük veri tabanına sahip sistemler laravel çatısı altında çalışır ( sadece laravel diyemeyiz tabiki de)
Banka sistemleri, Uluslararası insani yardım dernekleri, Ödeme altyapıları,internet bankacılığı… gibi sistemlerde kullanılır çünkü bu tür sistemler çok güçlü güvenlik mekanizmalarına ihtiyaç duyarlar.
Kısacası Laravel; güvenlik mekanizmaları güçlü bir framework’tür.
Sen sıfırdan bir web sitesi tasarlayacaksın diyelim. Eğer Framework yoksa sen her şeyi sıfırdan kendin tasarlarsın.
Örneğin lo : Login sistemi,veritabanı bağlantısı , güvenlik yapılanması…Bunların hepsinim ve daha fazlasını kendin elle yazarsın.
siz tek eşref hepiniz
Sistemde framework varsa tüm bunları hazır alırsın ve ek olarak çok güçlü güvenlik yapılandırmasına sahip olursun sadece iş mantığına odaklanırsın.
Wordpress bic CMS sistemidir(Content Management System) yani içerik yönetim sistemi lo. Laravel framework iken wordpress öyle değildir.
Wordpress sistemleri genellikle kişisel bloklar, haber siteleri, teknoloji siteleri gibi daha basit sistemlerde kullanılır.
Burdaki mantık hızlı kurulum mantığıdır. Laravel çok detaylı bir sistem iken kişisel blok gibi sitelerde bu detay yoktur.
Laravel’de sizler her şeyi kendiniz elle yazarken( login sistemi, veri yapısı, güvenlik mekanizması vb) wordpress ise hazır çalışan bir sistemdir.
Login mekanizması , veri tabanı , güvenlik mekanizmaları gibi unsurların hepsi hazır gelir.
CTRL+u ile kaynak koda erişin ve sistem içerisinde
meta name=”generator” content=”WordPress” gibi bir şey arayın
robots.txt
site.com/robots.txt olarak incelenir ve sistemin izin verilen ve verilmeyenleri çıkarır genellikle ve sistem hakkında bilgi verir.
wordpress iste zaten her durumun başına wp-admin wp-user gibi wp yazar
Not: laravel olması durumunda genellikle belli bir sabite yok çünkü her login bile özel yapılandırılır.
Disallow: /admin/
Disallow: /comment/reply/
Disallow: /filter/tips
Disallow: /node/add/
Disallow: /search/
Disallow: /user/register/
Disallow: /user/password/
Disallow: /user/login/
Disallow: /user/logout/
# Paths (no clean URLs)
Disallow: /index.php/admin/
Disallow: /index.php/comment/reply/
Disallow: /index.php/filter/tips
Disallow: /index.php/node/add/
Disallow: /index.php/search/
Şu şekilde gözüken sistemler Drupal sistemlerde olur. Eğer geliştirici isterse laraveli bu şekilde tasarlayabilir. Laravel ve wordpress sadece 2 örnek bizim için. Bunlar dışında Drupal gibi yüksek güvenlikli çok sistem var
3- WAPPALYZER kullanarak sistemi öğrenme.
curl -I <HEDEF SİTENİN UZANTISI>
Burda bir siteyi taradığımda laravel olduğunu anlıyorum.
Çok daha fazla yöntem var lakin bu kadarı işinizi görür.
En mühim ve son kısım.
Bismillah..
Laravel Nedir ?
Günümüz ileri düzey ,gelişmiş web sitelerinde sıklıkla kullanılır. Özel projelerde kullanılır bunun en temel sebebi hacklenmesi, yanlış yapılandırılmadığı müddetçe, çok zor olmasıdır. Bu özelliği onu wordpressten ayıran en büyük farktır.
Laravel bir web sitesinin temel mimarisi MVC’dir. (Model,View,Controller)
MODEL: Veri tabanı
VİEW: Kullanıcıya görünen arayüz
CONTROLLER: İş Mantığı
İş Akışı şu şekildedir .
İstek → Yönlendirme(routing) → Controller →Model → Veri Tabanı→ View → Web sitesinin cevabı
Çok ileri düzey çalışan ve büyük veri tabanına sahip sistemler laravel çatısı altında çalışır ( sadece laravel diyemeyiz tabiki de)
Banka sistemleri, Uluslararası insani yardım dernekleri, Ödeme altyapıları,internet bankacılığı… gibi sistemlerde kullanılır çünkü bu tür sistemler çok güçlü güvenlik mekanizmalarına ihtiyaç duyarlar.
Kısacası Laravel; güvenlik mekanizmaları güçlü bir framework’tür.
Peki framework nedir?
Sen sıfırdan bir web sitesi tasarlayacaksın diyelim. Eğer Framework yoksa sen her şeyi sıfırdan kendin tasarlarsın.
Örneğin lo : Login sistemi,veritabanı bağlantısı , güvenlik yapılanması…Bunların hepsinim ve daha fazlasını kendin elle yazarsın.
Sistemde framework varsa tüm bunları hazır alırsın ve ek olarak çok güçlü güvenlik yapılandırmasına sahip olursun sadece iş mantığına odaklanırsın.
WORDPRESS Nedir ?
Wordpress bic CMS sistemidir(Content Management System) yani içerik yönetim sistemi lo. Laravel framework iken wordpress öyle değildir.
Wordpress sistemleri genellikle kişisel bloklar, haber siteleri, teknoloji siteleri gibi daha basit sistemlerde kullanılır.
Burdaki mantık hızlı kurulum mantığıdır. Laravel çok detaylı bir sistem iken kişisel blok gibi sitelerde bu detay yoktur.
Laravel’de sizler her şeyi kendiniz elle yazarken( login sistemi, veri yapısı, güvenlik mekanizması vb) wordpress ise hazır çalışan bir sistemdir.
Login mekanizması , veri tabanı , güvenlik mekanizmaları gibi unsurların hepsi hazır gelir.
Kritik:
Wordpress genelde MySql kullanır. Ama veri tabanı ile ilişkisi ORM değildir. ORM (Object-Relational Mapping) Yani nesne ve veri tabanı arasında herhangi bir köprü sistemi yok. Çünkü wordpress prosedürlerle çalışır. Bu wordpressin veri tabanının olmadığı anlamına gelmez elbette. Laravel’de ORM var.
WordPress, veritabanı ile iletişimi $wpdb sınıfı üzerinden kurar. Direkt raw SQL yazarsın ama bunu bir wrapper (sarmalayıcı) üzerinden gönderirsin.
Az çok laravel nedir wordpress nedir anladık. Şimdi pentest kısmına geçelim.
İlk yapacağım şey bir sitenin laravel mi wordpress mi olduğunu nasıl anlayacağımızdır.
Hazır toolar kullanmadan önce manuel olarak sistemden öğrenmeye çalışacağız.
Site uzantısına deneme yanılma yolu yapılarak sistemi test et önce
wp-admin
wp-login.php
wp-content
gibi şeyler arayın
WordPress, veritabanı ile iletişimi $wpdb sınıfı üzerinden kurar. Direkt raw SQL yazarsın ama bunu bir wrapper (sarmalayıcı) üzerinden gönderirsin.
Az çok laravel nedir wordpress nedir anladık. Şimdi pentest kısmına geçelim.
İlk yapacağım şey bir sitenin laravel mi wordpress mi olduğunu nasıl anlayacağımızdır.
Hazır toolar kullanmadan önce manuel olarak sistemden öğrenmeye çalışacağız.
Site uzantısına deneme yanılma yolu yapılarak sistemi test et önce
wp-admin
wp-login.php
wp-content
gibi şeyler arayın
1-HTML durum kodlarını kontrol edelim
CTRL+u ile kaynak koda erişin ve sistem içerisinde
meta name=”generator” content=”WordPress” gibi bir şey arayın
Burada bir siteyi incelediğimde 6. Satırda bir forum sitesi olduğu anlaşılıyor.
site içerisinde f12'ye basarak sistemin içerisinde cookieleri inceleyin. cookieler network sekmesinde headers kısmında coocieleri inceleyin
site içerisinde f12'ye basarak sistemin içerisinde cookieleri inceleyin. cookieler network sekmesinde headers kısmında coocieleri inceleyin
/vendor/
/storge/logs/
/public/index.php
laravel_session
XSRF-TOKEN var ise laraveldir.
/storge/logs/
/public/index.php
laravel_session
XSRF-TOKEN var ise laraveldir.
2- robots.txt kısmına bakalım
robots.txt
site.com/robots.txt olarak incelenir ve sistemin izin verilen ve verilmeyenleri çıkarır genellikle ve sistem hakkında bilgi verir.
wordpress iste zaten her durumun başına wp-admin wp-user gibi wp yazar
Not: laravel olması durumunda genellikle belli bir sabite yok çünkü her login bile özel yapılandırılır.
Disallow: /admin/
Disallow: /comment/reply/
Disallow: /filter/tips
Disallow: /node/add/
Disallow: /search/
Disallow: /user/register/
Disallow: /user/password/
Disallow: /user/login/
Disallow: /user/logout/
# Paths (no clean URLs)
Disallow: /index.php/admin/
Disallow: /index.php/comment/reply/
Disallow: /index.php/filter/tips
Disallow: /index.php/node/add/
Disallow: /index.php/search/
Şu şekilde gözüken sistemler Drupal sistemlerde olur. Eğer geliştirici isterse laraveli bu şekilde tasarlayabilir. Laravel ve wordpress sadece 2 örnek bizim için. Bunlar dışında Drupal gibi yüksek güvenlikli çok sistem var
3- WAPPALYZER kullanarak sistemi öğrenme.
Wappalyzer: Web sayfasının teknolojik mimarisini gösteren gogıl eklenti tooludur.
Burada jll.com adlı sitenin wordpress olduğu çok açık gözüküyor.
Burada jll.com adlı sitenin wordpress olduğu çok açık gözüküyor.
4-CURL ile detaylı tarama
curl -I <HEDEF SİTENİN UZANTISI>
Burda bir siteyi taradığımda laravel olduğunu anlıyorum.
Çok daha fazla yöntem var lakin bu kadarı işinizi görür.
En mühim ve son kısım.
Bir hacker wordpress ve laravele nasıl saldırır?
WordPress için en sık 4 yöntem
1.Yöntem: Authentication bypass / login zayıflıkları
wp-login.php var mı yok mu kontrol et
brute force yapabilirsen kapsam dahilinde yap
session zayıflığını kontrol et
bunları yapmadan önce sistemde rate limit ve 2 faktörlü doğrulama var mı yok mu ona bak.
2. Yöntem File upload → RCE zinciri
dosya yükleme kısımları ara eğer varsa kendi oluşturduğun php dosyanı kapsam dahilinde yüklemeye çalış
bunu genellikle şu kısımlarda ara:
media yükleme
iletişim formu
eklenti yükleme özelliğine
3.Yöntem XSS(stored,reflected)
wordpress sistemlerin hemen hepsine şunlar bulunur:
yorum kısmı , arama butonu…
XSS payloadlarını kapsam dahilinde deneyebilirsin.
4. Yöntem Information disclosure ( En kritik olanı)
En kritik zafiyetlerden biri olan değerli bilgileri ortaya çıkarma zafiyeti bizim için muhakkak bakmamız gereken zafiyetlerden biridir.
Değerli veriler sıklıkla;
/wp-json
/wp-config.php.bak
.git
deug log files
kısımlarında çok kritik veriler bulunur. Bunlar veri tabanı bilgileri, api keyler, iç sunucu bilgisi olabilir.
wp-login.php var mı yok mu kontrol et
brute force yapabilirsen kapsam dahilinde yap
session zayıflığını kontrol et
bunları yapmadan önce sistemde rate limit ve 2 faktörlü doğrulama var mı yok mu ona bak.
2. Yöntem File upload → RCE zinciri
dosya yükleme kısımları ara eğer varsa kendi oluşturduğun php dosyanı kapsam dahilinde yüklemeye çalış
bunu genellikle şu kısımlarda ara:
media yükleme
iletişim formu
eklenti yükleme özelliğine
3.Yöntem XSS(stored,reflected)
wordpress sistemlerin hemen hepsine şunlar bulunur:
yorum kısmı , arama butonu…
XSS payloadlarını kapsam dahilinde deneyebilirsin.
4. Yöntem Information disclosure ( En kritik olanı)
En kritik zafiyetlerden biri olan değerli bilgileri ortaya çıkarma zafiyeti bizim için muhakkak bakmamız gereken zafiyetlerden biridir.
Değerli veriler sıklıkla;
/wp-json
/wp-config.php.bak
.git
deug log files
kısımlarında çok kritik veriler bulunur. Bunlar veri tabanı bilgileri, api keyler, iç sunucu bilgisi olabilir.
Laravel sistemlerde en sık karşılaşılan 4 zafiyet
1. Zafiyet Broken Access control
Kullanıcının login olsa bile yetkisi olmayan işlemleri yapmasıdır.
Bu zafiyet genellikle şu şekilde ortaya çıkar.
diyelim ki sizler bir kullanıcıyı silmek istediniz sistemden. Normalde yetkiniz olmasa bunu yapamazsınız.
/admin/delete-user/5
bu admin olarak 5. kullanıcıyı sil demek
Eğer broken access control zafiyeti mevcut ise 5. kullanıcı sistemden silinir.
Bu zafiyet genellikle şu şekilde ortaya çıkar.
diyelim ki sizler bir kullanıcıyı silmek istediniz sistemden. Normalde yetkiniz olmasa bunu yapamazsınız.
/admin/delete-user/5
bu admin olarak 5. kullanıcıyı sil demek
Eğer broken access control zafiyeti mevcut ise 5. kullanıcı sistemden silinir.
2. Zafiyet IDOR
IDOR bildiğiniz üzere ID değiştirerek başka kullanıcının verisine erişimdir.
senin ID eğer url üzerinde
/site.com/user/1 bu 1 senin ID diyelim sen bunu 2 yaptığında eğer başka kişinin verisi dönüyors bu IDOR zafiyetidir.
senin ID eğer url üzerinde
/site.com/user/1 bu 1 senin ID diyelim sen bunu 2 yaptığında eğer başka kişinin verisi dönüyors bu IDOR zafiyetidir.
3.Mass Assignment (Model Injection)
Buna dikkat et çünkü bu laravel sistemlerde izin verilmemiş alanların kullanıcı inputundan direkt yazılabilmesidir.
Ne demek istiyorum bilisen mi? bak, gör.
{
“name”: “test”,
“is_admin”: true
}
sonra sistemi kontrol et. gerçekten admin oldun mu, backend nasıl davrandı , kabul etti mi etmedi mi
veri tabanına yazıldı mı gibi gibi
Ne demek istiyorum bilisen mi? bak, gör.
{
“name”: “test”,
“is_admin”: true
}
sonra sistemi kontrol et. gerçekten admin oldun mu, backend nasıl davrandı , kabul etti mi etmedi mi
veri tabanına yazıldı mı gibi gibi
4) .env / Debug Information Leak
WordPress’teki 4. yöntemde olduğu gibi kritik bilgileri ortaya çıkarma her sistem için en kritik zafiyettir.
laravel gibi sistemlerde kritik veriyi doğru yerde aramak çok önemlidir. yoksa boşa kürek çekersiniz.
şu dosyalara bak.
.env dosyasına erişebliyor musun ?
eğer erişebilirsen DB bilgileri API keyler gibi değerli veriler elde edersiniz.
https://site.com/.env normalde erişememen gerekiyor.
sadece .env değil şunlara da bak
.git/
stroge/logs/laravel.log
composer.json
composer.lock
Ya unutulduysa?
laravel sistemin debug modu açık mı kontrol et eğer açıksa :
sql query, full stack trace, dosya path’leri gibi verilere erişilebilir.
Sistem hata mesajı verdiğinde nasıl davranıyor muhakkak kontrol et. Bazen hata mesajı verirken bilgi sızdırabilir. En azından bunun gibi
normalde sistem şu şekilde ilerlerken:
site.com/user/4
bu normal bir kullanıcı
ama sen random
site.com/user/aaaaa yazdığında sistem nasıl hata veriyor?
string yerine number yaz
Laravel zafiyetlerinin %80’i:
framework değil → developer hatasıdır
Kısaca bu şekilde değinmek istedim. Elbette çok fazla saldırı yöntemi var ben genelde sıklıkla keşfedilen zafiyetleri belirttim. Yazımdaki eksik ve hatalı kısımları ; bu da olsaydı fena olmazdı dediğiniz şeyleri yorumlarda belirtmeyi unutmayın.
Bir sonraki yazıda görüşmek üzere
laravel gibi sistemlerde kritik veriyi doğru yerde aramak çok önemlidir. yoksa boşa kürek çekersiniz.
şu dosyalara bak.
.env dosyasına erişebliyor musun ?
eğer erişebilirsen DB bilgileri API keyler gibi değerli veriler elde edersiniz.
https://site.com/.env normalde erişememen gerekiyor.
sadece .env değil şunlara da bak
.git/
stroge/logs/laravel.log
composer.json
composer.lock
Ya unutulduysa?
laravel sistemin debug modu açık mı kontrol et eğer açıksa :
sql query, full stack trace, dosya path’leri gibi verilere erişilebilir.
Sistem hata mesajı verdiğinde nasıl davranıyor muhakkak kontrol et. Bazen hata mesajı verirken bilgi sızdırabilir. En azından bunun gibi
normalde sistem şu şekilde ilerlerken:
site.com/user/4
bu normal bir kullanıcı
ama sen random
site.com/user/aaaaa yazdığında sistem nasıl hata veriyor?
string yerine number yaz
Laravel zafiyetlerinin %80’i:
framework değil → developer hatasıdır
Kısaca bu şekilde değinmek istedim. Elbette çok fazla saldırı yöntemi var ben genelde sıklıkla keşfedilen zafiyetleri belirttim. Yazımdaki eksik ve hatalı kısımları ; bu da olsaydı fena olmazdı dediğiniz şeyleri yorumlarda belirtmeyi unutmayın.
Bir sonraki yazıda görüşmek üzere
Zeki Kayaalp/Pentester