Oopsie【hack the box】

news2025/1/15 2:52:21

Oopsie

解题流程
文件上传

首先开启机器后,我们先使用 nmap -sC -SV来扫描一下IP地址:

-sC:使用 Nmap 的默认脚本扫描(通常是 NSE 脚本,Nmap Scripting Engine)。这个选项会自动执行一系列常见的脚本,进行更为详细的探测,比如检查服务版本、漏洞扫描、系统信息等。

-sV:探测服务版本。这会使 Nmap 在扫描时尝试识别目标主机上运行的服务及其版本信息。

image-20250108134914420

可以看到开放了两个端口:22和80端口,既然开放了80端口,说明我们可以使用web浏览器进行访问。

那么我们此时使用kali自带的火狐浏览器进行访问,访问对应的IP地址,显示页面如下:

image-20250108135513872

页面继续往下划,我们看到了这样的一段话,我们需要登录才能访问这个访问:

image-20250108135643408

那么此时我们就可以猜到这个页面应该应该是存在子目录能够进行登录操作的,那么此时我们就需要找到这个子目录。此时我们我们使用burpsuit自带的抓包功能进行看一下页面的子目录有哪些,由于burpsuit是kali自带的,操作起来也方便。为了方便操作,这里我直接打开burpsuit自带的浏览器:

image-20250108140437674

输入目标IP之后,burpsuit可以不进行拦截操作,因为burpsuit会自动收集打开过程中的数据包,就在旁边的 HTTP history中,抓到的数据包如下所示:

image-20250108140751653

image-20250108141717291

此时我们看到有个 cdn-cgi/login的目录,很像我们需要的登录目录,那么此时我们访问一下这个目录,显示页面如下,果真就是我们想要的登录窗口:

image-20250108141246160

尝试了一些弱口令爆破之后,没有成功,发现下方还有一个 Login as Guest的选项,我们可以当做游客进行登录:

image-20250108141948550

进入之后,我们就可以看到游客界面的导航栏了

image-20250108142115771

查看导航栏,发现有一个 uploads的栏目,难道可以进行文件上传吗?我们点进去看看,发现需要超级管理员用户才可以访问:

image-20250108142456089

那么我们就需要想办法来提升用户的权限,有一个方法就是右键页面,然后打开检查元素:

image-20250108145000214

然后我们就可以查看用户的cookie信息,我们观察到,有role=guest 和 user=2233。我们可以假设,如果我们以某种方式知道超级用户的数量admin 作为 user 变量,我们也许能够访问上传页面:

image-20250108145134467

然后返回刚才的 Account栏目信息,根据上面的url信息,发现此时发id=2,那么我们尝试一下id=1会发生什么?

image-20250108145658983

修改id=1,我们成功知道了adminid值,此时我们就可以尝试修改一下cookie值来尝试提高用户的权限:

image-20250108150114631

此时我们修改了cookie的值,然后刷新一下页面,发现我们已经拥有了上传文件的权限:

image-20250108150303723

现在我们已经可以访问上传表单了,我们可以尝试上传 PHP 反向 shell。对于本题,我们将使用 /webshells/php/php-reverse-shell.php,这里提供了下载地址,然后将该PHP文件上传:

image-20250108185051739

好了到了这一步,现在我们需要找到刚刚上传的php文件所在的目录,我们可以自己猜测目录位置,这里我使用gobuster来暴力破解一下目录名:

image-20250108190230114

gobuster一下子就找到了 uploads目录,然后尝试看一下该目录的内容,发现我们没有查看该目录的权限,但是我们可以尝试访问一下我们上传到该目录的文件:

image-20250108190402053

反弹shell

首先,我们建立一个 netcat的连接,如下图所示:

image-20250108190654616

然后我们在网页中访问我们上传的文件的地址:

image-20250109173920415

然后就可以发现我们成功监听到了(这里需要注意的是,我们在此过程的每个页面访问到需要修改cookie值,包括上传和重新访问,否则监听不到呜呜呜,所以推荐上传的过程中每次都使用burpsuit修改一下cookie值):

image-20250109173836977

好,现在我们我们成功拿到shell了,现在为了使页面看起来更加美观,我们使用下述命令:

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

