Ik heb onlangs een probleem gehad waarbij ik de WP Smush Pro-plug-in niet kon installeren omdat ik de handmatige installatie of installatie met één klik niet heb beschikbare opties.

Ik kwam dit bericht tegen, waarin werd voorgesteld om de instellingen in wp-config.php aan te passen. Ik heb de voorgestelde instellingen toegevoegd, maar degene die het belangrijkst lijkt, is:

define("FS_METHOD", "direct");

Wat ik zou willen weten is wat voor echte zorgen moet ik hebben bij het instellen van FS_METHOD naar direct? Zijn er andere alternatieven voor het installeren van de plug-in?

Dit is wat de officiële documentatie te zeggen heeft:

FS_METHOD forceert de bestandssysteemmethode. Het zou alleen “direct”, “ssh2”, “moeten zijn ftpext “of” ftpsockets “. Over het algemeen zou u dit alleen moeten veranderen als u updateproblemen ondervindt. Als u het verandert en het helpt niet, verander het dan terug / opnieuw verplaats het. Onder de meeste omstandigheden zal het instellen op “ftpsockets” werken als de automatisch gekozen methode dat niet doet.

(Primaire voorkeur) “direct” dwingt het om Direct File I / O-verzoeken te gebruiken vanuit PHP, dit is beladen met het openen van beveiligingsproblemen op slecht geconfigureerde hosts, wordt dit automatisch gekozen wanneer dit van toepassing is.

Antwoord

Dit is precies hoe ik het idee van de WordPress File API begreep. Als het fout is, stem dan omlaag 🙂

Oké. Als u een bestand uploadt, heeft dit bestand een eigenaar. Als u uw bestand uploadt met FTP, logt u in en wordt het bestand eigendom van de FTP-gebruiker. Aangezien u de inloggegevens heeft, kunt u deze bestanden wijzigen via FTP. De eigenaar kan het bestand meestal uitvoeren, verwijderen, wijzigen enz. U kunt dit natuurlijk wijzigen door de bestandsrechten te wijzigen.

Als u een bestand uploadt met PHP, geeft de linux-gebruiker, het uitvoeren van PHP is eigenaar van het bestand. Deze gebruiker kan nu het bestand bewerken, verwijderen, uitvoeren enz. Dit is oké zolang alleen jij de gebruiker bent die PHP op je systeem uitvoert.

Laten we aannemen dat je op een “slecht” geconfigureerde gedeelde host zit. Veel mensen draaien hun PHP-websites op dit systeem. Laten we zeggen dat slechts één Linux-gebruiker PHP uitvoert voor al deze mensen. Een van de webmasters op deze gedeelde host heeft slechte bedoelingen. Hij ziet je pagina en zoekt het pad naar je WordPress-installatie. WP_DEBUG is bijvoorbeeld ingesteld op true en er is een foutmelding als

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

“Ha!” zegt de slechte jongen. Eens kijken of deze man FS_METHOD heeft ingesteld op direct en hij een script schrijft zoals

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

Aangezien slechts één gebruiker PHP draait en deze gebruiker ook wordt gebruikt door de bad boy, kan hij de bestanden op je systeem wijzigen / verwijderen / uitvoeren als je ze hebt geüpload via PHP en hieraan de PHP hebt toegevoegd gebruiker als de eigenaar.

Uw site is gehackt.

Of, zoals in de Codex staat:

Bij veel hostingsystemen draait de webserver als een andere gebruiker dan de eigenaar van de WordPress-bestanden. Wanneer dit het geval is, zal een proces dat bestanden schrijft vanaf de webservergebruiker de resulterende bestanden eigendom hebben van het gebruikersaccount van de webserver in plaats van het daadwerkelijke gebruikersaccount. Dit kan leiden tot een beveiligingsprobleem in gedeelde hostingsituaties, waarbij meerdere gebruikers dezelfde webserver delen voor verschillende sites.

Antwoord

Wat is het risico?

Op een slecht geconfigureerde gedeelde host zal de PHP van elke klant worden uitgevoerd als dezelfde gebruiker (laten we zeggen apache voor discussie). Deze opstelling komt verrassend vaak voor.

