Администраторите на WordPress често държат таблото си за управление отворено в същия браузър, който използват за ежедневно сърфиране. Нова верига от атаки показва защо този навик е рискован.
Изследователи са документирали JavaScript зареждащ модул (loader), който изчаква вписан администратор да посети компрометирана страница, след което използва доверената сесия на този браузър, за да инсталира скрита PHP задна врата (backdoor) в уебсайта.
Атакуващият никога не се нуждае от администраторската парола, тъй като собственият браузър на администратора извършва действието. Неотдавнашни случаи сочат към същия модел.
Един пример е кампания със зловреден софтуер за WordPress, задействана от администратор, която изложи над 1,2 милиона уебсайта на потенциално компрометиране.
Зловредният софтуер, който се активира само по време на активни сесии на вписани потребители, е труден за засичане при рутинни сканирания, което го прави нарастващ повод за безпокойство за собствениците на сайтове.
Изследователите по сигурността от Securonix Threat Research, Акшай Гайквад и Аарон Биърдсли, идентифицираха зловредния софтуер и нарекоха веригата TRUST#GRAFT.
Техният анализ показва, че JavaScript кодът не преодолява входа в WordPress. Вместо това той проверява дали посетителят вече е вписан като администратор, след което използва повторно тази сесия, за да добави нов код към сайта. Securonix също така отбелязва, че не е потвърдено как първоначалният скрипт е достигнал до компрометираната страница.
Хакери могат да злоупотребят с активни администраторски сесии в WordPress
Инфекцията започва с фалшива проверка за сигурност. Скриптът поставя рамка на цял екран върху страницата, която изглежда като екран за проверка на Cloudflare „Just a moment“.
Докато посетителят чака, скриптът събира подробности като размер на екрана, графични данни, часова зона и брой инсталирани плъгини. Той също така проверява за признаци на автоматизирани инструменти за анализ.
След решаване на малък пъзел браузърът изпраща тези данни към команден сървър, който решава дали да изпрати следващия етап. Следва ключовата стъпка.
Скриптът изисква страницата за качване на плъгини в WordPress, използвайки съществуващите бисквитки за вход на браузъра, след което прочита маркер за сигурност на WordPress, наречен nonce, от тази страница.

Той изтегля ZIP файл с име wm.zip от помощен междинен сървър (staging server) и го качва през стандартната крайна точка за инсталиране на плъгини.
Ако качването е успешно, скриптът отваря страницата с плъгини и активира новия плъгин. WordPress приема всяка заявка, тъй като браузърът вече е вписан с права за управление на плъгини.
Securonix подчертава, че това не е самостоятелно заобикаляне на автентикацията за вход. Акаунтът вече трябва да бъде администраторски с разрешение за инсталиране на плъгини.
Въпреки това рискът е сериозен за всеки, който разглежда публични уебсайтове, докато е вписан в wp-admin, или който използва един браузърен профил както за ежедневно сърфиране, така и за управление на сайта.
Постоянна PHP задна врата се крие в задължителните плъгини (Must-Use Plugins)
ZIP файлът съдържа PHP плъгин с име Web Media Optimizer, версия 2.1. Името подсказва за безобиден инструмент за изображения или медийно съдържание, но Securonix го описва като задна врата.
Той инжектира отдалечен JavaScript код в публичните страници, изключва проверките на TLS сертификатите, когато извлича своя управляващ скрипт, и може да зададе администраторска бисквитка за вход за първия администраторски акаунт чрез твърдо кодиран маркер.

