WordPress web siteleri için sızma testi

Yayınlanan: 2020-03-20

WordPress, İnternet'teki birçok web sitesine güç sağlar. Bu nedenle, deneyimli saldırganların ve "komut dosyası çocukları"nın WordPress web sitelerini hedeflemeyi sevmesi şaşırtıcı değil. İster bir web yöneticisi ister bir güvenlik uzmanı olun, bir WordPress web sitesinin güvenlik durumunu değerlendirmekle görevlendirildiğinizde, saldırganların genellikle yararlandığı yaygın güvenlik tuzaklarının farkında olmanıza yardımcı olur. Doğru sızma testi araçlarını kullanmak da önemlidir.

Bu makalede, bir saldırganın birçok WordPress kurulumunda kötüye kullanabileceği bir dizi yaygın güvenlik açığını, yanlış uygulamayı ve yararlı bilgileri ele alacağım. Ayrıca, WordPress penetrasyon testini otomatikleştirmenize yardımcı olması için kullanabileceğiniz birkaç aracı vurgulayacağım.

Uyarı — Yalnızca size ait olan veya izin verilen sistemlerde güvenlik sızma testi yapın. Size verilen erişimin sınırlarını anlayın ve bu sınırlar içinde kalın.

Yaygın WordPress güvenlik sorunları ve yanlış uygulamalar

WordPress kodunun eski sürümleri

Güvenlik açıkları içeren WordPress çekirdeğinin eski sürümlerini çalıştırmak, muhtemelen WordPress ile ilgili en yaygın güvenlik açıklarından biridir. WordPress'in daha yeni sürümleri, en son sürüme yükseltmeyi kolaylaştırırken, eski WordPress sitelerinin geride kalması nadir görülen bir durum değildir.

İnternette eski bir WordPress sürümünü çalıştırmak, saatli bir bomba gibidir. WordPress'in birçok eski sürümü güvenlik açıkları içerir. Bu güvenlik sorunlarının çoğu, saldırganlar tarafından toplu olarak yaygın olarak kullanılır.

Güvenlik açıkları için bir WordPress web sitesini denetlerken, bu genellikle kontrol etmek isteyeceğiniz ilk şeylerden biridir. Neyse ki saldırganlar için WordPress varsayılan olarak kullanılan WordPress sürümünü içeren bir HTML meta etiketi ekler.

<meta adı=”generator” içerik=”WordPress 4.8.11″ />

Bir WordPress kurulumunun eski bir sürüm çalıştırdığını bilmek, saldırgana bilinen bir güvenlik açığından yararlanma fırsatı verebilir. WordPress çekirdeğinde bilinen güvenlik sorunlarını aramak için CVE güvenlik açığı veritabanını kullanın.

WordPress temalarının ve eklentilerinin eski sürümleri

WordPress çekirdeği çok güvenlidir. Milyonlarca kullanıcı ve kötü niyetli bilgisayar korsanları, kodu test eder ve kapsamlı bir şekilde inceler. Bu, çoğu zaman güvenlik sorunlarının saldırganlar tarafından kötüye kullanılmadan önce tespit edilip düzeltildiği anlamına gelir. Ancak, güvenlik açıklarına karşı bağışık değildir. Ne yazık ki, bu binlerce WordPress eklentisi ve teması için geçerli değildir.

Herkes bir tema veya eklenti gönderebilir ve herhangi bir WordPress yöneticisinin indirmesi ve kullanması için hazır hale getirebilir. Tabii ki bu, her WordPress eklentisinin kötü kodlanmış ve güvenlik açıklarıyla dolu olduğu anlamına gelmez – ondan çok uzaktır. Bununla birlikte, bilinen güvenlik açıkları, WordPress penetrasyon testi yaparken bilmeniz gereken büyük bir WordPress saldırı yüzeyi ortaya çıkarır.

Güvenlik açığı bulunan WordPress eklentilerinin ve temalarının parmak izini almak için kullanılabilecek en hızlı ve tartışmasız en kapsamlı araç, WPScan kullanmaktır. WPScan, WordPress web sitelerini çekirdek, eklentiler ve temalardaki bilinen güvenlik açıkları için taramak için sıklıkla kullanılan açık kaynaklı bir kara kutu WordPress güvenlik tarayıcısıdır.

Bir pentest sırasında WPScan kullanırken, kaydolduğunuzdan ve WPScan Güvenlik Açığı Veritabanı API anahtarı kullanacak şekilde yapılandırdığınızdan emin olun. WPScan Güvenlik Açığı Veritabanı, WPScan yazarları tarafından bilinen en son güvenlik açıkları ve ilgili sürümleriyle tutulan bir veritabanıdır.

