freeBuf
主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

点我创作

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

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

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

FreeBuf+小程序

FreeBuf+小程序

WebRTC 真实IP泄露防范
2023-05-11 13:30:03
所属地 四川省

WebRTC 真实IP泄露防范

1.1. 前言

很多人可能误以为使用代理就可以完全隐藏我们的真实IP地址,但实际并不总是这样。事实上,有大量文章指出,WebRTC存在安全风险,而WebRTC安全风险的可怕之处在于,即使你使用VPN代理上网,仍然可能会暴露自己的真实IP地址。

虽然这听起来有点让人担忧,但我们不应该失去对代理技术的信心。代理依然是一种非常有用的工具,可以保护我们的在线隐私和安全。只是我们需要意识到代理并不是百分之百可靠的,因此我们需要采取其他额外的措施来保护自己的隐私和安全。

1.2. 获取真实IP地址演示

有如下3个网站推荐使用:

  • https://ip8.com/webrtc-test

  • https://www.hackjie.com/tracking

  • https://dnsleaktest.org/dns-leak-test

我平时比较喜欢使用FireFox和Chrome,通过对这俩的测试,发现使用Firefox默认不会获取到真实IP,但Chrome就算挂了代理,仍然能获取到真实IP地址。

红色为真实IP地址

1.3. WebRTC介绍

WebRTC(Web Real-Time Communications)是一项实时通讯技术,它允许网络应用或者站点,在不借助中间媒介的情况下,建立浏览器之间点对点(Peer-to-Peer)的连接,实现视频流和(或)音频流或者其他任意数据的传输。WebRTC 包含的这些标准使用户在无需安装任何插件或者第三方的软件的情况下,创建点对点(Peer-to-Peer)的数据分享和电话会议成为可能。

1.4. WebRTC 泄漏真实IP原理

WebRTC 允许浏览器之间直接建立点对点连接,从而实现实时通信,例如视频、语音和数据传输。在建立 WebRTC 连接时,浏览器会向对方发送自己的 IP 地址,以便双方建立连接。攻击者可以通过 JavaScript 或其他技术来访问 WebRTC 中的 API,以获取用户的 IP 地址,从而进行跟踪、监视或攻击。

具体来说,攻击者可以利用浏览器的 WebRTC API,通过请求媒体设备的权限,获取用户的 IP 地址。攻击者可以通过编写恶意 JavaScript 代码来执行这些请求,这些代码可能会被插入到网站中,以执行跨站点脚本攻击(XSS)等攻击。

此外,WebRTC 的 STUN/TURN 服务器也可以泄漏用户的 IP 地址。STUN/TURN 服务器是 WebRTC 中用于 NAT 穿透和中继的关键组件。如果这些服务器存在漏洞或者未正确配置,攻击者可以通过它们来获取用户的真实 IP 地址,从而进行攻击。

1.5. 防范措施

安装WebRTC Leak Shield扩展

1.6. 溯源利用

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>WebRTC泄露检测</title>
  </head>
  <body>
    <script>
      function findIP(onNewIP) {
        var myPeerConnection = window.RTCPeerConnection || window.mozRTCPeerConnection || window.webkitRTCPeerConnection;
        var pc = new myPeerConnection({iceServers: [{urls: "stun:stun.l.google.com:19302"}]}),
        noop = function() {},
        localIPs = {},
        ipRegex = /([0-9]{1,3}(\.[0-9]{1,3}){3}|[a-f0-9]{1,4}(:[a-f0-9]{1,4}){7})/g,
        key;

        function ipIterate(ip) {
          if (!localIPs[ip]) onNewIP(ip);
          localIPs[ip] = true;
        }

        pc.createDataChannel("");

        pc.createOffer(function(sdp) {
          sdp.sdp.split('\n').forEach(function(line) {
            if (line.indexOf('candidate') < 0) return;
            line.match(ipRegex).forEach(ipIterate);
          });
          pc.setLocalDescription(sdp, noop, noop);
        }, noop);

        pc.onicecandidate = function(ice) {
          if (!ice || !ice.candidate || !ice.candidate.candidate || !ice.candidate.candidate.match(ipRegex)) return;
          ice.candidate.candidate.match(ipRegex).forEach(ipIterate);
        };
      }

      function show(ip) {
        alert(ip);
      }

      findIP(show);

</script>
  </body>
</html>


上述的代码访问后直接弹出IP,可对其进行定向二次开发,达到溯源反制的目的。

# 渗透测试 # 网络安全
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
本文为 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录