当前位置:WooYun(白帽子技术社区) >> JavaScript >> Get local and public IP addresses in JavaScript

Get local and public IP addresses in JavaScript

五道口杀气 | 2015-01-27 11:01

from:https://github.com/diafygi/webrtc-ips

Firefox 跟 Chrome支持WebRTC可以向STUN服务器请求,返回内外网IP,不同于XMLHttpRequest请求,STUN请求开发者工具当中看不到网络请求的。

//get the IP addresses associated with an account
function getIPs(callback){
    var ip_dups = {};

    //compatibility for firefox and chrome
    var RTCPeerConnection = window.RTCPeerConnection
        || window.mozRTCPeerConnection
        || window.webkitRTCPeerConnection;
    var mediaConstraints = {
        optional: [{RtpDataChannels: true}]
    };

    //firefox already has a default stun server in about:config
    //    media.peerconnection.default_iceservers =
    //    [{"url": "stun:stun.services.mozilla.com"}]
    var servers = undefined;

    //add same stun server for chrome
    if(window.webkitRTCPeerConnection)
        servers = {iceServers: [{urls: "stun:stun.services.mozilla.com"}]};

    //construct a new RTCPeerConnection
    var pc = new RTCPeerConnection(servers, mediaConstraints);

    //listen for candidate events
    pc.onicecandidate = function(ice){

        //skip non-candidate events
        if(ice.candidate){

            //match just the IP address
            var ip_regex = /([0-9]{1,3}(\.[0-9]{1,3}){3})/
            var ip_addr = ip_regex.exec(ice.candidate.candidate)[1];

            //remove duplicates
            if(ip_dups[ip_addr] === undefined)
                callback(ip_addr);

            ip_dups[ip_addr] = true;
        }
    };

    //create a bogus data channel
    pc.createDataChannel("");

    //create an offer sdp
    pc.createOffer(function(result){

        //trigger the stun server request
        pc.setLocalDescription(result, function(){});

    }, function(){});
}

//Test: Print the IP addresses into the console
getIPs(function(ip){console.log(ip);});


本地测试了一下,挂上VPN的效果……

6413C58F-9CD2-4DC7-B9DE-6B387F8FA38A.png

分享到:
  1. 1#
    回复此人 感谢
    insight-labs (Root Yourself in Success) | 2015-01-27 11:03

    可以用xss扫内网和exp内网了……

  2. 2#
    回复此人 感谢
    Fireweed | 2015-01-27 11:08

    开发者工具看不到这么重要啊

  3. 3#
    回复此人 感谢
    园长 (喵~) | 2015-01-27 11:28
  4. 4#
    回复此人 感谢
    he1renyagao (无) | 2015-01-27 11:31

  5. 5#
    回复此人 感谢
    YwiSax | 2015-01-27 12:08

    这东西够隐蔽

  6. 6#
    回复此人 感谢
    July | 2015-01-27 12:27

    内网IP扫描- -

  7. 7#
    回复此人 感谢
    Neeke | 2015-01-27 12:36

    越来越牛逼了

  8. 8#
    回复此人 感谢
    ACGT | 2015-01-27 13:19

    这不就是两年前的东西被重写了一遍吗 https://github.com/natevw/ipcalf/
    而且要获取内网IP不需要stun server,iceServers留空就可以,也就是说客户端浏览器不能连接外网也没关系

  9. 9#
    回复此人 感谢
    Sura、Rain | 2015-01-27 13:25
  10. 10#
    回复此人 感谢
    Sura、Rain | 2015-01-27 13:29

    @园长 好吧,IE不行,没看清就点了

  11. 11#
    回复此人 感谢
    D&G | 2015-01-27 13:40

    很准。。

  12. 12#
    回复此人 感谢
    0x_Jin (世上人多心不齐) | 2015-01-27 14:33
  13. 13#
    回复此人 感谢
    五道口杀气 | 2015-01-27 14:48

    楼上几个可能没有仔细看,这个的效果不仅仅是获取内外网IP,我测试的VPN那个是为了展现能够获取我本机的内外网IP跟VPN的内外网IP。

  14. 14#
    回复此人 感谢
    园长 (喵~) | 2015-01-27 14:55

    @Sura、Rain 没叫你用IE...楼主几个大字写着FireFox和Chrome

  15. 15#
    回复此人 感谢
    luwikes (土豆你个西红柿,番茄你个马铃薯~~~) | 2015-01-27 15:42

  16. 16#
    回复此人 感谢
    GaRY | 2015-01-27 17:50

    nice tip

  17. 17#
    回复此人 感谢
    sin (寻找最优雅的解决方案) | 2015-01-27 18:01

    楼主的都是精品

  18. 18#
    回复此人 感谢
    Elegance | 2015-01-27 18:06

    收了,不错

  19. 19#
    回复此人 感谢
    _Evil (科普是一种公益行为) | 2015-01-29 13:08

    @insight-labs xss如何能扫描除了webserver ftp 的其他端口;Wooyun第一帅给点tip呀

  20. 20#
    回复此人 感谢
    _Evil (科普是一种公益行为) | 2015-01-29 13:09

    @0x_Jin Jin GGG 遇到401基础验证会弹框能避免么? 我脑洞想不出来了.

  21. 21#
    回复此人 感谢
    0x_Jin (世上人多心不齐) | 2015-01-29 13:44

    @五道口杀气  servers = {iceServers: [{urls: "stun:stun.services.mozilla.com"}]};

  22. 22#
    回复此人 感谢
    打酱油的小男孩 | 2015-01-29 17:39

    heige 的 PPT 里曾讲到过

  23. 23#
    回复此人 感谢
    PanFake | 2015-01-29 18:01

    不错 学习了!各种POC。。

  24. 24#
    回复此人 感谢
    M4ster (Black || White) | 2015-01-29 18:18
  25. 25#
    回复此人 感谢
    Power | 2015-01-29 18:39

    测试了下,灰常牛逼啊.

  26. 26#
    回复此人 感谢
    楼上是马甲 | 2015-01-29 19:22

    @园长 虽然用firefox  还好有noscript

  27. 27#
    回复此人 感谢
    孤月寒城 (握了棵草) | 2015-01-29 19:54

    牛逼。

  28. 28#
    回复此人 感谢
    Jumbo (www.chinabaiker.com) | 2015-02-06 00:46

    WEBRTC爆洞泄露IP:http://www.freebuf.com/news/58275.html

添加新回复

登录 后才能参与评论.

WooYun(白帽子技术社区)

网络安全资讯、讨论,跨站师,渗透师,结界师聚集之地

登录