Wp-config'de FS_METHOD işlevini “direct” olarak ayarlarken hangi güvenlik sorunlarına sahip olmam gerekir?


36

Son zamanlarda WP Smush Pro eklentisini yükleyemediğim bir sorunla karşılaştım, çünkü Manuel Kurulum veya Tek Tıkla Kurulum seçenekleri mevcut değil.

Ayarları değiştirmeyi öneren yazıya rastladım wp-config.php. Önerilen ayarları ekledim, ancak en önemli göründüğü gibi:

define('FS_METHOD', 'direct');

Etrafa ayarı gerekirdi gerçek Kaygýlar ben bilmek istiyorum nedir FS_METHODiçin direct? Eklentiyi kurmak için başka alternatifler var mı?

Resmi belgelerin söylediği bu:

FS_METHOD, dosya sistemi yöntemini zorlar. Yalnızca "doğrudan", "ssh2", "ftpext" veya "ftpsockets" olmalıdır. Genel olarak, bunu yalnızca güncelleme sorunları yaşıyorsanız değiştirmeniz gerekir. Değiştirirseniz ve işe yaramazsa, geri değiştirin / kaldırın. Çoğu durumda, otomatik olarak seçilen yöntem işe yaramazsa 'ftpsockets' olarak ayarlamak işe yarayacaktır.

(Birincil Tercih) "direct", PHP içinden Direct File I / O isteklerini kullanmaya zorlar, bu kötü yapılandırılmış ana bilgisayarlarda güvenlik sorunlarının açılmasıyla doludur, Bu uygun olduğunda otomatik olarak seçilir.

Yanıtlar:


33

Bu sadece, WordPress Dosyası API'sı fikrini nasıl anladığımı açıklar . Eğer yanlışsa, lütfen aşağı oy verin :)

Tamam. Bir dosya yüklerseniz, bu dosyanın sahibine sahiptir. Dosyanızı FTP ile yüklerseniz, giriş yaparsınız ve bu dosya FTP kullanıcısına aittir. Kimlik bilgilerine sahip olduğunuzdan, bu dosyaları FTP üzerinden değiştirebilirsiniz. Sahibi genellikle dosyayı çalıştırabilir, silebilir, değiştirebilir vb. Elbette, dosya izinlerini değiştirerek bunu değiştirebilirsiniz .

PHP kullanarak bir dosya yüklerseniz, PHP'yi çalıştıran linux kullanıcısı dosyanın sahibi olur. Bu kullanıcı şimdi dosyayı düzenleyebilir, silebilir, yürütebilir vs. Sisteminizde PHP'yi çalıştıran sadece siz olduğunuz sürece bu tamamdır.

Farz edelim ki, "kötü" yapılandırılmış paylaşılan bir ana bilgisayar üzerindesiniz. Bir çok insan PHP web sitelerini bu sistemde kullanıyor. Diyelim ki sadece bir linux kullanıcısı bütün bu insanlar için PHP'yi çalıştırıyor. Bu paylaşılan ana bilgisayardaki web yöneticilerinden birinin kötü niyetli olduğu. Sayfanızı görüyor ve WordPress kurulumunuzun yolunu buluyor. Örneğin, WP_DEBUG true olarak ayarlanmıştır ve bunun gibi bir hata mesajı vardır.

[warning] /var/www/vhosts/userxyz/wp-content/plugins/bad-plugin/doesnt-execute-correctly.php on line 1

"Ha!" Kötü çocuk diyor. Bu adam belirledi eğer görelim FS_METHODetmek directve o böyle bir senaryoyu yazıyor

<?php
unlink( '/var/www/vhosts/userxyz/wp-content/plugins/bad-plugin/doesnt-execute-correctly.php' );
?>

Yalnızca bir kullanıcı PHP kullanıyor olduğundan ve bu kullanıcı kötü çocuk tarafından da kullanıldığından, eğer onları PHP üzerinden yüklediyseniz ve sisteme sahip olan PHP kullanıcısını bağladıysanız sisteminizdeki dosyaları değiştirebilir / silebilir / çalıştırabilir.

Siteniz saldırıya uğradı.

Veya, Kodeks'te yazdığı gibi:

Pek çok barındırma sistemi, web sunucusu WordPress dosyalarının sahibinden farklı bir kullanıcı olarak çalışır. Bu durumda, web sunucusu kullanıcısından dosya yazma işlemi, gerçek kullanıcının hesabı yerine web sunucusunun kullanıcı hesabına ait sonuç dosyalarına sahip olacaktır. Bu, birden fazla kullanıcının aynı web sunucusunu farklı siteler için paylaştığı paylaşılan barındırma durumlarında güvenlik sorununa neden olabilir.


15

Risk nedir?