Плъгинът също така защитава собственото си присъствие. При активиране той копира себе си в wp-content/mu-plugins/wmedia-recovery.php.
WordPress зарежда автоматично всеки файл в тази папка и тези файлове не се показват на обичайната страница за плъгини. Подобен скрит зловреден софтуер от тип „must-use plugin“ е бил докладван и преди, като това показва защо премахването само на видимия плъгин не е достатъчно.
Собствениците на сайтове трябва също така да подходят сериозно към почистването. Премахването на видимия плъгин, копието в mu-plugins и всякакъв останал източник на отдалечен скрипт е необходимо, за да се спре повторната инфекция.
Администраторите трябва да прегледат и последните случаи на самовъзстановяващ се зловреден софтуер със задна врата за WordPress, които показват как изтритите файлове могат да се завърнат.
Securonix препоръчва използването на отделен профил на браузъра за wp-admin, излизане от профила след подозрителна активност, редовна смяна на идентификационните данни на администратора, ограничаване на правата за качване на плъгини и наблюдение за нови PHP файлове в mu-plugins.
Индикатори за компрометиране (IoCs):-
| Тип | Индикатор |
|---|---|
| JavaScript зареждащ скрипт | gerlace[.]com/0k2blyny.js |
| JavaScript зареждащ скрипт | gerlace[.]com/j0ghlty4.js |
| JavaScript зареждащ скрипт | vtevens[.]icu/50w2ouvx.js |
| JavaScript зареждащ скрипт | vtevens[.]icu/x9bpnmck.js |
| JavaScript зареждащ скрипт | caapman[.]me/cse3g1jd.js |
| JavaScript зареждащ скрипт | http://caapman[.]me/9l56j7cg.js |
| JavaScript зареждащ скрипт | https://caapman[.]me/4oco7gwc.js |
| ZIP архив от втори етап | http://caapman[.]me/p/wm.zip |
| ZIP архив от втори етап | https://vtevens[.]icu/p/wm.zip |
| ZIP архив от втори етап | https://nutmann[.]club/p/wm.zip |
| ZIP архив от втори етап | https://okuneva[.]sbs/p/wm.zip |
| Източник на контролера | vilialobos[.]lol/ads.php |
| C2 домейни | caapman[.]me, vtevens[.]icu, gerlace[.]com, nutmann[.]club, okuneva[.]sbs, vilialobos[.]lol |
| C2 API пътища | /api/v1/8e4c615, /api/v1/f659473, /api/v1/e81929c, /api/v1/6a38418, /api/v1/76584c1 |
| JavaScript SHA256 | 19d9335e66d9d519c9068994491b1a0f8734626b5328fca9723d942b7128bc9c |
| JavaScript SHA256 | 0a3cb24e0d0c05b544a3e32affe3ea8a4ed87c0cc90e918c10b94d3b849d76fa |
| JavaScript SHA256 | 16f73adce28e3a33e98035a19721819ddac9cda130e6f1c337db6f8d8c2f95c6 |
| JavaScript SHA256 | f110e20dce8361a31332faba49e29e6afd54f8bc4913841f9bdad3cbb66c14e3 |
| JavaScript SHA256 | 85515e25894cace49286581f9436bd2da429e05bd96d39fafe1c42fbcdfcd4e7 |
| JavaScript SHA256 | 765525c4fabd01383ca3dd330dd4f4fbc931bea0724c12f553df41b48a96ca82 |
| JavaScript SHA256 | 804349f8f087588b057e942f321ec2c0a677a0374e02d47f95d43196fc4cac0a |
| JavaScript SHA256 | 4659d9648275113f7f95735d170f27f10fd6d0a4e606c5b4f6e916ddc54924ed |
| JavaScript SHA256 | 2cac894bf2cef2232247927e18acd35280065b576c5fa030b5fbad666db0afcc |
| JavaScript SHA256 | eeb182444019802abb34668bd6efc7e947c1822e95c87f9a5b5288b4331400c8 |
| JavaScript SHA256 | 2747316171bb2816b68db308162b40a47c6ddf82779d5f460a194921eb60f32c |
| JavaScript SHA256 | eb5a6c895d24fd08e3bbd74d7a0ea02600d3b7574b9761efb2876b671e8ddd39 |
| JavaScript SHA256 | 3b79b342a580dd09a5e3f907e475c3131f4005be59468a59905fc289e005806d |
| JavaScript SHA256 | 2fa9c207981e05141162b9c5cf62a86bdc6593b3a6861968e4df58f49c47da0d |
| JavaScript SHA256 | e98949a8370c5c3356a8e97f49a2f963a6126b917e1bc653890f8c79738c981d |
| JavaScript SHA256 | 07955dcb5f4f80c90ede398879589f2e369eb2d84c4975d3c8adf08433783409 |
| PHP SHA256 (wmedia-recovery.php) | 86d775c2d5cb459541cd2b0b967fac65ce20c60e483c71c9f7e108d5ad0bd564 |
| PHP SHA256 (ads.php) | 2dfa9e708fdb92e5d36080065f978e33a692c0fe813a75be9c7cdff03be51b6e |
| ZIP SHA256 (wm.zip) | 9215d17e5138cee498bb529e69b1cc7267305136535025e9b49fe173cf648720 |
| Име на добавката | Web Media Optimizer 2.1 |
| Път за устойчивост (persistence) | wp-content/mu-plugins/wmedia-recovery.php |
| Вграден в кода токен | M2wS8mR4yP1qL7xC5vB3dG9jK6tH2z |
Забележка: IP адресите и домейните са умишлено дефанирани (напр. [.]), за да се предотврати случайното им разрешаване или превръщане в хипервръзки. Връщайте оригиналния вид само в контролирани платформи за обмен на информация за заплахи, като MISP, VirusTotal или вашия SIEM.