← Të gjithë artikujt

Fushata WordPress XSS vendos katër rrugë rikthimi në faqet e internetit

Fushata WordPress XSS vendos katër rrugë rikthimi në faqet e internetit

Një fushatë WordPress XSS po shfrytëzon dobësi në dy plugin pa lidhje me njëri-tjetrin për të ekzekutuar JavaScript keqdashës kur një administrator shikon të dhënat e ruajtura të klientëve. Patchstack e vëzhgoi për herë të parë aktivitetin më 4 tetor 2026, duke synuar CVE-2026-93836 në WPC Product Bundles for WooCommerce, e ndjekur më 5 tetor nga CVE-2026-94504 në Ninja Forms. Të dy sulmet ngarkojnë të njëjtin script nga imgcdn1.com, i cili më pas përdor session aktiv të administratorit për të instaluar malware dhe për të krijuar katër rrugë të veçanta rikthimi në faqen e internetit. Patchstack thotë se shfrytëzimi është aktiv, por mbetet i kufizuar në telemetry e tij, dhe dy dobësitë e konfirmuara të shpërndarjes nuk duhet të konsiderohen si numri përfundimtar.

Të dyja dobësitë janë dobësi unauthenticated stored cross-site scripting, ose stored XSS. Kjo do të thotë se një sulmues mund të ruajë kod keqdashës për browser brenda një faqeje pa u identifikuar dhe më pas të presë që ai kod të ekzekutohet kur një administrator hap record e prekur. CVE-2026-93836 prek WPC Product Bundles for WooCommerce deri në versionin 8.6.6 dhe ka një vlerësim ashpërsie CVSS prej 7.1. Përmes parametrit woosb_ids[…][qty], sulmuesit dërguan një sasi që fillonte me një numër të vlefshëm, të ndjekur nga një element script. Vlera kaloi validation, mbeti në metadata e porosisë së WooCommerce dhe më vonë u shfaq pa mbrojtje të mjaftueshme. Plugin ka më shumë se 30,000 instalime aktive dhe changelog i tij e identifikon versionin 8.6.7 si rregullimin e sigurisë.

CVE-2026-94504, gjithashtu me vlerësim CVSS 7.1, prek Ninja Forms deri në versionin 3.15.3, një plugin me më shumë se 500,000 instalime aktive. Endpoint normal AJAX për dërgimin e formularëve pranonte përmbajtje të kontrolluar nga sulmuesi në fushat textarea që nuk përdornin rich text. Editori i vjetër administrativ i dërgesave mund ta shfaqte më pas atë përmbajtje pa e koduar në mënyrë të sigurt, duke lejuar ekzekutimin e JavaScript kur shikohej dërgesa. Versioni 3.15.4 përforcoi output escaping në atë ekran. Megjithëse loaders e injektuar u përshtatën për kontekstet e ndryshme të formularëve dhe porosive, të dy merrnin payload e centralizuar nga https://imgcdn1.com/fz/x.js.

Analiza e Patchstack zbuloi se x.js është një script post-exploitation prej 19,378 bytes, që do të thotë kod i përdorur pasi aksesi fillestar është siguruar tashmë. Ai nuk vjedh cookie e administratorit dhe nuk kërkon një dobësi tjetër në server. Meqë ekzekutohet brenda browser context të vetë faqes së komprometuar, kërkesat drejt wp-admin mbartin automatikisht session e autentikuar të administratorit. Script hap faqe me privilegje, nxjerr CSRF nonces, të cilat janë vlera të përkohshme që WordPress përdor për të konfirmuar veprimet administrative, dhe i dërgon ato vlera përmes funksioneve legjitime të WordPress. Mbrojtja HttpOnly e cookie nuk e ndalon këtë, sepse kodi nuk ka nevojë ta lexojë drejtpërdrejt cookie.

Përpara se të bëjë ndryshime, x.js kontakton command-and-control server, ose C2, në imgcdn1.com/fz/c.php, duke i dërguar adresën e faqes së synuar. Përgjigjja raporton nëse fazat e plugin, administratorit dhe persistence shtesë kanë pasur sukses. Script gjithashtu regjistron ecurinë në Local Storage të browser nën një key që fillon me __xp_v9_, duke i shënuar fazat si plugin, admin, emer dhe në fund all. Ai raporton rezultatet përmes fetch(), sendBeacon() ose një kërkese imazhi, duke i dhënë mesazhit të statusit disa mënyra për t'i mbijetuar navigimit në faqe.

