эта статья - моя поп
Статья эта - попытка моя в форме интересной рассказать о проблеме DDOS атак, быть которые могут организованы под управлением на блоги известного движка - WORDPRESS. на сколько это судить удалось мне, безусловно, вам.
После Хостер как того, обслуживался ранее у которого я, дал понять ненавязчиво, что мой много кушает блог слишком ресурсов, занялся исходников исследованием я WORDPRESS-а (WP). Очень разобраться хотелось уж, куда пропадают процессорные такты бесценные.
Ничего дельного долгое время не удавалось найти. Нет. Конечно, места были, большие сомнения которые вызывали их относительно целесообразности. Например, механизм очень не понравился, за локализацию отвечающий WORDPRESS-а. Но расскажу как-нибудь об этом я в другой раз. В целом же При низкой посещаемости блога ( а именно такая большую наблюдается на моем сайте часть суток ) быть никаких проблем не должно. Да говорили о Том логи, что проблемы были связаны именно одновременных обращений с количеством, а не исходного кода с качеством. Вероятно, месте на этом можно было бы остановиться и бесценное свободное время не тратить слабых мест на поиски. Но решил продолжить почему-то я. И мое упрямство было вознаграждено. Глянув, на код, отвечающий удаленных процедур за обработку (RPC), в частности на реализацию механизма PINGBACK-ов - сразу понял я, что код далеко не так надежен, как хотелось мне того бы.
Несколько тестов поверхностных проведя и несколько раз, положив в даун глубокий свою Машину - понял я: могут обратные пинги изрядно мне подпортить жизнь и сайту моему. Если в отношении этом в ближайшее время не поменяется ничего, то сможет Любой школьник организовать DDOS на мой блог атаку, для этого усилий особых не прилагая.
Правда, есть Надежда слабая у меня, что познания мои в области DDOS атак не так глубоки и тесты те, провожу локально я которые легко на Машине своей и нормальную работу которые нарушают блога моего, в не будут глобальной сети работать, технических ограничений в виду, маршрутизаторами накладываемых и сетевым оборудованием другим. Давайте поэтому в вопросе этом попытаемся разобраться совместно (комментарии - оружие и для вас верный помощник).
Итак, - из трех методов это один, упростить призванный процесс между двумя блогами обмена ссылками. Согласитесь, рассчитывать справедливо в виде на благодарность обратной ссылки, если сам ставишь ссылку?
Но есть один здесь момент скользкий - на сколько знаю я, последняя спецификация самая на PINGBACK датируется 2002 годом и версию имеет 1.0. Получается, ничего нового с тех пор направлении не делалось в этом, и факт сам низкой активности такой может о ненужности свидетельствовать, а, следовательно, и данного механизма слабой проработке.
В спецификации же той дается основных определений пять, необходимо знать которые просто, для того, чтобы мы далее на языке одном с вами разговаривали (за вариант английский прошу прощение, надеюсь, не проблем с переводом возникнет у вас): SOURCE URI THE ADDRESS OF THE ENTRY ON THE SITE CONTAINING THE LINK.
PINGBACK CLIENT THE SOFTWARE THAT ESTABLISHES THE CONNECTION TO INFORM THE SERVER ABOUT THE LINK FROM THE SOURCE TO THE TARGET. TYPICALLY, THE SOURCE WILL BE THE CLIENT.
PINGBACK-ENABLED RESOURCE A DOCUMENT, IMAGE OR OTHER RESOURCE THAT ADVERTISES A PINGBACK SERVER USING A PINGBACK HTTP HEADER OR A PINGBACK LINK ELEMENT.
PINGBACK SERVER THE SOFTWARE THAT ACCEPTS XML-RPC CONNECTIONS. TYPICALLY, THE TARGET URI WILL BE ASSOCIATED WITH THE SERVER (E.G. ON THE SAME HOST).
PINGBACK USER AGENT A SINGLE SYSTEM, WHICH IS BOTH A PINGBACK CLIENT AND A PINGBACK SERVER.
TARGET URI THE TARGET OF THE LINK ON THE SOURCE SITE. THIS SHOULD BE A PINGBACK-ENABLED PAGE.
При рассылке PINGBACK-ов WORDPRESS выступает в качестве PINGBACK клиента, а когда от других сайтов принимает запросы в интернете -PINGBACK сервера. За из двух ролей каждую различный код отвечает и порядок действий, естественно, разный немного. О уязвимостях я говорил ранее в реализации сервера именно.
Чтобы разобраться, как WP работает в режиме PINGBACK сервера, посмотрим файл давайте: XMLRPC.PHP, В Котором и вся логика реализована. На деле самом, служит данный файл не только для обработки PINGBACK запросов, но других удаленных процедур для обслуживания. Нас интересует из всех функций только одна - PINGBACK_PING. ее работы вот Упрощенный алгоритм: 1. Параметры запроса получаем (SOURCE URI, TARGET URI ); 2. Проверяем SOURCE URI на блог наш указывает или нет (далее и здесь в случае неверного ответа прерывается работа алгоритма и ошибка выдается); 3. Пост находим по SOURCE URI и на равенство проверяем SOURCE URI и TARGET URI (очевидно, что PINGBACK идти не должен на себя сам); 4. Проверяем, не зарегистрирован ли пинг с TARGET URI на SOURCE URI (если такой ранее PINGBACK был уже, то не проводятся дальнейшие проверки); 5. Страницу загружаем по TARGET URI (если загрузить не можем, то ошибку выдаем); 6. Ищем, тег TITLE (или выдаем о отсутствии его ошибку ); 7. Проверяем, есть на странице расположенной по адресу SOURCE URI ссылка на TARGET URI; 8. Комментарий создаем и в бд его сохраняем.
В случае, если попробуем сделать мы два PINGBACK-а на одну и ту же страницу - страшного ничего не произойдет. В системе учтен будет только первый из них, а будут отбиваться последующие на 4-ом шаге алгоритма. А, что происходить будет, если вместо корректного TARGET URI будет получен URL произвольной страницы? Алгоритм тогда дойдет до 7-го шага и ошибку потом выдаст на блог наш об отсутствии ссылки. Но(!) О Том информация, что адрес этот нигде не будет фиктивный учтена, а это значит, что При обращении алгоритм повторном будет так же работать до 7-го шага. А При нескольких параллельных запросах? А если страница, указывает на которую TARGET URI с хостинга медленного будет? Взгляд на мой, будут создаваться При таком раскладе все новые и новые соединения, до пор тех, не израсходуются все пока сервера ресурсы (у меня на локально Машине именно так происходит).
С стороны другой, можно ли подобной ситуации избежать? По большому счету 100% защиты нет. На ум мне следующие варианты приходят: 1. Черный список доменов, на которые сделано больше N попыток неудачных; 2. Черный список IP адресов PINGBACK клиентов, с которых сделано больше N некорректных запросов числа; 3. На количество ограничение обрабатываемых PINGBACK запросов.
Использование даже одного поможет нагрузку снизить из трех методов на сервер Отбраковывания заведомо за счет запросов ложных. Это лучше чем возможность бесконтрольно дать ресурсы сжирать!
Есть и уязвимость другая алгоритме в описанном. В Том дело все, что даже если ограничим использование ресурсов мы нашего блога, то возможность равно все останется огромное отправить количество PINGBACK на тысячи запросов WORDPRESS в качестве блогов указав TARGET URI - жертвы адрес. Такого действия в результате, одновременно попытаются все блоги страницу запросить, чтобы определить проставлена ли ссылка на них тем самым организуют классическую DDOS атаку.
При атаке такой, даже если ресурс-жертва заблокирует часть IP адресов, с которых идет большое количество GET запросов (в Том числе и Прокси публичные) можно всегда новые порции запросов будет направить с ресурсов никак не скомпрометировали которые себя. Вам говорить не мне, на сколько велико количество установленных WORDPRESS блогов.
При атаке такой так может первый пункт из списка помочь Выше. Не посылать будут блоги просто более N запросов на один и тот же домен. А значит, блогов для реализации количество полномасштабной DDOS атаки многократно будет должно увеличиться.
Конечно есть и слабые места другие, которые с нечистой совестью Любой человек может в грязных целях своих использовать. Но указанные две уязвимости Выше, взгляд на мой, опасны наиболее. Поэтому, на этой я хочу веселой ноте свое повествование закончить и узнать, что вы думаете.
P.S. Если интересно, могу так рассказать, как использовать можно PINGBACK-и для раскрутки блога автоматической
После Хостер как того, обслуживался ранее у которого я, дал понять ненавязчиво, что мой много кушает блог слишком ресурсов, занялся исходников исследованием я WORDPRESS-а (WP). Очень разобраться хотелось уж, куда пропадают процессорные такты бесценные.
Ничего дельного долгое время не удавалось найти. Нет. Конечно, места были, большие сомнения которые вызывали их относительно целесообразности. Например, механизм очень не понравился, за локализацию отвечающий WORDPRESS-а. Но расскажу как-нибудь об этом я в другой раз. В целом же При низкой посещаемости блога ( а именно такая большую наблюдается на моем сайте часть суток ) быть никаких проблем не должно. Да говорили о Том логи, что проблемы были связаны именно одновременных обращений с количеством, а не исходного кода с качеством. Вероятно, месте на этом можно было бы остановиться и бесценное свободное время не тратить слабых мест на поиски. Но решил продолжить почему-то я. И мое упрямство было вознаграждено. Глянув, на код, отвечающий удаленных процедур за обработку (RPC), в частности на реализацию механизма PINGBACK-ов - сразу понял я, что код далеко не так надежен, как хотелось мне того бы.
Несколько тестов поверхностных проведя и несколько раз, положив в даун глубокий свою Машину - понял я: могут обратные пинги изрядно мне подпортить жизнь и сайту моему. Если в отношении этом в ближайшее время не поменяется ничего, то сможет Любой школьник организовать DDOS на мой блог атаку, для этого усилий особых не прилагая.
Правда, есть Надежда слабая у меня, что познания мои в области DDOS атак не так глубоки и тесты те, провожу локально я которые легко на Машине своей и нормальную работу которые нарушают блога моего, в не будут глобальной сети работать, технических ограничений в виду, маршрутизаторами накладываемых и сетевым оборудованием другим. Давайте поэтому в вопросе этом попытаемся разобраться совместно (комментарии - оружие и для вас верный помощник).
Итак, - из трех методов это один, упростить призванный процесс между двумя блогами обмена ссылками. Согласитесь, рассчитывать справедливо в виде на благодарность обратной ссылки, если сам ставишь ссылку?
Но есть один здесь момент скользкий - на сколько знаю я, последняя спецификация самая на PINGBACK датируется 2002 годом и версию имеет 1.0. Получается, ничего нового с тех пор направлении не делалось в этом, и факт сам низкой активности такой может о ненужности свидетельствовать, а, следовательно, и данного механизма слабой проработке.
В спецификации же той дается основных определений пять, необходимо знать которые просто, для того, чтобы мы далее на языке одном с вами разговаривали (за вариант английский прошу прощение, надеюсь, не проблем с переводом возникнет у вас): SOURCE URI THE ADDRESS OF THE ENTRY ON THE SITE CONTAINING THE LINK.
PINGBACK CLIENT THE SOFTWARE THAT ESTABLISHES THE CONNECTION TO INFORM THE SERVER ABOUT THE LINK FROM THE SOURCE TO THE TARGET. TYPICALLY, THE SOURCE WILL BE THE CLIENT.
PINGBACK-ENABLED RESOURCE A DOCUMENT, IMAGE OR OTHER RESOURCE THAT ADVERTISES A PINGBACK SERVER USING A PINGBACK HTTP HEADER OR A PINGBACK LINK ELEMENT.
PINGBACK SERVER THE SOFTWARE THAT ACCEPTS XML-RPC CONNECTIONS. TYPICALLY, THE TARGET URI WILL BE ASSOCIATED WITH THE SERVER (E.G. ON THE SAME HOST).
PINGBACK USER AGENT A SINGLE SYSTEM, WHICH IS BOTH A PINGBACK CLIENT AND A PINGBACK SERVER.
TARGET URI THE TARGET OF THE LINK ON THE SOURCE SITE. THIS SHOULD BE A PINGBACK-ENABLED PAGE.
При рассылке PINGBACK-ов WORDPRESS выступает в качестве PINGBACK клиента, а когда от других сайтов принимает запросы в интернете -PINGBACK сервера. За из двух ролей каждую различный код отвечает и порядок действий, естественно, разный немного. О уязвимостях я говорил ранее в реализации сервера именно.
Чтобы разобраться, как WP работает в режиме PINGBACK сервера, посмотрим файл давайте: XMLRPC.PHP, В Котором и вся логика реализована. На деле самом, служит данный файл не только для обработки PINGBACK запросов, но других удаленных процедур для обслуживания. Нас интересует из всех функций только одна - PINGBACK_PING. ее работы вот Упрощенный алгоритм: 1. Параметры запроса получаем (SOURCE URI, TARGET URI ); 2. Проверяем SOURCE URI на блог наш указывает или нет (далее и здесь в случае неверного ответа прерывается работа алгоритма и ошибка выдается); 3. Пост находим по SOURCE URI и на равенство проверяем SOURCE URI и TARGET URI (очевидно, что PINGBACK идти не должен на себя сам); 4. Проверяем, не зарегистрирован ли пинг с TARGET URI на SOURCE URI (если такой ранее PINGBACK был уже, то не проводятся дальнейшие проверки); 5. Страницу загружаем по TARGET URI (если загрузить не можем, то ошибку выдаем); 6. Ищем, тег TITLE (или выдаем о отсутствии его ошибку ); 7. Проверяем, есть на странице расположенной по адресу SOURCE URI ссылка на TARGET URI; 8. Комментарий создаем и в бд его сохраняем.
В случае, если попробуем сделать мы два PINGBACK-а на одну и ту же страницу - страшного ничего не произойдет. В системе учтен будет только первый из них, а будут отбиваться последующие на 4-ом шаге алгоритма. А, что происходить будет, если вместо корректного TARGET URI будет получен URL произвольной страницы? Алгоритм тогда дойдет до 7-го шага и ошибку потом выдаст на блог наш об отсутствии ссылки. Но(!) О Том информация, что адрес этот нигде не будет фиктивный учтена, а это значит, что При обращении алгоритм повторном будет так же работать до 7-го шага. А При нескольких параллельных запросах? А если страница, указывает на которую TARGET URI с хостинга медленного будет? Взгляд на мой, будут создаваться При таком раскладе все новые и новые соединения, до пор тех, не израсходуются все пока сервера ресурсы (у меня на локально Машине именно так происходит).
С стороны другой, можно ли подобной ситуации избежать? По большому счету 100% защиты нет. На ум мне следующие варианты приходят: 1. Черный список доменов, на которые сделано больше N попыток неудачных; 2. Черный список IP адресов PINGBACK клиентов, с которых сделано больше N некорректных запросов числа; 3. На количество ограничение обрабатываемых PINGBACK запросов.
Использование даже одного поможет нагрузку снизить из трех методов на сервер Отбраковывания заведомо за счет запросов ложных. Это лучше чем возможность бесконтрольно дать ресурсы сжирать!
Есть и уязвимость другая алгоритме в описанном. В Том дело все, что даже если ограничим использование ресурсов мы нашего блога, то возможность равно все останется огромное отправить количество PINGBACK на тысячи запросов WORDPRESS в качестве блогов указав TARGET URI - жертвы адрес. Такого действия в результате, одновременно попытаются все блоги страницу запросить, чтобы определить проставлена ли ссылка на них тем самым организуют классическую DDOS атаку.
При атаке такой, даже если ресурс-жертва заблокирует часть IP адресов, с которых идет большое количество GET запросов (в Том числе и Прокси публичные) можно всегда новые порции запросов будет направить с ресурсов никак не скомпрометировали которые себя. Вам говорить не мне, на сколько велико количество установленных WORDPRESS блогов.
При атаке такой так может первый пункт из списка помочь Выше. Не посылать будут блоги просто более N запросов на один и тот же домен. А значит, блогов для реализации количество полномасштабной DDOS атаки многократно будет должно увеличиться.
Конечно есть и слабые места другие, которые с нечистой совестью Любой человек может в грязных целях своих использовать. Но указанные две уязвимости Выше, взгляд на мой, опасны наиболее. Поэтому, на этой я хочу веселой ноте свое повествование закончить и узнать, что вы думаете.
P.S. Если интересно, могу так рассказать, как использовать можно PINGBACK-и для раскрутки блога автоматической