image-20250109174755643

提升权限

接下来,我们查看一下 .php的文件后缀,看是否有敏感信息泄露,输入命令 find / -type f -name *.php 2>/dev/null

image-20250109175410979

作为用户 www-data,该角色对系统的访问受到限制。由于网站正在使用 PHP 和 SQL,我们可以进一步枚举可能泄露的 Web 目录
或配置错误。经过一番搜索,我们可以在 /var/www/html/cdn-cgi/login目录下找到一些 php 文件。我们可以手动查看所有页面的源代码,也可以尝试搜索使用 grep 工具可以得到有趣的字符串。输入命令:cat * | grep -i passw*

image-20250109180211360

我们确实得到了密码:MEGACORP_4dm1n!! 。我们可以通过以下方式检查系统上的可用用户读取 /etc/passwd 文件,以便我们可以尝试重用此密码,输入 cat /etc/passwd

image-20250109180510975

发现一个可用用户robert,此时我们切换到robert用户,结果发现登录不上…:

怎么判断用户是否可用?

格式:用户名:密码:用户ID:组ID:描述信息:家目录:登录Shell

检查 UID 是否大于等于 1000。

检查登录Shell 是否有效(非 /sbin/nologin/bin/false)。

检查用户的家目录是否存在。

image-20250109181642729

那我们再找找,发现在db.php中找到了密码:

image-20250109181817936

赶紧使用这个密码试一下,没有问题,这个密码是正确的:

image-20250109181940628

然后我们在该用户的主目录找到了一个user.txt文件,我们查看一下,发现了第一个flag:

好了现在还有一个flag应该是在root用户中,我们尝试提权来查看一下。

在运行任何权限提升或枚举脚本之前,让我们检查一下用于提升权限的基本命令sudoid 等权限:

image-20250109182857304

我们观察到用户 robertbugtracker 组的一部分。让我们尝试看看里面是否有任何二进制文件,输入命令:find / -group bugtracker 2>/dev/null

image-20250109183221930

我们发现一个名为 bugtracker 的文件。我们检查它的权限和文件类型ls -la /usr/bin/bugtracker && file /usr/bin/bugtracker

image-20250109183527856

该二进制文件上设置了一个 suid,这是一个很有用的利用路径。

SUID 是一个强大的工具,它允许文件以文件所有者(通常是 root)身份执行,从而使某些需要特权的程序能够由普通用户执行。

当一个文件具有 SUID 权限时,无论哪个用户执行该文件,该文件将以文件所有者的身份运行,而不是以执行文件的用户身份运行。

如果文件的所有者是 root 用户,那么任何人执行该文件时,都会以 root 用户的身份来执行。

然后我们运行该应用程序观察其行为:

image-20250109184736056

该工具接受用户输入作为将使用 cat 命令读取的文件名,但是,它没有指定文件 cat 的完整路径,因此我们可以利用它。
我们将导航到 /tmp 目录并创建一个名为 cat 的文件,其中包含以下内容:

/bin/sh

然后我们设置改文件的执行权限:

chmod +x cat

为了利用这一点,我们可以将 /tmp 目录添加到 PATH 环境变量中,/tmp 目录将被添加到 PATH 变量的最前面:

export PATH=/tmp:$PATH

然后我们检查一下环境变量:

echo $PATH

image-20250109185853751

然后我们再次执行一下该二进制文件,提权成功:

image-20250109190031353

然后我们找到 /root目录下的 root.txt,由于cat查看不了,那我们使用more来查看一下:

image-20250109190454590

最后成功获取root用户的flag。

题目答案
task 1

With what kind of tool can intercept web traffic?(用什么工具可以拦截网络流量?)

答案:proxy

task 2

What is the path to the directory on the webserver that returns a login page?(返回登录页面的网络服务器上的目录路径是什么?)

答案:/cdn-cgi/login

task 3

What can be modified in Firefox to get access to the upload page?(可以在 Firefox 中修改哪些内容才能访问上传页面?)

答案:cookie

task 4

What is the access ID of the admin user?(管理员用户的访问 ID 是什么?)

答案:34322

task 5

On uploading a file, what directory does that file appear in on the server?(上传文件时,该文件出现在服务器上的哪个目录中?)

