[Vulnhub靶机] DriftingBlues: 5
[Vulnhub靶机] DriftingBlues: 5靶机渗透思路及方法(个人分享)
靶机下载地址:
https://download.vulnhub.com/driftingblues/driftingblues5_vh.ova
靶机地址:192.168.67.24
攻击机地址:192.168.67.3
一、信息收集
1.使用?arp-scan?命令扫描网段内存活的主机,以获取靶机ip地址
arp-scan -I?指定网卡 -l
2.使用?nmap?工具扫描靶机开放端口、服务版本以及系统版本,得到开放端口22、80及其服务ssh、http
nmap?-sV -O?靶机地址
? ? ? ? -sV? ? ? ? 探测主机服务版本
? ? ? ? -O? ? ? ? ?识别主机操作系统
?
3.访问网站,发现网站提示是WordPress网站,通过插件也可以查看出该网站是WordPress网站,通过查看分析,没有发现什么其他有用的信息
WordPress是一个免费开源的内容管理系统(CMS),最初是为博客而设计的,但随着时间的推移,它已经发展成一个功能强大且灵活的网站建设工具
?
?
4.使用dirsearch工具扫描网站目录,发现了大量的可访问的目录和文件,其中包括WordPress网站的登录页面 /wp-login.php
dirsearch -u?靶机URL
? ? ? ? -u????????指定目标URL
?
?
5.?尝试使用?wpscan?工具对登录使用的用户名进行爆破,枚举出五个用户名,将用户名写入usernames.txt 内
wpscan --url http://driftingblues.box/blog --enumerate u
? ? ? ? --url ? ? ? ? ? ? ? ? ? ? ? ?目标URL
? ? ? ? --enumerate ? ? ? ? ? enumerate参数指定u,枚举站点用户名
?
?
?
6.本想利用kali内自带的字典继续爆破密码,但是发现爆破不成功。利用 cewl 工具爬取网站的字典,将爬取的密码写入到passwords.txt文件
cewl -m 5?-w pass.txt?目标URL
? ? ? ? -m????????用于指定最终生成字典中字符最小长度,只有超过指定长度才会记录到字典中
? ? ? ? -w????????将爬取到的字符串写入到指定文档
7.继续利用?wpscan 工具及已经获得的用户和密码字典进行爆破,获得登录使用的用户的密码(gill / interchangeable)
wpscan --url http://192.168.67.24/ -U usernames.txt -P passwords.txt
? ? ? ? --url? ? ? ? ? ? ? ? ????????目标URL
? ? ? ? -U? ? ? ? ? ? ? ? ? ? ? ? ? ?指定用户字典
? ? ? ? -P? ? ? ? ? ? ? ? ? ? ? ? ? ?指定密码字典
二、漏洞利用
1.利用得到的账户密码进行登录,本想尝试向网站内写入木马,可惜发现没有权限。在 Media?界面内发现一张在主页没有的图片,比较可疑,点击后发现图片文件URL,下载下来进行查看
2.使用?wget 命令下载图片文件(其实该图片文件存放的目录早在使用 dirsearch?工具对目录进行扫描时就已经发现了,并且可以访问,但是当时没有注意到该图片)
wget?指定文件URL? ? ? ? ? ? ? ? ? ? ? ? //下载指定文件
3.使用?exiftool?工具对文件的EXIF信息进行解析,发现了图片内隐藏的提示信息,使用 ssh 登录的密码?59583hello
EXIF信息,是可交换图像文件的缩写,是专门为数码相机的照片设定的,可以记录数码照片的属性信息和拍摄数据。EXIF可以附加于JPEG、TIFF、RIFF等文件之中,为其增加有关数码相机拍摄信息的内容和索引图或图像处理软件的版本信息。
三、远程登录
1.利用得到的用户字典以及密码,使用?hydra?工具尝试暴力破解ssh服务,得到用户名/密码(gill / 59583hello)
hydra -L usernames.txt -p?59583hello?192.168.67.24?ssh
? ? ? ? -L ? ? ? ? ? ? ?指定用户字典的路径
? ? ? ? -p? ? ? ? ? ? ? 指定密码
? ? ? ? ssh ? ? ? ? ? ?用于暴力破解SSH服务器
2.使用得到用户名密码进行?ssh?远程连接,成功登录
四、提权
1.使用命查找具有特殊权限的文件,但是没发现什么可以利用的点。但在成功登录后习惯性使用?ls?命令时查看到当前目录下的文件,发现一个后缀问?kdbx?的文件,文件名为 keyfile.kdbx 且该文件所有者为 gill 用户
.kdbx文件是一种密码管理器数据库文件的后缀。KeePass是一款流行的开源密码管理器,它使用.kdbx文件格式来存储用户的登录凭据、密码和其他敏感信息。这种文件格式采用加密算法保护数据的安全性,确保只有授权的用户可以访问其中的内容。通过KeePass软件或与其兼容的密码管理工具,用户可以打开、编辑和管理.kdbx文件中的密码和其他敏感数据。
2.使用 scp?命令将 keyfile.kdbx 文件下载到攻击机
从 远程?复制到?本地
scp?用户名@ip地址:远程文件路径?本地文件路径
3.使用?keepass2john?工具将 keyfile.kdbx 文件中密码的哈希值导入到 hash.txt 文件中,然后使用?john?工具爆破哈希值,得到密码?porsiempre
keepass2john?KeePass数据库文件(.kdbx)> hash文件名
? ? ? ? >? ? ? ? 将输出重定向到指定的文件中
keepass2john是一个密码破解工具,用于将KeePass数据库文件(.kdbx)转换为john the ripper密码破解工具可识别的格式。KeePass数据库文件是经过加密的,其中包含用户的登录凭据和密码等敏感信息。使用keepass2john工具,可以将.kdbx文件转换为john the ripper工具支持的.hash格式,以便进行密码破解尝试。
john --wordlist=密码字典路径 文件名
? ? ? ? --wordlist????????字典模式,从?文件或标准输入中读取词汇(指定字典)
John the Ripper(简称John)是一款开源的密码破解工具,它用于测试和评估密码的强度。John可以进行多种类型的密码破解,包括字典攻击、暴力破解、彩虹表攻击等。
/usr/share/wordists/rockyou.txt?是kali系统自带的密码文件,默认是个压缩包需要自行解压
4.利用得到的密码尝试登录root用户,发现登录失败。尝试利用得到的密码打开?keyfile.kdbx?文件,打开后得到了6个名字很像密码的密钥文件,但依旧无法登录root用户
KeeWeb官方网站:KeeWeb
5.使用?scp?命令将?papy?工具上传到靶机
从?本地?复制到?远程
scp?本地文件路径 用户名@ip地址:远程文件路径
6.给 pspy?工具可执行的权限,使用 pspy?工具进行监听,查看系统定时任务中有没有可疑的程序。发现 root?目录下有一个 key.sh?脚本每分钟自动执行,但是该程序的内容我们无法查看,
pspy工具地址:GitHub - DominicBreuker/pspy: Monitor linux processes without root permissions
pspy 是一款用于监视 Linux 进程活动的轻量级工具。它能够监视系统上的进程,并记录有关这些进程活动的信息,如创建时间、执行命令、进程所有者等。
7.使用?scp?命令将?linpeas.sh?工具上传到靶机
8.给?linpeas.sh?工具可执行的权限,使用?linpeas.sh?工具对靶机进扫描和分析,发现了一个比较特殊的目录文件?/keyfolder ,对其进行查看后也没有发现什么
linpeas.sh工具地址:GitHub - BRU1S3R/linpeas.sh
linpeas.sh工具是一款用于 Linux 系统的自动化安全审计和特权升级脚本工具。
linpeas.sh 脚本工具会对系统进行全面的扫描和分析,检查各种方面的安全设置和配置,包括文件权限、SUID/SGID 文件、系统服务、环境变量、计划任务、用户账户、网络连接等等。它还会检测常见的漏洞和攻击痕迹,并提供了漏洞修复和加固建议。
9.根据命名,猜测?/keyfolder 目录作为储存密码/密钥的目录文件,而 key.sh?脚本将密码/密钥写入到了之前我们发现在KeeWeb中查看得到的6个密码/密钥文件中。
我们尝试将6个文件名写入到?/keyfolder?目录中,创建后等了好一会,发现同时创建好像不行,删掉,一个一个创建。在创建?fracturedocean 文件等了一会后,发现多出了一个?rootcreds.txt 文件,查看该文件的内容,得到了root用户的密码?imjustdrifting31
10.使用 su?命令切换到root用户,输入密码后成功提权至root权限(该靶机root用户好像无法直接ssh登录,可能做了限制)
其他
提权至root权限后,我们终于可以查看 key.sh 文件,查看一下?key.sh?脚本到底执行了什么
查看后我们发现该脚本是一个bash脚本
这段代码使用了 ls 命令来列出 /keyfolder?目录中的所有文件,并将结果与字符串 fracturedocean?进行比较。如果存在一个名为 fracturedocean?的文件(因为是查看 /keyfolder 目录,所以该目录下只能有 fracturedocean?文件),则条件为真,if 语句块中的命令将会被执行。在这个例子中,if 语句块中有三个命令,分别是将 "root creds"、空行和 "imjustdrifting31" 写入 "/keyfolder/rootcreds.txt" 文件中。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!