Изложените резервни копия на WordPress се превърнаха в ценен източник на идентификационни данни за облачни услуги и имейл за атакуващи, използващи набор от инструменти, наречен TIKTOUK.
Вместо да разчита на една техника, неговите компоненти търсят чувствителни файлове в уебсайтовете, възстановяват съхранени пароли и събират поверителни данни от JavaScript, доставян на посетителите. Операцията вече е била активна в широк мащаб, когато изследователите са я забелязали за първи път.
Изтекъл контролен панел съдържаше приблизително 50 000 реални данни за достъп от страна на сървъра в около 37 000 домейна, включително стотици AWS ключове, които атакуващите са потвърдили като активни. Изследователите от LevelBlue идентифицираха набора от инструменти чрез преглед на изходния код, обратен инженеринг и контролирано тестване.
LevelBlue съобщи в доклад, споделен с Cyber Security News (CSN), че неговите компоненти комбинират сканиране на WordPress, събиране на незащитени конфигурации, възстановяване на пароли за имейл и сканиране на JavaScript.
Констатациите подчертават как едно забравено резервно копие може да изложи на риск много повече от базата данни на уебсайт. Подобни публично изложени тайни от хранилища са разкривали облачни ключове и чувствителни бизнес записи, показвайки как достъпните материали от разработката могат да разширят иначе ограничен пропуск в сигурността.
Изложени резервни копия на WordPress
TIKTOUK използва два Python компонента и Linux робот (crawler), написан на Go. Всеки от тях извлича задачи от централна HTTP услуга и връща намерени данни или доклади за състоянието.
Услугата координира разпределението и събирането на цели, въпреки че тестовете не установиха автоматично предаване между компонентите.
Компонентът за сканиране първо извлича целите и идентифицира сайтовете на WordPress. След това той изпраща REST партидни заявки (batch requests), комбиниращи невалиден URL адрес с операции за изтриване и рендиране на параграфи.
Когато JSON заявките получат отговор за отказан достъп (forbidden), той опитва отново с multipart кодиране и получава успешни отговори, което дава на специалистите по защита отличителна последователност за разследване.
Отделен компонент за събиране извлича изложено резервно копие на конфигурацията на WordPress и извлича идентификационни данни за базата данни и ключове за сигурност.
Той също така изисква настройки на средата, конфигурация на хранилището, резервни копия на бази данни и логове за отладка (debug logs), търсейки идентификационни данни, оставени достъпни чрез обикновени уеб заявки.
Вложените партидни заявки съдържат изрази, предназначени да извличат стойности на опции от базата данни. Компонентът първо изисква името на таблицата с опции, след което използва върнатото име в последващи заявки.
Той декодира шестнадесетичните отговори в текст и подготвя записи, съдържащи настройки на базата данни, данни за достъп до имейл, двойки ключове за AWS и шаблони за API ключове.
Облачният риск надхвърля първоначалния уебсайт. Изтеклият панел включва AWS ключове с потенциал за злоупотреба, свързана с доставяне на имейли, изчислителни ресурси и услуги за изкуствен интелект.
Предишни доклади за все още активни данни за достъп до AWS също показаха как изложените ключове могат да запазят разширен достъп дълго след разкриването им.
Възстановяване на пароли и откриване
Компонентът за събиране поддържа криптирани настройки от WP Mail SMTP, Easy WP SMTP и FluentSMTP. Изследвачите потвърдиха, че той е възстановил идентификационни данни в чист текст, използвайки съответните ключове за криптиране или конфигурационни материали на WordPress.
Това не е пробив в криптирането: наборът от инструменти просто е получил информацията, необходима за отключване на защитените настройки. Контролираните проверки показаха също, че поддържаното декриптиране работи без незадължителни криптографски библиотеки.
Компонентът за събиране може да изведе имейл парола за Amazon SES от предоставен тайен ключ на AWS, превръщайки облачните ключове в данни за достъп, подходящи за имейл услугата.
JavaScript роботът извлича страници и реферирани скриптове, сканира тяхното съдържание и изпраща съвпаденията към централния сървър. Намерените данни включват шаблони, свързани със SendGrid, Anthropic, Bedrock и AWS.
Опасността наподобява пробива на идентификационни данни в облака на Beacon, където публично изложен AWS ключ в JavaScript е овластил кражбата на база данни.
LevelBlue свърза структурите на заявките с CVE-2026-60137 и CVE-2026-63030, но не съобщава за потвърдена успешна експлоатация.
Контролираните цели са върнали подготвени отговори, без да изпълняват SQL заявки. Отделно, телеметрията на инциденти потвърждава изтеглянето на зловреден код и комуникацията с контролера, докато разследващите идентифицираха свързана ботнет мрежа на Go с възможност за отдалечено изпълнение на команди.
Бюлетинът за сигурност относно партидните маршрути идентифицира засегнати версии на WordPress 6.9.x преди 6.9.5 и 7.0.x преди 7.0.2. Лабораторните резултати установяват поведението на компонентите, а не потвърден пробив на реален сайт.
Те не потвърждават независимо откраднатите данни за достъп, събрани по време на симулирани изпълнения, нито демонстрират успешна експлоатация срещу реална инсталация на WordPress в производствена среда.
Специалистите по защита трябва да съпоставят необичайни партидни заявки, промени в кодирането на заявките, достъп до чувствителни файлове и последващо изпращане на резултати.
LevelBlue препоръчва да се проверяват хешовете на образците заедно с HTTP активността и да се потвърждават инцидентите спрямо локалните записи. Самостоятелните отделни пътища или параметри не удостоверяват съществуването на злонамерена дейност.
Индикатори за компрометиране (IoCs):-
| Тип | Индикатор | Описание |
|---|---|---|
| SHA-256 | c6b8d0cdb53da98a5d15e79b7bb9e9f4c272c4f9592acdc291089f126f892f45 | Компонент за сканиране на WordPress. |
| SHA-256 | 0d8ea89a63070f68286249aa437aece0e040c1609b8c5c0950ebbc90e6f70f02 | Компонент за събиране на идентификационни данни. |
| SHA-256 | 1e22fde68d3277ed0fe7a8a7b554f0ae118260a2fa143f8e1bdc84c994ebbe90 | Сканер за поверителни данни в JavaScript. |
| SHA-1 | 9903f4576980ff7cfd560ca57c665a4b59b3c30d | Свързан двоичен файл на ботнет на Go с възможност за отдалечено изпълнение на команди. |
| IP адрес | 193.32.162[.]134 | Допълнителен контролен панел на TIKTOUK. |
| IP адрес | 195.178.110[.]209 | Допълнителен контролен панел на TIKTOUK. |
| IP адрес | 31.56.58[.]59 | Хост на зловреден код и контролер, наблюдавани в телеметрията на инцидента. |
| Име на файл | wp2s_poll.py | Python компонент, който сканира цели на WordPress и съобщава за класификации и съвпадения на поверителни данни. |
| Име на файл | wp2s_crack.py | Python компонент, който събира конфигурационни данни и възстановява идентификационни данни. |
| Име на файл | jscrawl-amd64 | Изпълним файл за Linux на базата на Go, който сканира рефериран JavaScript за поверителни данни. |
| Целеви файл | wp-config.php.bak | Изложено резервно копие на конфигурацията на WordPress, анализирано за данни за достъп до база данни и ключове. |
| Целеви файл | .env | Конфигурационен файл на средата, изискван по време на събиране на чувствителни данни. |
| Път до целеви файл | .git/config | Конфигурация на хранилището, изисквана по време на събирането. |
| Целеви файл | backup.sql | Резервно копие на базата данни, изисквано по време на събирането. |
| Път до целеви файл | wp-content/debug.log | Лог за отладка на WordPress, изискван по време на събирането. |
| Път на REST заявка | /wp/v2/categories/0 | Маршрут, насочен с операцията DELETE в партидни сканирания. |
| Път на REST заявка | /wp/v2/block-renderer/core/paragraph | Маршрут, насочен с операцията POST в партидни сканирания. |
| Крайна точка за отчитане | /v1/ingest | Получава констатации от компонента за сканиране и JavaScript робота. |
| Крайна точка за отчитане | /api/crack/report | Получава записи за всяка цел от компонента за събиране на идентификационни данни. |
| Артефакт на невалиден URL адрес | http://: | Невалиден път, включен в REST партидни заявки; контекстуална следа за откриване, а не самостоятелен индикатор за компрометиране. |
Забележка: IP адресите и домейните са умишлено обезопасени (напр. [.]), за да се предотврати случайно разрешаване на имена или създаване на хипервръзки. Възстановете оригиналния им вид само в рамките на контролирани платформи за разузнаване на заплахи като MISP, VirusTotal или вашата SIEM система.