答案:/uploads

task 6

What is the file that contains the password that is shared with the robert user?(包含与 robert 用户共享的密码的文件是什么?)

答案:db.php

task 7

What executible is run with the option “-group bugtracker” to identify all files owned by the bugtracker group?(使用选项“-group bugtracker”运行什么可执行文件来识别 bugtracker 组拥有的所有文件?)

答案:find

task 8

Regardless of which user starts running the bugtracker executable, what’s user privileges will use to run?(无论哪个用户开始运行 bugtracker 可执行文件,都将使用什么用户权限来运行?)

答案:root

task 9

What SUID stands for?(SUID 代表什么?)

答案:Set owner User ID

task 10

What is the name of the executable being called in an insecure manner?(以不安全方式调用的可执行文件的名称是什么?)

答案:cat

task 11

Submit user flag(提交用户flag)

答案:f2c74ee8db7983851ab2a96a44eb7981

task 12

Submit root flag(提交root的flag)

答案:af13b0bee69f8a877c3faf667f7beacf

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2276760.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

V少JS基础班之第四弹

一、 前言 第四弹内容是操作符。 本章结束。第一个月的内容就完成了, 是一个节点。 下个月我们就要开始函数的学习了。 我们学习完函数之后。很多概念就可以跟大家补充说明了。 OK,那我们就开始本周的操作符学习 本系列为一周一更,计划历时6…

【STM32-学习笔记-7-】USART串口通信

文章目录 USART串口通信Ⅰ、硬件电路Ⅱ、常见的电平标准Ⅲ、串口参数及时序Ⅳ、STM32的USART简介数据帧起始位侦测数据采样波特率发生器 Ⅴ、USART函数介绍Ⅵ、USART_InitTypeDef结构体参数1、USART_BaudRate2、USART_WordLength3、USART_StopBits4、USART_Parity5、USART_Mode…

Docker 安装开源的IT资产管理系统Snipe-IT

一、安装 1、创建docker-compose.yaml version: 3services:snipeit:container_name: snipeitimage: snipe/snipe-it:v6.1.2restart: alwaysports:- "8000:80"volumes:- ./logs:/var/www/html/storage/logsdepends_on:- mysqlenv_file:- .env.dockernetworks:- snip…

达梦8-DMSQL程序设计学习笔记1-DMSQL程序简介

1、DMSQL程序简介 DMSQL程序是达梦数据库对标准SQL语言的扩展,是一种过程化SQL语言。在DMSQL程序中,包括一整套数据类型、条件结构、循环结构和异常处理结构等,DMSQL程序中可以执行SQL语句,SQL语句中也可以使用DMSQL函数。 DMSQ…

NLP中常见的分词算法(BPE、WordPiece、Unigram、SentencePiece)

文章目录 一、基本概念二、传统分词方法2.1 古典分词方法2.2 拆分为单个字符 三、基于子词的分词方法(Subword Tokenization)3.1 主要思想3.2 主流的 Subword 算法3.3 Subword 与 传统分词方法的比较 四、Byte Pair Encoding (BPE)4.1 主要思想4.2 算法过…

第三十六章 Spring之假如让你来写MVC——拦截器篇

Spring源码阅读目录 第一部分——IOC篇 第一章 Spring之最熟悉的陌生人——IOC 第二章 Spring之假如让你来写IOC容器——加载资源篇 第三章 Spring之假如让你来写IOC容器——解析配置文件篇 第四章 Spring之假如让你来写IOC容器——XML配置文件篇 第五章 Spring之假如让你来写…

PyTorch 深度学习框架快速入门 (小土堆)

PyTorch 深度学习框架快速入门 深度学习框架常用模块数据集存取图片数据处理库 —— PILOS 模块实例 Tensorboard 记录机器学习的过程Transform 进行图像变换数据集的下载DataLoaderModule 自定义网络前向传播卷积层卷积简单应用 最大池化非线性层线性层 简单的整合基于现有网络…

FPGA的 基本结构(Xilinx 公司Virtex-II 系列FPGA )