WPScan ile parmak izi eklentileri

WPScan ve farklı türde taramaların nasıl çalıştırılacağı hakkında daha fazla bilgi için WPScan'i kullanmaya başlama bölümüne bakın.

PHP ve web sunucularının eski sürümleri

WordPress bir PHP web uygulamasıdır ve bu nedenle tüm PHP güvenlik en iyi uygulamaları WordPress için de geçerlidir. Bir WordPress penetrasyon testi sırasında, aranacak ilk şeylerden biri budur. PHP'nin eski sürümlerini veya web sunucusu yazılımını (örn. Nginx, Apache HTTP Sunucusu, IIS…) çalıştıran WordPress kurulumları, web sitesini her türlü farklı saldırıya maruz bırakabilir.

Bir WordPress web sitesinin hangi web sunucusunu ve PHP sürümünü kullandığını anlamak çok kolaydır. Çoğu durumda, bir saldırganın yapması gereken tek şey, web sitesinden döndürülen HTTP yanıt başlıklarına çok dikkat etmektir. curl ile kendinize bir istek gönderebilirsiniz:

$ curl -s -D – http://167.71.67.124/ -o /dev/null | grep -i “Sunucu\|X-Powered-By”

Yanıtta Sunucu ve X-Powered-By HTTP başlıklarını arayın:

Sunucu: Apache/2.4.29 (Ubuntu)
X-Powered-Tarafından: PHP/5.5.9

