Численні уразливості в RoundCube

17:20 30.11.2011

18.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 уразливості будуть виправлені.


Leave a Reply

You must be logged in to post a comment.