Kötü yapılandırılmış paylaşılan bir ana bilgisayarda, her müşterinin PHP'si aynı kullanıcı olarak çalışacaktır ( apachetartışma için diyelim ). Bu kurulum şaşırtıcı derecede yaygındır.

Böyle bir ana bilgisayardaysanız ve doğrudan dosya erişimini kullanarak eklentiyi yüklemek için WordPress kullanıyorsanız, tüm eklenti dosyalarınız ait olacaktır apache. Aynı sunucudaki meşru bir kullanıcı, eklenti dosyalarınıza kötü kod ekleyen bir PHP betiği yazarak size saldırabilir. Senaryolarını kendi web sitelerine yüklerler ve URL’lerini isterler. Kodunuz başarıyla işlenmiştir, çünkü komut apachedosyaları eklenti dosyalarınızınkiyle aynıdır.

Bununla ne FS_METHOD 'direct'ilgisi var?

WordPress'in dosyaları (bir eklenti gibi) kurması gerektiğinde, dosya sistemine nasıl erişileceğini belirlemek için get_filesystem_method () işlevini kullanır . Tanımlamazsanız sizin FS_METHODiçin bir varsayılan seçecektir, aksi halde seçiminizi mantıklı olduğu sürece kullanacaktır.

Varsayılan davranış, yukarıda tanımladığım gibi risk altındaki bir ortamda olup olmadığınızı algılamaya çalışır ve güvenli olduğunu düşünüyorsa, 'direct'yöntemi kullanır . Bu durumda WordPress, dosyaları doğrudan PHP üzerinden oluşturacak ve apachekullanıcının kullanıcıya ait olmasına neden olacaktır (bu örnekte). Aksi takdirde, SFTP kimlik bilgilerini istemek ve dosyaları sizin gibi oluşturmak gibi daha güvenli bir yönteme geri döner.

FS_METHOD = 'direct'WordPress'ten bu risk altındaki algılamayı atlamasını ve her zaman'direct' yöntemi kullanarak dosyaları oluşturmasını ister .

Öyleyse neden kullandın FS_METHOD = 'direct'?

Maalesef, WordPress'in risk altındaki bir ortamı tespit etme mantığı hatalı ve hem yanlış pozitif hem de yanlış negatifler üretiyor. Whoops. Test, bir dosya oluşturmayı ve içinde bulunduğu dizinin aynı sahibine ait olduğundan emin olmayı içerir. Varsayım, eğer aynı kullanıcılar varsa, PHP kendi hesabınızla çalışıyordur ve bu hesapla eklentileri kurmak güvenlidir. Farklılarsa, WordPress, PHP'nin paylaşılan bir hesap olarak çalıştığını ve bu hesap olarak eklenti yüklemek güvenli olmadığını varsayar. Ne yazık ki bu varsayımların her ikisi de sıklıkla yanlış olacak olan eğitimli tahminlerdir.

define('FS_METHOD', 'direct' );Şunun gibi yanlış bir pozitif senaryoda kullanırsınız : Üyelerinin tümü kendi hesaplarıyla dosya yükleyen güvenilir bir ekibin parçasısınız. PHP kendi ayrı kullanıcısı olarak çalışır. WordPress, bunun risk altındaki bir ortam olduğunu ve varsayılan 'direct'moda geçmediğini varsayar . Gerçekte, yalnızca güvendiğiniz kullanıcılarla paylaşılır ve bu 'direct'mod güvenlidir. Bu durumda define('FS_METHOD', 'direct' );WordPress'i doğrudan dosya yazmaya zorlamak için kullanmalısınız .


1

'Doğrudan' sorunlara yol açacak 'iyi yapılandırılmış' bir durum vardır.

Paylaşılan WP barındırma paylaşımını, paylaşılmayan PHP yürütme kullanıcılarıyla, dosya / dizin sahipliği kullanıcılarından farklı olarak yapılandırmak mümkündür. Böylece, user1 tarafından sahip olunan dosyalara sahip olursunuz ve PHP kodu php-user1 olarak yürütülür.

Bu durumda, hack eklenti veya çekirdek kod (a) diğer kullanıcıların dizinlerine yazı yazamaz (hatta izinlere bağlı olarak okuyamaz); (b) bu kullanıcının dosyalarını yazamaz ve dolayısıyla çekirdek veya eklenti koduna truva atı kodu ekleyemez.

Öyleyse, eğer barındırma böyle ayarlanmışsa, güncellemeler için FTP kullanmanız ZORUNLU ve 'doğrudan' çalışmaz.

Wp-config.php dosyasında 'direct' seçeneğini belirlerseniz ve PHP yürütme kullanıcısı yazma iznine sahip değilse, Güncelleme Başarısız mesajlarını alırsınız ve FTP kimlik bilgileri isteyen bir açılır pencere olmaz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.