Duke përdorur session e administratorit, malware hap faqen e WordPress për ngarkimin e plugin, mbledh nonce e saj dhe shkarkon një paketë ZIP nga C2. Paketa instalohet si wp-smart-thumbnails dhe shtiret si “WP Smart Thumbnails” 1.2.4 nga “MediaPress Labs”. Katër skedarët e saj përfshijnë dropper wp-smart-thumbnails.php prej 20,728 bytes, instaluesin e persistence emer-run.php prej 14,330 bytes dhe dy decoy shumë të vegjël. Të gjithë mbajnë timestamps të korrikut 2026, përpara fillimit të fushatës. Skedari kryesor mbyllet kur WordPress e ngarkon normalisht dhe ekzekutohet vetëm përmes një kërkese të drejtpërdrejtë web, duke e ndihmuar të duket joaktiv në dashboard.

Dropper fsheh payload e tij pas shtatë transformimeve që përfshijnë Base64, XOR, reversal, ROT13, byte rotation dhe decompression, të ndjekura nga një kontroll integriteti MD5. Në vend që të përdorë funksionin eval(), i cili zbulohet shpesh, ai regjistron stream wrapper dyiv:// dhe përfshin kodin e dekoduar përmes asaj adrese. Rezultati është një file manager grafik prej afërsisht 37 KB, me titull “Moon, tell me if I could”. Ai nuk kërkon password, token apo leje WordPress dhe mund të listojë, ngarkojë, fshijë, riemërtojë, krijojë, lexojë dhe ruajë skedarë përmes një interface JSON. Ai nuk thërret drejtpërdrejt system() ose exec(), por aftësia e tij për të shkruar skedarë të kontrolluar nga sulmuesi në çdo vendndodhje ku lejohet shkrimi mjafton për të instaluar një webshell tjetër, një mjet të aksesueshëm përmes web për kontrollimin e skedarëve ose ekzekutimin e mëtejshëm të kodit keqdashës.

Komponenti emer-run.php krijon aksesin më afatgjatë. Fillimisht, ai shton një llogari me privilegje të plota dhe me një username që duket i zakonshëm, të zgjedhur nga fjalë si support, updater, maintenance ose backup, një adresë emaili @wordpress.org dhe një password të rastësishëm me 16 karaktere. Më pas shkruan një must-use plugin, një extension WordPress që ngarkohet automatikisht dhe nuk mund të çaktivizohet nga ekrani normal Plugins. Hooks në atë skedar e heqin llogarinë nga user queries, filtrat e administratorëve dhe totalet e shfaqura, kështu që ajo nuk shfaqet te Users dhe nuk numërohet. Heqja e plugin wp-smart-thumbnails nuk e heq këtë administrator të fshehur.

Një must-use plugin i dytë krijon /wp-login.php?_wplogin=. Kushdo që zotëron një token të vlefshëm autentikohet në heshtje si administratori ekzistues më i vjetër i faqes, zakonisht pronari fillestar, dhe jo si llogaria e fshehur. Prandaj, logs që regjistrojnë vetëm user ID mund ta bëjnë session të duket legjitime. Të dy must-use plugins janë obfuscated me një key të ndryshëm dhe emra të rastësishëm variables në çdo faqe të infektuar, duke penguar që një file hash i vetëm të identifikojë çdo kopje. Instaluesi gjithashtu gjen modification time më të vjetër në WordPress root dhe ua aplikon skedarëve të rinj, duke mposhtur kërkimet që kontrollojnë vetëm për ndryshime të fundit.

Kështu, një ekzekutim i vetëm i suksesshëm lë katër metoda të pavarura aksesi: një administrator të dukshëm të krijuar me credentials nga C2, administratorin e fshehur, URL e posaçme të hyrjes për administratorin më të vjetër dhe file manager pa autentikim. Vetëm i pari është normalisht i dukshëm në WordPress. stored XSS është veçanërisht efektiv këtu, sepse sulmuesi nuk ka nevojë ta bindë një administrator të hapë një link të posaçëm. Payload pret brenda një porosie ose dërgese të zakonshme formulari. WordPress 7.1.1 trajtoi një dobësi të veçantë unauthenticated stored XSS në wpautop() në shtator 2026, duke treguar se ky model sulmi nuk kufizohet vetëm te një plugin.

Domain imgcdn1.com hostonte browser implant, kontrollet e viktimave, paketën keqdashëse plugin, credentials e zgjedhura nga sulmuesi dhe raportimin e komprometimit. Ai u regjistrua më 1 tetor, iu delegua një Cloudflare nameserver më 2 tetor dhe u shfaq për herë të parë në telemetry e Patchstack në orën 10:39 UTC më 4 tetor. Dy dobësitë e plugin ishin bërë publike më 22 shtator.

Disponueshëm edhe në: EnglishDeutschItaliano