Web sitesinin sürümüne ve yapılandırmasına bağlı olarak, bir saldırgan, bir hedef hakkında ek bilgi elde etmek için bilinen güvenlik açıklarını (örn. https://www.cvedetails.com/vendor/74/PHP.html) kullanabilir. Bu tür bilgiler bir saldırıyı artırmaya yardımcı olabilir, hatta doğrudan web sunucusunda komutları çalıştırabilir.

WordPress kullanıcı adı numaralandırma

Bir sistem yöneticisi bunu önlemek için adımlar atmadıkça, varsayılan olarak WordPress, kullanıcı numaralandırma saldırılarına karşı savunmasızdır. WordPress kullanıcı numaralandırma saldırıları, WordPress'in belirli isteklere nasıl yanıt verdiğinde ince farklar arar. Yanıta bağlı olarak, saldırgan bir kullanıcının var olup olmadığını belirleyebilir ve bu da saldırganın bu bilgileri daha büyük bir saldırının parçası olarak kullanmasına olanak tanır.

Aşağıda, bir WordPress kullanıcı adı numaralandırma saldırısı gerçekleştiren WPScan'ın bir ekran görüntüsü verilmiştir.

WPScan kullanıcı numaralandırma ve şifre kırma

Web sunucusu yanlış yapılandırmaları

Dizin listeleme ve diğer web sunucusu yanlış yapılandırmaları

Eski yazılımların yanı sıra, olası web sunucusu yanlış yapılandırmalarını her zaman değerlendirmelisiniz. Yanlış yapılandırılmış bir web sunucusu, WordPress web sitesini istismara karşı savunmasız bırakabilir. Bu, web sunucusu en son yazılımı çalıştırıyor olsa bile olabilir. İşte bazı tipik web sunucusu yanlış yapılandırmaları:

Etkin dizin listesi

Dizin listeleme çok yaygın bir yanlış yapılandırmadır. Apache web sunucuları bunu varsayılan olarak etkinleştirmiştir ve bu yardımcı olmaz. Dizin listeleme, dizin dosyası olmadığında, bir web sunucusundaki dosyaları ve dizinleri grafiksel bir arabirimde listeler.

Bir Apache web sunucusunda etkinleştirilmiş dizin listesi

Bu, kendi başına özellikle zararlı olmasa da, bir saldırgana web sunucusu dizininizin içeriğine göz atma olanağı sağlar. Bu, web sitenizdeki, çoğuna kamuya açık olmaması gereken ancak yedeklemeler, parolalar ve yapılandırma dosyaları gibi tüm dosyaları görmesine izin verebilir.

Yedekleme dosyaları

Yedekleme dosyaları, çok yaygın bir başka web sunucusu yanlış yapılandırmasıdır . Tipik olarak bunlar, sistem yöneticileri üretim sistemlerindeki dosyaları manuel olarak düzenlediğinde meydana gelir.

Potansiyel olarak hassas bilgileri açığa çıkaran yedekleme dosyalarının yaygın bir örneği, PHP dosyalarının yedek kopyaları olabilir. Bazen PHP dosyaları, WordPress'in wp-config.php dosyası gibi önemli yapılandırma verilerini içerir.

Aşağıdaki senaryoyu uygulayın - bir WordPress yöneticisinin wp-config.php dosyasında değişiklik yapması gerekiyor. En iyi uygulamayı takip etmek ve dosyanın bir kopyasını web sunucusundan başka bir yerde tutmak yerine, wp-config.php.bak yedeğine ad vererek canlı wp-config.php dosyasının bir kopyasını oluştururlar. Şimdi sysadmin'in bu dosyayı kaldırmayı unuttuğunu varsayalım, bu düşündüğümüzden daha sık oluyor.

Saldırgan artık sadece http://www.example.com/wp-config.php.bak isteyerek dosyayı okuyabilir. Uzantısı artık .php olmadığı için saldırgan dosyayı okuyabilir. Böylece PHP motoru onu yok sayar ve web sunucusu onu bir metin dosyası olarak sunar. Saldırgan artık WordPress veritabanı kimlik bilgilerini, gizli belirteçleri ve o dosyaya kaydettiğiniz diğer hassas yapılandırma bilgilerini biliyor.

Geçici dosyalar

Yedekleme dosyalarına benzer şekilde, yanlış konumdaki geçici dosyalar, potansiyel olarak hassas verileri açığa çıkarabilir. Bir kez daha wp-config.php örnek alınıyor. Bir sistem yöneticisi bu dosyayı bir metin düzenleyici kullanarak düzenlemek zorunda kaldıysa ve herhangi bir nedenle program temiz bir şekilde çıkmadıysa, düzenleyicinin geçici dosyalar bırakması için iyi bir şans vardır. Örneğin, popüler komut satırı düzenleyicisi Vim, *.ext~ dosyası uzantılı yedekleme dosyalarını bir *.ext.swp dosyasıyla birlikte depolar. Swp dosyaları bir kilit dosyası olarak kullanılır. Ayrıca tüm geri alma/yineleme geçmişini ve Vim'in ihtiyaç duyduğu diğer dahili bilgileri içerir.

Bu nedenle, bir çökme durumunda Vim, *.php dosya uzantısıyla bitmediği için yedekleme dosyaları gibi düz metin olarak erişilebilen bir wp-config.php.ext~ dosyası bırakır. Bu türden geçici dosyalar Vim'e özel değildir - Emacs (bir başka popüler komut satırı metin düzenleyicisi) de benzer geçici dosyaları kaydeder ve sayısız başka araç da yapar.

Dikkat - geçici ve yedek dosyalar dahil tüm dosya değişikliklerinden haberdar olmak için web siteniz için bir dosya bütünlüğü izleme eklentisi kullanın. Bu teknolojiye aşina değilseniz, WordPress için dosya bütünlüğü izleme girişimizi okuyun.

Açık MySQL

Şimdiye kadar, bir sistem yöneticisinin yapabileceği en ciddi yanlış yapılandırmalardan biri, WordPress MySQL veritabanı sunucusunu İnternete açık bırakmaktır. Bu neden çılgınca gelebilir, muhtemelen düşündüğünüzden daha fazla olur. Aşağıda, İnternet'e bağlı cihazlar için bir arama motoru olan Shodan'dan bir ekran görüntüsü verilmiştir.

MySQL sunucuları için Shodan'daki sonuçlar

Tabii ki, MySQL'in İnternet üzerinden açığa çıkması, birinin ona bağlanabileceği ve WordPress veritabanına erişebileceği anlamına gelmez. Ancak özellikle wp-config.php dosyasının yedeği aracılığıyla sızdırılmış bir parola veya zayıf bir parolanın tahmin edilmesi gibi diğer saldırılarla birlikte kullanıldığında bir felaket senaryosuna yol açabilir.

Bir WordPress veritabanının kontrolü ele alındığında, bir WordPress kurulumu için oyun biter. Bir saldırganın tek yapması gereken bir yönetici parolasını sıfırlamaktır. Ardından, kasıtlı olarak kötü amaçlı eklentiler yükleyerek WordPress web sitenizin ve potansiyel olarak üzerinde çalıştığı sunucunun tam kontrolünü ele alırlar.

Gereksiz hizmetleri çalıştırma

Diğer bir yaygın web sunucusu yanlış yapılandırma sorunu, varsayılan yapılandırmadır. Birçok yönetici varsayılan yapılandırmayı çalıştırır ve ihtiyaç duymadıkları hizmetleri devre dışı bırakmaz. Çoğu durumda, varsayılan kurulumlarda çalışan birçok gereksiz hizmet vardır ve bunların çoğu, güvenli değilse web sunucusunu saldırılara maruz bırakır.

WordPress penetrasyon test cihazları ve güvenlik uzmanları için pentesting araçları

Penetrasyon test cihazları, çalışmalarını ve tekniklerini otomatikleştirmek için çeşitli araçlar kullanır. Otomasyon, bir güvenlik değerlendirmesi / sızma testi gerçekleştirmek için gereken süreyi azaltmaya yardımcı olur.

Kali Linux

Bir kişinin kullandığı araçlar büyük ölçüde değişir. Kişisel tercihe ve eldeki soruna bağlıdır. Ancak, başlamak için iyi bir yer, emrinizde, önceden yüklenmiş çeşitli araçlara sahip olmaktır.

Kali Linux

Eskiden BackTrack olarak bilinen Kali Linux, Linux dağıtımına yönelik açık kaynak penetrasyon testidir. Kali Linux, bir dizi önceden yüklenmiş ve önceden yapılandırılmış araçla birlikte gelir. Hem hızlı bir başlangıç ​​yapmak isteyen acemi kullanıcılar hem de deneyimli penetrasyon test uzmanları için faydalıdır. Kali Linux ücretsiz olarak mevcuttur ve sanal bir makinede çalışabilir.

Nmap

Bu ücretsiz tarayıcı, herhangi bir pentester cephanesindeki en temel ve çok yönlü tarayıcılardan biridir. Nmap öncelikle bir port tarayıcıdır. Ancak, NSE komut dosyası dili aracılığıyla her türlü farklı tarama türünü yapacak şekilde genişletilebilir.

NMAP tarayıcı

WPScan

WPScan (bu makalenin başlarında ele alınmıştır) açık kaynaklı bir WordPress güvenlik tarayıcısıdır. Hem WordPress çekirdeğinde hem de WordPress eklentileri ve temalarında bilinen WordPress güvenlik açıklarını tarar.

WPScan tarayıcı

WPScan bir dizi kara kutu testi gerçekleştirebilir. Yani, kaynak koduna erişim olmadan. Sonuç olarak, WPScan, düşük asılı WordPress güvenlik açıklarını hızlı ve doğru bir şekilde bulmak için harikadır.

OWASP ZAP

OWASP Zed Attack Proxy (ZAP), ücretsiz, açık kaynaklı bir web uygulaması sızma testi aracıdır. Açık Web Uygulama Güvenliği Projesi (OWASP) bu araçları korur. OWASP ZAP, Siteler Arası Komut Dosyası Çalıştırma (XSS) ve SQL Enjeksiyon (SQLi) gibi çok çeşitli güvenlik açıkları için web uygulamalarını test etmek için özel olarak tasarlanmıştır. ZAP, özünde bir vekildir. İkisi arasında gönderilen istekleri engellemek ve incelemek için pentester tarayıcısı ile web sitesi arasında oturur.

OWASP ZAP tarayıcı

ZAP, bir proxy görevi görmenin yanı sıra çeşitli güvenlik açıklarını otomatik olarak test edebilir ve ayrıca çeşitli girdileri bulanıklaştırabilir . Fuzzing , güvenlik açıklarını ortaya çıkarmak amacıyla bir uygulamaya geçersiz veya beklenmedik girdilerin sağlandığı bir güvenlik testi tekniğidir.

WordPress için sızma testi – web sitenizin güvenlik durumunu değerlendirme

WordPress güvenliği tek seferlik bir düzeltme değildir. Dört ilkeye dayanan sürekli bir süreçtir: Sertleştir > İzle > Test Et > İyileştir. Penetrasyon testi ile test prensibini ele alırsınız. Yani web sitenizin güvenlik durumunu kontrol ediyorsunuz. Ardından, bulgularınıza göre kurulumu iyileştirmek için gerekli önlemleri alabilirsiniz.

Bu nedenle sık WordPress web sitesi sızma testi, güvenlik programınızın bir parçası olmalıdır. Sızma testlerini ne sıklıkta yapmanız gerektiğine siz karar verirsiniz. Web sitenizde sık sık değişiklik yapıyorsanız, sık sık testler yapmalısınız. Ancak, web siteniz nadiren güncelleme alıyorsa, üç ayda bir sızma testi hile yapar.