以Xilinx 公司Virtex-II 系列FPGA 为例,其基本结构由下图所示。它是主要由两大部分组成:可编程输入/输出(Programmable I/Os)部分和内部可配置(Configurable Logic)部分。 可编程输入/输出(I/Os…

【Elasticsearch】批量操作:优化性能

🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/?__c=1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,精通Java编程,高并发设计,Springboot和微服务,熟悉Linux,ESXI虚拟化以及云原生Docker和K8s,热衷于探…

C++、Haskell 和 Rust 三种语言实现 Faster Suffix Sort 算法的比较

对 C、Haskell 和 Rust 三种语言实现 Faster Suffix Sort 算法的比较: 1. 编程效率 C: 优点:C 提供了丰富的标准库,如 std::sort,可以方便地结合自定义比较函数对后缀数组进行排序。使用 Lambda 表达式可以简洁地实现…

校园跑腿小程序---轮播图,导航栏开发

hello hello~ ,这里是 code袁~💖💖 ,欢迎大家点赞🥳🥳关注💥💥收藏🌹🌹🌹 🦁作者简介:一名喜欢分享和记录学习的在校大学生…

uniapp实现H5页面内容居中与两边留白,打造类似微信公众号阅读体验

在 UniApp 中,由于需要兼容多端应用,我们通常使用 rpx 作为尺寸单位。然而,在某些情况下,如需要实现内容居中且两边留白时,直接使用 rpx 可能会带来一些限制。这时,我们可以考虑使用 px 或 rem 等单位&…

【Uniapp-Vue3】pages.json页面路由globalStyle的属性

项目的全局配置在pages.json中。 一、导航栏设置 二、下拉刷新设置 下拉就可以看到设置的样式 三、上拉触底 这个页面中,向下滑动页面到底部就会输出“到底了” 现在将触底距离设置为500 走到半路就会输出“到底了”

Type-C双屏显示器方案

在数字化时代,高效的信息处理和视觉体验已成为我们日常生活和工作的关键需求。随着科技的进步,一款结合了便携性和高效视觉输出的设备——双屏便携屏,逐渐崭露头角,成为追求高效工作和娱乐体验人群的新宠。本文将深入探讨双屏便携…

Linux下部署Redis(本地部署超详细)

非docker 1、下载Redis 历史版本: http://download.redis.io/releases 我的: http://download.redis.io/releases/redis-7.0.5.tar.gz 2.安装教程 1.Redis是基于c语言编写的需要安装依赖,需要安装gcc yum install gcc-c 2.查看gcc版…

使用 Multer 上传图片到阿里云 OSS

文件上传到哪里更好? 上传到服务器本地 上传到服务器本地,这种方法在现今商业项目中,几乎已经见不到了。因为服务器带宽,磁盘 IO 都是非常有限的。将文件上传和读取放在自己服务器上,并不是明智的选择。 上传到云储存…

UE5 打包项目

UE5 打包项目 flyfish 通过 “文件”->“打开项目”,然后在弹出的对话框中选择项目文件(通常是以.uproject为后缀的文件) 选择目标平台: 在 UE5 主界面中,找到 “平台”(Platforms)。根据…

自然语言转 SQL:通过 One API 将 llama3 模型部署在 Bytebase SQL 编辑器

使用 Open AI 兼容的 API,可以在 Bytebase SQL 编辑器中使用自然语言查询数据库。 出于数据安全的考虑,私有部署大语言模型是一个较好的选择 – 本文选择功能强大的开源模型 llama3。 由于 OpenAI 默认阻止出站流量,为了简化网络配置&#…

杭州铭师堂的云原生升级实践

作者:升学e网通研发部基建团队 公司介绍 杭州铭师堂,是一个致力于为人的全面发展而服务的在线教育品牌。杭州铭师堂秉持“用互联网改变教育,让中国人都有好书读”的使命,致力于用“互联网教育”的科技手段让更多的孩子都能享有优…

STM32 FreeRTOS移植

目录 FreeRTOS源码结构介绍 获取源码 1、 官网下载 2、 Github下载 源码结构介绍 源码整体结构 FreeRTOS文件夹结构 Source文件夹结构如下 portable文件夹结构 RVDS文件夹 MemMang文件夹 FreeRTOS在基于寄存器项目中移植步骤 目录添加源码文件 工程添加源码文件 …