Als je op zon host werkt en WordPress gebruikt om de plug-in te installeren met behulp van directe bestandstoegang, je plug-inbestanden zullen behoren tot apache. Een legitieme gebruiker op dezelfde server zou je kunnen aanvallen door een PHP-script te schrijven dat kwaadaardige code in je plug-inbestanden injecteert. Ze uploaden hun script naar hun eigen website en vragen om de URL. Uw code is met succes gecompromitteerd omdat hun script wordt uitgevoerd als apache, hetzelfde script dat de eigenaar is van uw plug-inbestanden.

Wat doet FS_METHOD "direct" ermee te maken hebben?

Wanneer WordPress bestanden moet installeren (zoals een plug-in), gebruikt het de get_filesystem_method () functie om te bepalen hoe u toegang krijgt tot het bestandssysteem. Als u FS_METHOD niet definieert, zal het een standaard voor u kiezen, anders zal het uw selectie gebruiken zolang het zinvol is.

Het standaardgedrag zal proberen om te detecteren of u zich in een risicovolle omgeving bevindt, zoals de een die ik hierboven heb beschreven, en als het denkt dat je “veilig bent, zal het de "direct" methode gebruiken. In dit geval maakt WordPress de bestanden rechtstreeks via PHP aan, waardoor ze behoren tot de apache -gebruiker (in dit voorbeeld). Anders “zal het terugvallen op een veiligere methode, zoals u vragen om SFTP-inloggegevens en de bestanden aanmaken zoals u.

FS_METHOD = "direct" vraagt WordPress om dat op -risk detectie en altijd bestanden maken met de "direct" methode.

Waarom zou je dan FS_METHOD = "direct"?

Helaas is de WordPress-logica voor het detecteren van een risicovolle omgeving gebrekkig en produceert zowel vals-positieven als vals-negatieven. Oeps. De test omvat het maken van een bestand en ervoor zorgen dat het van dezelfde eigenaar is als de map waarin het zich bevindt. De veronderstelling is dat als de gebruikers hetzelfde zijn, PHP wordt uitgevoerd als uw eigen account en het veilig is om plug-ins op deze manier te installeren Als ze verschillend zijn, gaat WordPress ervan uit dat PHP wordt uitgevoerd als een gedeeld account en dat het niet veilig is om plug-ins als dat account te installeren. Helaas zijn beide aannames onderbouwde gissingen die vaak verkeerd zijn.

Je zou define("FS_METHOD", "direct" ); gebruiken in een vals-positief scenario zoals dit: je maakt deel uit van een vertrouwd team waarvan de leden allemaal bestanden uploaden via hun eigen account. PHP werkt als zijn eigen aparte gebruiker. WordPress gaat ervan uit dat dit een risicovolle omgeving is en zal niet standaard de "direct" modus gebruiken. In werkelijkheid wordt het alleen gedeeld met gebruikers die je vertrouwt en als zodanig "direct" -modus is veilig. In dit geval moet je define("FS_METHOD", "direct" ); gebruiken om WordPress te dwingen bestanden rechtstreeks te schrijven.

Opmerkingen

Antwoord

Er is een” goed geconfigureerde ” situatie waarin “direct” tot problemen zal leiden.

Het is ook mogelijk om gedeelde WP-hosting te configureren met niet-gedeelde PHP-uitvoerende gebruikers, anders dan de gebruikers van het bestand / directory-eigendom. Je krijgt dus de bestanden die eigendom zijn van gebruiker1 en de PHP-code wordt uitgevoerd als php-user1.

In die situatie kunnen gehackte plug-ins of kerncode (a) niet schrijven naar (of zelfs lezen van , afhankelijk van de toestemmingen) “directoriess van andere gebruikers; (b) kan de bestanden van deze gebruiker niet schrijven en kan dus ook geen trojan-code toevoegen aan de kern- of plug-incode.

Dus als de hosting zo is opgezet , je MOET FTP gebruiken voor updates en “direct” zal niet werken.

Als je “direct” instelt in wp-config.php en de PHP-uitvoerende gebruiker heeft geen schrijfrechten, dan krijg je Update Mislukte berichten en er is geen pop-up waarin om FTP-inloggegevens wordt gevraagd.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *