javascript实现端口扫描

本文介绍了如何利用JavaScript实现一个简单的端口扫描器,通过在XSS攻击中作为侦查工具,对目标网站进行扫描。
摘要由CSDN通过智能技术生成

来源于: www.gnucitizen.org

作者: Petko Petkov


使用javascript可以打造一个端口扫描器,可以作为渗透的“先锋”在XSS中对目标网址进行扫描


首先构造表单

<form>
    <label for="target">target</label>
    <input type="text" name="target" value="www.baidu.com" /><br />
    <label for="port">port</label>
    <input type="text" name="port" value="80" /><br />
    <label for="timeout">timeout</label>
    <input type="text" name="timeout" value="1000" /><br />
    <label for="result">result</label>
    <textarea name="result" id="result" cols="50" rows="10"></textarea><br />
    <input type="button" value="scan" οnclick="scan(this.form)" />
</form>

javascript脚本

var AttackAPI = {
    PortScanner: {}
};
AttackAPI.PortScanner.scanPort = function (callback, target, port, timeout) {
    var timeout = (timeout == null)?100:timeout;
    var img = new Image();
    img.onerror = function () {
        if (!img) {
            return;
        }
        img = undefined;
        callback(target, port, 'open');
    };
    img.onload = img.onerror;
    img.src = 'http://' + target + ':' + port;

    setTimeout(function () {
        if (!img) {
            return;
        }
        img = undefined;
        callback(target, port, 'closed');
    }, timeout);
};
AttackAPI.PortScanner.scanTarget = function (callback, target, ports, timeout) {
    for (index = 0; index < ports.length; index++) {
        AttackAPI.PortScanner.scanPort(callback, target, ports[index], timeout);
    }
};

var result = document.getElementById('result');
var callback = function (target, port, status) {
    result.value += target + ':' + port + ' ' + status + "\n";
};
var scan = function (form) {
    result.value = "";
    AttackAPI.PortScanner.scanTarget(callback, form.target.value, form.port.value.split(','), form.timeout.value);
};


我读了这个源代码,发现原理很简单,关键点就是新建一个Image对象,将src设成目标网页target:port,如果目标在使用这个端口那么就会发生load或者error事件。这就足以使脚本判断目标网址是否在使用查询端口了。测试页面截图如下,因为重点在js脚本,就没有写css为页面美化。




评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值