{"id":20858,"date":"2026-06-20T18:20:23","date_gmt":"2026-06-20T15:20:23","guid":{"rendered":"https:\/\/sysadmin.courses\/%d0%b2%d0%b7%d0%bb%d0%be%d0%bc%d0%b0%d1%82%d1%8c-joomla-%d0%b7%d0%b0-%d0%b4%d0%b2%d0%b0-%d0%b7%d0%b0%d0%bf%d1%80%d0%be%d1%81%d0%b0-cve-2026-48907-%d0%b2-%d0%bf%d0%bb%d0%b0%d0%b3%d0%b8%d0%bd%d0%b5-jce\/"},"modified":"2026-06-20T18:27:34","modified_gmt":"2026-06-20T15:27:34","slug":"du-uzklausos-uzvaldyti-joomla-svetaine-cve-2026-48907-jce-plaginui-ir-kaip-patikrinti-savo-serveri-dabar","status":"publish","type":"post","link":"https:\/\/sysadmin.courses\/lt\/du-uzklausos-uzvaldyti-joomla-svetaine-cve-2026-48907-jce-plaginui-ir-kaip-patikrinti-savo-serveri-dabar\/","title":{"rendered":"Du u\u017eklausos u\u017evaldyti Joomla svetain\u0119: CVE-2026-48907 JCE plaginui ir kaip patikrinti savo server\u012f dabar"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">J\u016bs\u0173 Joomla svetain\u0117 neturi vie\u0161os registracijos. Jokio forumo, jokios vartotojo paskyros \u2014 lankytojai tik skaito. Pagr\u012fstai manote, kad n\u0117ra k\u0105 \u012fsilau\u017eti: jei n\u0117ra prisijungimo, n\u0117ra ir gr\u0117sm\u0117s. Tada 2026 m. bir\u017eelio 3 d. populiariausio Joomla vizualinio redaktoriaus k\u016br\u0117jas i\u0161leido skub\u0173 pataisym\u0105 su formuluote &#8222;kritin\u0117 pa\u017eeid\u017eiamumo vieta visose ankstesn\u0117se versijose&#8221; \u2014 ir paai\u0161k\u0117jo, kad b\u016btent tokios svetain\u0117s be registracijos ir tapo taikiniais. Ne tod\u0117l, kad buvo atakuotos tikslingai. O tod\u0117l, kad botnetas metodi\u0161kai per\u0161ukuoja vis\u0105 internet\u0105 ir \u012fkelia webshell \u012f kiekvien\u0105 Joomla svetain\u0119 su pa\u017eeid\u017eiama JCE versija \u2014 be jokio autentifikavimo, dviem HTTP u\u017eklausomis.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">CVE-2026-48907 \u2014 Improper Access Control tipo pa\u017eeid\u017eiamumo vieta JCE (Joomla Content Editor) plaginui, labiausiai \u012fdiegtam pl\u0117tiniui Joomla ekosistemoje. Paveiktos visos versijos iki 2.9.99.5. Pataisymas i\u0161leistas 2026 m. bir\u017eelio 3 d. Veikiantis i\u0161naudojimas paskelbtas GitHub platformoje bir\u017eelio 9 d. Bir\u017eelio 16 d. CISA \u012ftrauk\u0117 CVE-2026-48907 \u012f Known Exploited Vulnerabilities katalog\u0105 \u2014 tai JAV vyriausyb\u0117s patvirtinimas apie realias atakas, i\u0161duodamas tik esant verifikuot\u0173 \u012frodym\u0173. Jei naudojate Joomla su JCE \u2014 skaitykite toliau. Greitai.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>KAS YRA JCE IR KOD\u0116L TAI SVARBU<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">JCE rei\u0161kia Joomla Content Editor \u2014 vizualinis redaktorius, pakei\u010diantis standartin\u012f Joomla teksto redaktori\u0173 \u012f pilnavert\u012f WYSIWYG su paveiksl\u0117li\u0173, fail\u0173, lenteli\u0173 ir medijos \u012fterpimo palaikymu. Pasak mysites.guru, tai labiausiai \u012fdiegtas pl\u0117tinys Joomla ekosistemoje \u2014 ne &#8222;vienas i\u0161 populiari\u0173&#8221;, o tiesiog populiariausias. K\u016br\u0117jas \u2014 Widget Factory Limited, ma\u017ea nepriklausoma komanda vadovaujama Ryan Demmer, pri\u017ei\u016brinti JCE daugiau nei penkiolika met\u0173. Pa\u017eeid\u017eiamum\u0105 prane\u0161\u0117 Uwe Flottemesch i\u0161 fc-hosting.de; David Jardin suteik\u0117 technin\u0119 pagalb\u0105 kuriant pataisym\u0105.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pagrindin\u0117 JCE koncepcija \u2014 redaktoriaus profiliai. Profilis apibr\u0117\u017eia k\u0105 konkreti vartotoj\u0173 grup\u0117 gali daryti redaktoriuje: kokius fail\u0173 tipus \u012fkelti, \u012f kokius katalogus, kokie pl\u0117tiniai leid\u017eiami. Autoriams gali b\u016bti leid\u017eiami tik JPG ir PNG \u012f images\/ aplank\u0105, administratoriams \u2014 viskas. Tai teisinga prieigos kontrol\u0117s architekt\u016bra. Problema buvo ta, kad profilio importo mechanizmas buvo prieinamas be jokio autentifikavimo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>KAIP VEIKIA PA\u017dEID\u017dIAMUMAS<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">JCE turi profilio importo u\u017eduot\u012f: POST u\u017eklausa \u012f <code>index.php?option=com_jce&amp;task=profiles.import<\/code>. Sumanymas buvo toks, kad \u0161is endpoint b\u016bt\u0173 prieinamas tik autentifikuotam administratoriui \u2014 redaktoriaus nustatymams perkelti tarp svetaini\u0173 arba profilius atkurti i\u0161 atsargin\u0117s kopijos. I\u0161 tikr\u0173j\u0173, iki versijos 2.9.99.5, jokio autorizacijos patikrinimo ten nebuvo. Bet kuris HTTP klientas gal\u0117jo si\u0173sti POST \u0161iuo URL \u2014 ir Joomla paklusniai sukurdavo nauj\u0105 redaktoriaus profil\u012f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">To jau pakanka atakai. U\u017epuolikas sukuria profil\u012f, leid\u017eiant\u012f \u012fkelti failus su pl\u0117tiniu <code>.php<\/code>, i\u0161jungus MIME validacij\u0105. Tada per t\u0105 pa\u010di\u0105 JCE fail\u0173 \u012fk\u0117limo funkcij\u0105 \u2014 kuri dabar naudoja kenk\u0117ji\u0161k\u0105 profil\u012f \u2014 \u012f server\u012f \u012fkeliamas PHP webshell. Visas procesas: dvi HTTP u\u017eklausos, nulis paspaudim\u0173, nulis prisijungimo duomen\u0173.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>KAIP TAI I\u0160NAUDOJAMA<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Botnetas kiekvien\u0105 kart\u0105 veikia pagal t\u0105 pat\u012f scenarij\u0173 \u2014 mysites.guru steb\u0117jo identi\u0161k\u0105 pir\u0161to atspaud\u0105 \u0161imtuose kompromituot\u0173 svetaini\u0173. Pirmoji u\u017eklausa: POST \u012f <code>index.php?option=com_jce&amp;task=profiles.import<\/code> sukuria kenk\u0117ji\u0161k\u0105 profil\u012f. Profilis gauna automati\u0161kai sugeneruot\u0105 pavadinim\u0105, pavyzd\u017eiui <code>J940401<\/code> arba <code>J938560<\/code>, kartais atvirai \u2014 <code>Pwned<\/code> su apra\u0161ymu <code>RCE via JCE<\/code>. Profilio rikiavimo reik\u0161m\u0117 nustatoma \u012f <code>-99999<\/code> \u2014 kad jis atsidurt\u0173 s\u0105ra\u0161o vir\u0161uje vir\u0161 vis\u0173 teis\u0117t\u0173 profili\u0173. Profilio parametruose leid\u017eiami pl\u0117tiniai <code>php<\/code> ir <code>phtml<\/code>, MIME validacija i\u0161jungta.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Antroji u\u017eklausa: POST per JCE fail\u0173 \u012fk\u0117limo funkcij\u0105 \u2014 dabar naudojant sukurt\u0105 profil\u012f \u2014 \u012fkelia webshell. Jei \u012fk\u0117limo kelias profilyje nenurodytas, failas pagal nutyl\u0117jim\u0105 patenka \u012f <code>images\/<\/code> aplank\u0105, i\u0161 kurio gali b\u016bti paleistas per nar\u0161ykl\u0119. mysites.guru rast\u0173 webshell pavyzd\u017eiai: klasikin\u0117s <code>eval(gzinflate(base64_decode(...)))<\/code> konstrukcijos, <code>shell_exec<\/code> komand\u0173 apvalkalai, nedideli \u017eymeklio failai pavadinti <code>Nxploited<\/code> ir <code>.xml.php<\/code> diegikliai. \u017diniatinklio serverio prieigos \u017eurnaluose ataka palieka charaktering\u0105 dviej\u0173 u\u017eklaus\u0173 para\u0161\u0105: POST \u012f <code>task=profiles.import<\/code>, po kurio i\u0161 karto seka POST \u012f <code>method=upload<\/code>, abu gr\u0105\u017eina 200, abu be autentifikavimo, da\u017enai su \u017eymekliu <code>id=RCExxx<\/code>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Visa tai \u2014 automatizuotas botnetas, o ne tikslin\u0117 ataka. Svetain\u0117s dydis, registracijos buvimas ar nebuvimas, srauto apimtis \u2014 nieko nerei\u0161kia. Nuskaitomos visos pasiekiamos Joomla \u012fdiegtys i\u0161 eil\u0117s.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>KAIP PATIKRINTI SAVO SERVER\u012e<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pirmiausia \u2014 \u017einiatinklio serverio \u017eurnalai. Ie\u0161kokite POST u\u017eklaus\u0173 \u012f profilio importo endpoint be autentifikavimo. nginx atveju tai bus <code>access.log<\/code> \u2014 papras\u010diausias b\u016bdas:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>grep \"profiles.import\" \/var\/log\/nginx\/access.log<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Apache atveju pakeiskite keli\u0105 \u012f <code>\/var\/log\/apache2\/access.log<\/code>. Jei \u017eurnalai nestandartin\u0117je vietoje \u2014 \u017ei\u016br\u0117kite virtualaus serverio konfig\u016bracij\u0105. Bet koks vykdymo rezultatas rei\u0161kia arba s\u0117kming\u0105 atak\u0105, arba bandym\u0105. Pirmiausia \u012fra\u0161yta data rodo kada svetain\u0117 buvo pirm\u0105 kart\u0105 pasiekta \u2014 nuo tos datos reikia skai\u010diuoti atsargin\u0119 kopij\u0105. Atminkite: daugelis prieglobos paslaug\u0173 teik\u0117j\u0173 \u017eurnalus saugo tik kelias savaites, o rotacija jau gal\u0117jo pasl\u0117pti p\u0117dsakus.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Patikrinkite redaktoriaus profilius Joomla valdymo skydelyje: Komponentai \u2192 JCE Editor \u2192 Redaktoriaus profiliai. Neatpa\u017einti profiliai su automati\u0161kai sugeneruotais pavadinimais, rikiavimo reik\u0161me <code>-99999<\/code> ar kitu dideliu neigiamu skai\u010diu \u2014 atakos po\u017eymis. Leidimas \u012fkelti <code>.php<\/code> ar <code>phtml<\/code> failus i\u0161jungus MIME validacij\u0105 \u2014 tai b\u016btent tai, k\u0105 sukuria botnetas. Rad\u0119 tok\u012f profil\u012f \u2014 i\u0161 karto netrinkite. Pirmiausia i\u0161saugokite jo parametrus, jie pad\u0117s nustatyti kompromitavimo laikotarp\u012f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Patikrinkite katalogus d\u0117l svetim\u0173 PHP fail\u0173 \u2014 \u012fprastai <code>images\/<\/code>, <code>media\/<\/code>, <code>tmp\/<\/code> kataloguose PHP fail\u0173 netur\u0117t\u0173 b\u016bti visai. Paie\u0161ka visoje svetain\u0117s med\u017eio strukt\u016broje:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>find \/var\/www\/html -path \"*\/images\/*.php\" -o \\\n  -path \"*\/media\/*.php\" -o \\\n  -path \"*\/tmp\/*.php\" | sort<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Taip pat verta patikrinti failus su <code>.php<\/code> pavadinime tarp kit\u0173 pl\u0117tini\u0173 \u2014 klasinis diegikli\u0173 triukas:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>find \/var\/www\/html -name \"*.php.*\" 2&gt;\/dev\/null<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Rad\u0119 k\u0105 nors \u2014 i\u0161 karto netrinkite. Pirmiausia i\u0161saugokite kopij\u0105 kaip \u012frodym\u0105 (suk\u016brimo data, turinys), tada atnaujinkite JCE iki 2.9.99.7 ir tik tada valykite \u2014 kitaip botnetas visk\u0105 atkurs kol pa\u017eeid\u017eiamumo vieta dar atvira.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>CHRONOLOGIJA<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">2026 m. bir\u017eelio 3 d. \u2014 JCE k\u016br\u0117jas i\u0161leid\u017eia versij\u0105 2.9.99.5 su CVE-2026-48907 pataisymu. Oficialus prane\u0161imas skelbia: &#8222;kritin\u0117 pa\u017eeid\u017eiamumo vieta visose ankstesn\u0117se versijose&#8221;, aktyvus i\u0161naudojimas jau vyko pataisymo i\u0161leidimo metu.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">2026 m. bir\u017eelio 8 d. \u2014 i\u0161leid\u017eiamas JCE 2.9.99.6 su papildomu apsaugos stiprinimu po pilno kodo audito.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">2026 m. bir\u017eelio 9 d. \u2014 veikiantis i\u0161naudojimas paskelbiamas GitHub platformoje. Nuo \u0161io momento atakos tampa visi\u0161kai automatizuotos \u2014 bet kas gali paleisti paruo\u0161t\u0105 scenarij\u0173 prie\u0161 vis\u0105 internet\u0105.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">2026 m. bir\u017eelio 16 d. \u2014 CISA \u012ftraukia CVE-2026-48907 \u012f Known Exploited Vulnerabilities katalog\u0105 oficialiu pavadinimu &#8222;Widget Factory Joomla Content Editor Improper Access Control Vulnerability&#8221;. JAV federalin\u0117s agent\u016bros gauna privalom\u0105 pataisymo termin\u0105.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">2026 m. bir\u017eelio 18 d. \u2014 i\u0161leid\u017eiamas JCE 2.9.99.7. Versija 2.9.99.6 tur\u0117jo klaiding\u0105 PHP \u017eym\u0173 aptikim\u0105, kuris blokavo teis\u0117t\u0173 paveiksl\u0117li\u0173 ir fail\u0173 \u012fk\u0117lim\u0105. 2.9.99.7 i\u0161taiso \u0161i\u0105 regresij\u0105, prideda papildom\u0105 \u012fk\u0117limo pipeline ir profilio importo apsaugos stiprinim\u0105, taip pat nauj\u0105 Permitted User Groups parinkt\u012f \u2014 vartotoj\u0173 grupi\u0173, kurioms leid\u017eiama priskirti ir importuoti profilius, balt\u0105j\u012f s\u0105ra\u0161\u0105. Dabartin\u0117 rekomenduojama versija \u2014 2.9.99.7.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>KOD\u0116L TAI SVARBU<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0160i\u0105 atak\u0105 nepatogu suvokti d\u0117l jos paprastumo. I\u0161naudojimui nereikia paskyros, nereikia sp\u0117lioti slapta\u017eod\u017eio, nereikia laukti kol kas nors paspaus nuorod\u0105. Dvi HTTP POST u\u017eklausos \u2014 ir serveryje yra webshell. Nuo to momento u\u017epuolikas turi interaktyvi\u0105 prieig\u0105 prie fail\u0173 sistemos ir gali vykdyti komandas \u017einiatinklio serverio proceso vardu: skaityti <code>configuration.php<\/code> su duomen\u0173 baz\u0117s kredencialais, \u012fkelti papildomus \u012frankius, ie\u0161koti kit\u0173 svetaini\u0173 tame pa\u010diame serveryje.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Atakos mastas parodo kaip greitai i\u0161naudojimas i\u0161plito: mysites.guru prad\u0117jo nuo trij\u0173 kompromituot\u0173 svetaini\u0173 viename portfelyje ir per kelias dienas mat\u0117 \u0161imtus. Automatizuotas skaitytuvas su vie\u0161a PoC per kelias savaites gali apeiti vis\u0105 matom\u0105 internet\u0105. CISA svetain\u0119 prideda \u012f KEV katalog\u0105 tik tur\u0117dama verifikuot\u0173 reali\u0173 atak\u0173 \u012frodym\u0173 \u2014 tai ne atsargumo priemon\u0117, o fakto konstatavimas.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">JCE verta pamin\u0117ti atskirai, nes tai ne specializuotas pluginas siauros auditorijos \u2014 tai numatytasis pasirinkimas kai Joomla svetainei reikia geresnio redaktoriaus. Jei svetain\u0119 k\u016br\u0117 agent\u016bra ar laisvai samdomas specialistas, tikimyb\u0117 rasti \u012fdiegt\u0105 JCE yra didel\u0117. Tokia \u012fdiegim\u0173 baz\u0117 paver\u010dia vien\u0105 neapsaugot\u0105 API endpoint masin\u0117s kompromitacijos \u012fvykiu.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>K\u0104 DARYTI<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Jei dar nepatikrinte d\u0117l kompromitacijos \u2014 pirmiausia patikrinkite \u017eurnalus ir profilius (\u017er. skyri\u0173 auk\u0161\u010diau), tik tada atnaujinkite. Svarbi tvarka: atnaujinimas u\u017edaro \u012f\u0117jimo ta\u0161k\u0105, bet nei\u0161valo to, kas jau \u012fkelta. Atnaujinus be patikrinimo galima gauti u\u017edar\u0105 pa\u017eeid\u017eiamum\u0105 ir veikiant\u012f webshell vienu metu.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Atnaujinkite iki JCE 2.9.99.7 \u2014 tai i\u0161taiso ir pat\u012f pa\u017eeid\u017eiamum\u0105, ir 2.9.99.6 regresij\u0105, ir prideda Permitted User Groups balt\u0105j\u012f s\u0105ra\u0161\u0105. Atnaujinimai atliekami per standartin\u012f Joomla pl\u0117tini\u0173 tvarkytuv\u0105: Sistema \u2192 Atnaujinimai \u2192 Pl\u0117tiniai. \u012ediegt\u0105 JCE versij\u0105 galite patikrinti komandin\u0117je eilut\u0117je \u2014 komanda nuskaito versij\u0105 tiesiai i\u0161 pl\u0117tinio manifesto diske:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>grep -r \"version\" \/var\/www\/html\/administrator\/components\/com_jce\/jce.xml 2&gt;\/dev\/null | head -3<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Po atnaujinimo JCE versija tur\u0117t\u0173 rodyti 2.9.99.7 arba naujesn\u0119.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Jei atnaujinti iki 2.9.99.7 ne\u012fmanoma d\u0117l platformos reikalavim\u0173 \u2014 reikalingas PHP 7.4 ir Joomla 3.9 arba naujesn\u0117 \u2014 k\u016br\u0117jas i\u0161leido nemokam\u0105 pataisymo paket\u0105 JCE 2.7.x, 2.8.x ir 2.9.x \u0161akoms, prieinam\u0105 oficialios JCE svetain\u0117s skyriuje Downloads \u2192 Security Patch. \u0160is pataisymas u\u017edaro tik pa\u017eeid\u017eiamum\u0105, be papildomo 2.9.99.6 apsaugos stiprinimo, ir nei\u0161valo jau kompromituotos svetain\u0117s. Tai laikina priemon\u0117 \u2014 migracija \u012f palaikom\u0105 platform\u0105 vis tiek reikalinga, nes end-of-life PHP palieka jus pa\u017eeid\u017eiamus kitoms nei\u0161taisytoms problemoms.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Rad\u0119 kenk\u0117ji\u0161k\u0105 profil\u012f ar \u012ftartin\u0173 fail\u0173: i\u0161saugokite \u012frodymus, atnaujinkite JCE, i\u0161trinkite profil\u012f per Joomla administratoriaus skydel\u012f, tada pa\u0161alinkite per j\u012f \u012fkeltus failus. Po valymo pakeiskite visus slapta\u017eod\u017eius: Joomla administratoriaus, duomen\u0173 baz\u0117s, prieglobos ir FTP \u2014 ir tuos pa\u010dius slapta\u017eod\u017eius kitose svetain\u0117se, kur jie buvo pakartotinai naudojami. Paleiskite piln\u0105 serverio kenk\u0117ji\u0161k\u0173 program\u0173 nuskaitym\u0105 \u2014 daugelis prieglobos paslaug\u0173 teik\u0117j\u0173 teikia Imunify ar pana\u0161\u0173 \u012frank\u012f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">JCE 2.6.x versija pagal numatyt\u0105j\u0105 konfig\u016bracij\u0105, k\u016br\u0117jo vertinimu, nepaveikta \u2014 unauthenticated profilio importo kelias ten u\u017eblokuotas ir n\u0117ra sve\u010diams prieinamo profilio pagal nutyl\u0117jim\u0105. Tai nepatvirtinta nepriklausomai. \u0160aka 2.6.x neb\u0117ra palaikoma ir gali tur\u0117ti kit\u0173 nei\u0161taisyt\u0173 problem\u0173, tod\u0117l migracija \u012f palaikom\u0105 platform\u0105 vis tiek reikalinga.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>I\u0160VADOS<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">CVE-2026-48907 \u2014 vadov\u0117linis pavyzdys kaip vienas neapsaugotas API endpoint panaikina visas kitas svetain\u0117s saugumo priemones. Nesvarbu koks sud\u0117tingas administratoriaus slapta\u017eodis. Nesvarbu, kad n\u0117ra vie\u0161os registracijos. Vienas endpoint be autorizacijos patikrinimo \u2014 ir serveris kompromituotas be n\u0117 vieno \u012fvesto slapta\u017eod\u017eio.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">JCE k\u016br\u0117jas reagavo greitai ir atsakingai: pataisymas i\u0161leistas, nemokamas paketas senoms versijoms taip pat, detalus advisory paskelbtas. Ta\u010diau atakos prasid\u0117jo dar prie\u0161 pataisym\u0105, PoC pasirod\u0117 \u0161e\u0161t\u0105 dien\u0105 po jo, o automatizuotas botnetas nepauzuoja kol j\u016bs skaitote \u0161\u012f straipsn\u012f. Patikrinkite savo server\u012f pagal auk\u0161\u010diau pateikt\u0105 instrukcij\u0105 ir atnaujinkite JCE iki 2.9.99.7.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>J\u016bs\u0173 Joomla svetain\u0117 neturi vie\u0161os registracijos. Jokio forumo, jokios vartotojo paskyros \u2014 lankytojai tik skaito. Pagr\u012fstai manote, kad n\u0117ra k\u0105 \u012fsilau\u017eti: jei n\u0117ra prisijungimo, n\u0117ra ir gr\u0117sm\u0117s. Tada 2026 m. bir\u017eelio 3 d. populiariausio Joomla vizualinio redaktoriaus k\u016br\u0117jas i\u0161leido skub\u0173 pataisym\u0105 su formuluote &#8222;kritin\u0117 pa\u017eeid\u017eiamumo vieta visose ankstesn\u0117se versijose&#8221; \u2014 ir paai\u0161k\u0117jo, kad b\u016btent tokios svetain\u0117s be registracijos ir tapo taikiniais. Ne tod\u0117l, kad buvo atakuotos tikslingai. O tod\u0117l, kad botnetas metodi\u0161kai per\u0161ukuoja vis\u0105 internet\u0105 ir \u012fkelia webshell \u012f kiekvien\u0105 Joomla svetain\u0119 su pa\u017eeid\u017eiama JCE versija \u2014 be jokio autentifikavimo, dviem HTTP u\u017eklausomis. CVE-2026-48907 \u2014 Improper Access Control tipo pa\u017eeid\u017eiamumo vieta JCE (Joomla Content Editor) plaginui, labiausiai \u012fdiegtam pl\u0117tiniui Joomla ekosistemoje. Paveiktos visos versijos iki 2.9.99.5. Pataisymas i\u0161leistas 2026 m. bir\u017eelio 3 d. Veikiantis i\u0161naudojimas paskelbtas GitHub platformoje bir\u017eelio 9 d. Bir\u017eelio 16 d. CISA \u012ftrauk\u0117 CVE-2026-48907 \u012f Known Exploited Vulnerabilities katalog\u0105 \u2014 tai JAV vyriausyb\u0117s patvirtinimas apie realias atakas, i\u0161duodamas tik esant verifikuot\u0173 \u012frodym\u0173. Jei naudojate Joomla su JCE \u2014 skaitykite toliau. Greitai. KAS YRA JCE IR KOD\u0116L TAI SVARBU JCE rei\u0161kia Joomla Content Editor \u2014 vizualinis redaktorius, pakei\u010diantis standartin\u012f Joomla teksto redaktori\u0173 \u012f pilnavert\u012f WYSIWYG su paveiksl\u0117li\u0173, fail\u0173, lenteli\u0173 ir medijos \u012fterpimo palaikymu. Pasak mysites.guru, tai labiausiai \u012fdiegtas pl\u0117tinys Joomla ekosistemoje \u2014 ne &#8222;vienas i\u0161 populiari\u0173&#8221;, o tiesiog populiariausias. K\u016br\u0117jas \u2014 Widget Factory Limited, ma\u017ea nepriklausoma komanda vadovaujama Ryan Demmer, pri\u017ei\u016brinti JCE daugiau nei penkiolika met\u0173. Pa\u017eeid\u017eiamum\u0105 prane\u0161\u0117 Uwe Flottemesch i\u0161 fc-hosting.de; David Jardin suteik\u0117 technin\u0119 pagalb\u0105 kuriant pataisym\u0105. Pagrindin\u0117 JCE koncepcija \u2014 redaktoriaus profiliai. Profilis apibr\u0117\u017eia k\u0105 konkreti vartotoj\u0173 grup\u0117 gali daryti redaktoriuje: kokius fail\u0173 tipus \u012fkelti, \u012f kokius katalogus, kokie pl\u0117tiniai leid\u017eiami. Autoriams gali b\u016bti leid\u017eiami tik JPG ir PNG \u012f images\/ aplank\u0105, administratoriams \u2014 viskas. Tai teisinga prieigos kontrol\u0117s architekt\u016bra. Problema buvo ta, kad profilio importo mechanizmas buvo prieinamas be jokio autentifikavimo. KAIP VEIKIA PA\u017dEID\u017dIAMUMAS JCE turi profilio importo u\u017eduot\u012f: POST u\u017eklausa \u012f index.php?option=com_jce&amp;task=profiles.import. Sumanymas buvo toks, kad \u0161is endpoint b\u016bt\u0173 prieinamas tik autentifikuotam administratoriui \u2014 redaktoriaus nustatymams perkelti tarp svetaini\u0173 arba profilius atkurti i\u0161 atsargin\u0117s kopijos. I\u0161 tikr\u0173j\u0173, iki versijos 2.9.99.5, jokio autorizacijos patikrinimo ten nebuvo. Bet kuris HTTP klientas gal\u0117jo si\u0173sti POST \u0161iuo URL \u2014 ir Joomla paklusniai sukurdavo nauj\u0105 redaktoriaus profil\u012f. To jau pakanka atakai. U\u017epuolikas sukuria profil\u012f, leid\u017eiant\u012f \u012fkelti failus su pl\u0117tiniu .php, i\u0161jungus MIME validacij\u0105. Tada per t\u0105 pa\u010di\u0105 JCE fail\u0173 \u012fk\u0117limo funkcij\u0105 \u2014 kuri dabar naudoja kenk\u0117ji\u0161k\u0105 profil\u012f \u2014 \u012f server\u012f \u012fkeliamas PHP webshell. Visas procesas: dvi HTTP u\u017eklausos, nulis paspaudim\u0173, nulis prisijungimo duomen\u0173. KAIP TAI I\u0160NAUDOJAMA Botnetas kiekvien\u0105 kart\u0105 veikia pagal t\u0105 pat\u012f scenarij\u0173 \u2014 mysites.guru steb\u0117jo identi\u0161k\u0105 pir\u0161to atspaud\u0105 \u0161imtuose kompromituot\u0173 svetaini\u0173. Pirmoji u\u017eklausa: POST \u012f index.php?option=com_jce&amp;task=profiles.import sukuria kenk\u0117ji\u0161k\u0105 profil\u012f. Profilis gauna automati\u0161kai sugeneruot\u0105 pavadinim\u0105, pavyzd\u017eiui J940401 arba J938560, kartais atvirai \u2014 Pwned su apra\u0161ymu RCE via JCE. Profilio rikiavimo reik\u0161m\u0117 nustatoma \u012f -99999 \u2014 kad jis atsidurt\u0173 s\u0105ra\u0161o vir\u0161uje vir\u0161 vis\u0173 teis\u0117t\u0173 profili\u0173. Profilio parametruose leid\u017eiami pl\u0117tiniai php ir phtml, MIME validacija i\u0161jungta. Antroji u\u017eklausa: POST per JCE fail\u0173 \u012fk\u0117limo funkcij\u0105 \u2014 dabar naudojant sukurt\u0105 profil\u012f \u2014 \u012fkelia webshell. Jei \u012fk\u0117limo kelias profilyje nenurodytas, failas pagal nutyl\u0117jim\u0105 patenka \u012f images\/ aplank\u0105, i\u0161 kurio gali b\u016bti paleistas per nar\u0161ykl\u0119. mysites.guru rast\u0173 webshell pavyzd\u017eiai: klasikin\u0117s eval(gzinflate(base64_decode(&#8230;))) konstrukcijos, shell_exec komand\u0173 apvalkalai, nedideli \u017eymeklio failai pavadinti Nxploited ir .xml.php diegikliai. \u017diniatinklio serverio prieigos \u017eurnaluose ataka palieka charaktering\u0105 dviej\u0173 u\u017eklaus\u0173 para\u0161\u0105: POST \u012f task=profiles.import, po kurio i\u0161 karto seka POST \u012f method=upload, abu gr\u0105\u017eina 200, abu be autentifikavimo, da\u017enai su \u017eymekliu id=RCExxx. Visa tai \u2014 automatizuotas botnetas, o ne tikslin\u0117 ataka. Svetain\u0117s dydis, registracijos buvimas ar nebuvimas, srauto apimtis \u2014 nieko nerei\u0161kia. Nuskaitomos visos pasiekiamos Joomla \u012fdiegtys i\u0161 eil\u0117s. KAIP PATIKRINTI SAVO SERVER\u012e Pirmiausia \u2014 \u017einiatinklio serverio \u017eurnalai. Ie\u0161kokite POST u\u017eklaus\u0173 \u012f profilio importo endpoint be autentifikavimo. nginx atveju tai bus access.log \u2014 papras\u010diausias b\u016bdas: Apache atveju pakeiskite keli\u0105 \u012f \/var\/log\/apache2\/access.log. Jei \u017eurnalai nestandartin\u0117je vietoje \u2014 \u017ei\u016br\u0117kite virtualaus serverio konfig\u016bracij\u0105. Bet koks vykdymo rezultatas rei\u0161kia arba s\u0117kming\u0105 atak\u0105, arba bandym\u0105. Pirmiausia \u012fra\u0161yta data rodo kada svetain\u0117 buvo pirm\u0105 kart\u0105 pasiekta \u2014 nuo tos datos reikia skai\u010diuoti atsargin\u0119 kopij\u0105. Atminkite: daugelis prieglobos paslaug\u0173 teik\u0117j\u0173 \u017eurnalus saugo tik kelias savaites, o rotacija jau gal\u0117jo pasl\u0117pti p\u0117dsakus. Patikrinkite redaktoriaus profilius Joomla valdymo skydelyje: Komponentai \u2192 JCE Editor \u2192 Redaktoriaus profiliai. Neatpa\u017einti profiliai su automati\u0161kai sugeneruotais pavadinimais, rikiavimo reik\u0161me -99999 ar kitu dideliu neigiamu skai\u010diu \u2014 atakos po\u017eymis. Leidimas \u012fkelti .php ar phtml failus i\u0161jungus MIME validacij\u0105 \u2014 tai b\u016btent tai, k\u0105 sukuria botnetas. Rad\u0119 tok\u012f profil\u012f \u2014 i\u0161 karto netrinkite. Pirmiausia i\u0161saugokite jo parametrus, jie pad\u0117s nustatyti kompromitavimo laikotarp\u012f. Patikrinkite katalogus d\u0117l svetim\u0173 PHP fail\u0173 \u2014 \u012fprastai images\/, media\/, tmp\/ kataloguose PHP fail\u0173 netur\u0117t\u0173 b\u016bti visai. Paie\u0161ka visoje svetain\u0117s med\u017eio strukt\u016broje: Taip pat verta patikrinti failus su .php pavadinime tarp kit\u0173 pl\u0117tini\u0173 \u2014 klasinis diegikli\u0173 triukas: Rad\u0119 k\u0105 nors \u2014 i\u0161 karto netrinkite. Pirmiausia i\u0161saugokite kopij\u0105 kaip \u012frodym\u0105 (suk\u016brimo data, turinys), tada atnaujinkite JCE iki 2.9.99.7 ir tik tada valykite \u2014 kitaip botnetas visk\u0105 atkurs kol pa\u017eeid\u017eiamumo vieta dar atvira. CHRONOLOGIJA 2026 m. bir\u017eelio 3 d. \u2014 JCE k\u016br\u0117jas i\u0161leid\u017eia versij\u0105 2.9.99.5 su CVE-2026-48907 pataisymu. Oficialus prane\u0161imas skelbia: &#8222;kritin\u0117 pa\u017eeid\u017eiamumo vieta visose ankstesn\u0117se versijose&#8221;, aktyvus i\u0161naudojimas jau vyko pataisymo i\u0161leidimo metu. 2026 m. bir\u017eelio 8 d. \u2014 i\u0161leid\u017eiamas JCE 2.9.99.6 su papildomu apsaugos stiprinimu po pilno kodo audito. 2026 m. bir\u017eelio 9 d. \u2014 veikiantis i\u0161naudojimas paskelbiamas GitHub platformoje. Nuo \u0161io momento atakos tampa visi\u0161kai automatizuotos \u2014 bet kas gali paleisti paruo\u0161t\u0105 scenarij\u0173 prie\u0161 vis\u0105 internet\u0105. 2026 m. bir\u017eelio 16 d. \u2014 CISA \u012ftraukia CVE-2026-48907 \u012f Known Exploited Vulnerabilities katalog\u0105 oficialiu pavadinimu &#8222;Widget Factory Joomla Content Editor Improper Access Control Vulnerability&#8221;. JAV federalin\u0117s agent\u016bros gauna privalom\u0105 pataisymo termin\u0105. 2026 m. bir\u017eelio 18 d. \u2014 i\u0161leid\u017eiamas JCE 2.9.99.7. Versija 2.9.99.6 tur\u0117jo klaiding\u0105 PHP \u017eym\u0173 aptikim\u0105, kuris blokavo teis\u0117t\u0173 paveiksl\u0117li\u0173 ir fail\u0173 \u012fk\u0117lim\u0105. 2.9.99.7 i\u0161taiso \u0161i\u0105 regresij\u0105, prideda papildom\u0105 \u012fk\u0117limo pipeline ir profilio importo apsaugos stiprinim\u0105, taip pat nauj\u0105 Permitted User Groups parinkt\u012f \u2014 vartotoj\u0173 grupi\u0173, kurioms leid\u017eiama priskirti ir importuoti profilius, balt\u0105j\u012f s\u0105ra\u0161\u0105. Dabartin\u0117 rekomenduojama versija \u2014 2.9.99.7. KOD\u0116L TAI SVARBU \u0160i\u0105 atak\u0105 nepatogu suvokti d\u0117l jos paprastumo. I\u0161naudojimui nereikia paskyros, nereikia sp\u0117lioti slapta\u017eod\u017eio, nereikia laukti kol kas nors paspaus nuorod\u0105. Dvi HTTP POST [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":20854,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[202,660,199,155],"tags":[661,349,662,663,664,665,393,645,361],"class_list":["post-20858","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-cve-lt","category-joomla","category-linux-lt","category-saugumas","tag-botnet","tag-cisa","tag-cve-2026-48907","tag-improper-access-control","tag-jce","tag-joomla","tag-patch","tag-vulnerability","tag-webshell"],"_links":{"self":[{"href":"https:\/\/sysadmin.courses\/lt\/wp-json\/wp\/v2\/posts\/20858","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sysadmin.courses\/lt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sysadmin.courses\/lt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sysadmin.courses\/lt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/sysadmin.courses\/lt\/wp-json\/wp\/v2\/comments?post=20858"}],"version-history":[{"count":2,"href":"https:\/\/sysadmin.courses\/lt\/wp-json\/wp\/v2\/posts\/20858\/revisions"}],"predecessor-version":[{"id":20862,"href":"https:\/\/sysadmin.courses\/lt\/wp-json\/wp\/v2\/posts\/20858\/revisions\/20862"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/sysadmin.courses\/lt\/wp-json\/wp\/v2\/media\/20854"}],"wp:attachment":[{"href":"https:\/\/sysadmin.courses\/lt\/wp-json\/wp\/v2\/media?parent=20858"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sysadmin.courses\/lt\/wp-json\/wp\/v2\/categories?post=20858"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sysadmin.courses\/lt\/wp-json\/wp\/v2\/tags?post=20858"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}