XSS уразливість в WordPress 2.7 - 2.8.1

22:41 30.07.2010

Продовжую проект День багів в WordPress 2. Зараз я оприлюдню результати мого дослідження однієї Cross-Site Scripting уразливості в WordPress, що була оприлюднена в липні 2009 року.

В минулому році була виявлена Cross-Site Scripting уразливість в WordPress 2.8.1. Яка мала місце в параметрі url при відправці коментарів. Уразливість виявив iso^kpsbr і він представив експлоіт, що редиректив на сайт вказаний в полі url, при наведені курсором на відповідний текст. Це strictly social XSS.

По-перше, я визначив вразливі версії движка (чого не було зроблено автором експлоіта). Як я перевірив, уразливі версії WordPress 2.7 - 2.8.1. Попередні версії невразливі, лише в WP 2.7 відбулися зміни в коді обробки коментарів, що призвели до появи XSS уразливості. В версії 2.8.2 уразливість була виправлена.

По-друге, я розробив експлоіт, який не робить onClick через onMouseOver для редерекції на сайт, а безпосередньо проводить XSS атаку - в даному випадку це звичайний alert. Незважаючи на обмеження на доступні символи, проведення XSS атак з використанням цієї уразливості цілком реальне (хоча розробники WP заявляли, що уразливість дозволяє лише редиректити на інші сайти, як це було зроблено в згаданому експлоіті, але в своєму експлоіті я продемонстрував можливість й інших атак, зокрема доступу до кукісів). Атака відбувається через onMouseOver (тобто це strictly social XSS).

XSS:

WordPress XSS.html

Код спрацює при відвіданні адміном сторінки для перевірки коментарів (http://site/wp-admin/edit-comments.php) та наведенні курсором на відповідний текст. Також код спрацює на сторінці з даним коментарем (http://site/?p=1), коли будь-який користувач чи відвідувач сайта наведе курсор на відповідний текст, якщо коментар був дозволений адміном, або він автоматично був дозволений для публікації (при відповідних налаштуваннях сайта - коли немає премодерації, або коли даний користувач вже має коментарі на даному сайті). А також код спрацює на сторінці Dashboard (http://site/wp-admin/index.php) в блоці Recent Comments при наведенні курсором на відповідний текст.


Leave a Reply

You must be logged in to post a comment.