Allvarliga sårbarheter i NextGen Gallery påverkar över 800 000 WordPress-webbplatser
Den 14 december 2020 var Wordfence Threat Intelligence-teamet klar med att undersöka två sårbarheter över CSRF (Cross-Site Request Forgery) i NextGen Gallery, ett WordPress-plugin med över 800 000 installationer, inklusive en kritisk sårbarhet som kan leda till RCE (Remote Code Execution) och Stored Cross-Site Scripting (XSS). Utnyttjande av dessa sårbarheter kan leda till en webbplatsövertagande, skadliga omdirigeringar, skräppostinjektion, nätfiske och mycket mer.

Wordfence Threat Intelligence nådde ursprungligen ut till plugin-utgivaren, Imagely, samma dag, och tillhandahöll fullständig information nästa dag, den 15 december 2020. Imagely skickade dem korrigeringar för granskning den 16 december och publicerade den patchade versionen, 3.5.0, den 17 december 2020.

Påverkade versioner: < 3.5.0
CVE ID: CVE-2020-35942
CVSS Score: 9.6 (CRITICAL)
CVSS Vector: CVSS:3.0/AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:H
Fullt patchad version: 3.5.0

Felet låg i en enda funktion som har till uppgift att kolla att man är behörig att utföra en specifik funktion t.ex. att ladda upp CSS filer till hemsidan. Problemet med denna funktion var att den innehöll flera olika kontroller t.ex. om man är inloggad men också om det fanns en WordPress nonce session i requesten och om den saknades helt kunde man få åtkomst. Vanligtvis så är uppladdningsfunktionen skyddad så man inte kan ladda upp php filer men man kunde ladda upp filer som t.ex. heter virus.php.css och i vissa konfigurationer kunde man få den körbar som php skript speciellt i Apache/mod_php med en “AddHandler direktiv”. För att t.ex. kunna köra en sådan fil kunde man använda en “Legacy Template” funktion i pluginet för att på så sätt låta ett tema köra filen oavsett vad den har för filändelse genom en CSRF attack. Detta skulle resultera i Local File Inclusion (LFI) och Remote Code Execution (RCE), eftersom den uppladdade filen sedan skulle inkluderas och köras när den valda albumtypen visades på webbplatsen. Alla JavaScript-filer som ingår i den uppladdade filen körs också, vilket resulterar i XSS (Cross-Site Scripting).

Att nyttja sårbarheten är inte enkel utan behöver lite hjälp av en som är administratör att lura denna att klicka på en länk som skickar speciella request för att utföra dessa hacks samt att minst ett album använder Legacy Template.

I denna kod fanns ett logiskt fel i if satsen att om det inte fanns någon “nounce” satt blev resultatet sant och man fick behörighet.

if ($token === TRUE) {
        $token = isset($_REQUEST['nonce']) ? $_REQUEST['nonce'] : FALSE;
    }

 

Kontakt Support