Oopsie【hack the box】

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

金山WPS Android面试题及参考答案

说说你所知道的所有集合?并阐述其内部实现。 在 Android 开发(Java 语言基础上)中有多种集合。 首先是 List 集合,主要包括 ArrayList 和 LinkedList。 ArrayList 是基于数组实现的动态数组。它的内部有一个数组来存储元素&#x…

快速导入请求到postman

1.确定请求,右键复制为cURL(bash) 2.postman菜单栏Import-Raw text,粘贴复制的内容保存,请求添加成功

Mybatis原理简介

看到Mybatis的框架图,可以清晰的看到Mybatis的整体核心对象,我更喜欢用自己的图来表达Mybatis的整个的执行流程。如下图所示: 原理详解: MyBatis应用程序根据XML配置文件创建SqlSessionFactory,SqlSessionFactory在根…

【redis初阶】初识Redis

目录 一、初识Redis 二、盛赞 Redis 三、Redis 特性 3.1 速度快 ​编辑3.2 基于键值对的数据结构服务器 3.3 丰富的功能 3.4 简单稳定 🐶 3.6 持久化(Persistence) 3.7 主从复制(Replication) 3.8 高可用(H…

【云商城】高性能门户网构建

第3章 高性能门户网构建 网站门户就是首页 1.OpenResty 百万并发站点架构 ​ 1).OpenResty 特性介绍 ​ 2).搭建OpenResty ​ 3).Web站点动静分离方案剖析 2.Lua语法学习 ​ 1).Lua基本语法 3.多级缓存架构实战 ​ 1).多级缓存架构分析 用户请求网站,最开始…

【GESP】C++三级考试大纲知识点梳理, (1)二进制数据编码

GESP C三级官方考试大纲中,共有8条考点,本文针对C(1)号知识点进行总结梳理。 (1)了解二进制数据编码:原码、反码、补码。 全文详见:https://www.coderli.com/gesp-3-exam-syllabus-data-encodin…

B+树的原理及实现

文章目录 B树的原理及实现一、引言二、B树的特性1、结构特点2、节点类型3、阶数 三、B树的Java实现1、节点实现2、B树操作2.1、搜索2.2、插入2.3、删除2.4、遍历 3、B树的Java实现示例 四、总结 B树的原理及实现 一、引言 B树是一种基于B树的树形数据结构,它在数据…

毕业项目推荐:基于yolov8/yolov5/yolo11的动物检测识别系统(python+卷积神经网络)

文章目录 概要一、整体资源介绍技术要点功能展示:功能1 支持单张图片识别功能2 支持遍历文件夹识别功能3 支持识别视频文件功能4 支持摄像头识别功能5 支持结果文件导出(xls格式)功能6 支持切换检测到的目标查看 二、数据集三、算法介绍1. YO…

用Kimi做研究:准实验设计的智能解决方案

目录 1.研究策略设计 2.过程框架设计 3.背景变量 4.细节设计 准实验设计是一种介于实验与观察研究之间的研究方法,准实验设计是在无法完全控制实验条件的情况下进行因果关系的探索。与传统实验设计相比,准实验设计不具备随机分配实验对象到各处理组的…

【前端】【HTML】入门基础知识

参考视频&#xff1a;【狂神说Java】HTML5完整教学通俗易懂_哔哩哔哩_bilibili 一、基本结构 二、基本标签 <h1>&#xff1a;一级标题&#xff0c;通常用于页面的主标题&#xff0c;字体较大且醒目。 <h2>&#xff1a;二级标题&#xff0c;用于副标题或主要章节标…

DVT:消除视觉变换器中的噪声伪影

人工智能咨询培训老师叶梓 转载标明出处 近年来&#xff0c;视觉变换器&#xff08;Vision Transformers&#xff0c;简称ViTs&#xff09;在多种视觉任务中取得了卓越的性能&#xff0c;成为现代视觉基础模型的主流架构之一。然而&#xff0c;这些模型在特征图中存在一种网格…

OpenCV的双边滤波函数

OpenCV的双边滤波函数cv2.bilateralFilter是一种用于图像处理的强大工具&#xff0c;它能够在去除噪声的同时保持边缘的清晰度。以下是对该函数的详细说明&#xff1a; 一、函数原型 python cv2.bilateralFilter(src, d, sigmaColor, sigmaSpace[, dst[, borderType]])二、参…

项目实战——使用python脚本完成指定OTA或者其他功能的自动化断电上电测试

前言 在嵌入式设备的OTA场景测试和其他断电上电测试过程中&#xff0c;有的场景发生在夜晚或者随时可能发生&#xff0c;这个时候不可能24h人工盯着&#xff0c;需要自动化抓取串口日志处罚断电上电操作。 下面的python脚本可以实现自动抓取串口指定关键词&#xff0c;然后触发…

IT面试求职系列主题-人工智能(三)

13&#xff09;你对超参数的理解是什么&#xff1f; 在机器学习中&#xff0c;超参数是决定和控制整个训练过程的参数。这些参数的示例包括学习率、隐藏层、隐藏单元、激活函数等。这些参数是模型的外部参数。选择好的超参数可以产生更好的算法。 14&#xff09;解释隐马尔可夫…

深度剖析ETHERCAT转CCLINK网关与ethercat通讯协议的连接细节

在某汽车零部件制造工厂的自动化生产线升级项目中&#xff0c;部分关键设备采用了支持 ETHERCAT 总线的 PLC 进行控制&#xff0c;而工厂原有的一些设备则遵循 CCLINK 协议标准。由于这两种协议之间无法直接通信&#xff0c;导致生产线的数据交互受阻&#xff0c;难以实现整体的…

链式二叉树,递归的暴力美学

目录 1.链式二叉树概念 2.链式二叉树的实现 3.先序遍历 4.中序遍历 5.后序遍历 6.求链式二叉树的结点个数 7.链式二叉树的叶子结点个数 8.求二叉树的k层的结点个数 9.链式二叉树求深度 10.求值为x的结点 11.链式二叉树的销毁 12.二叉树的层序遍历 13.判断二叉树是否…

AI是IT行业的变革力量,还是“职业终结者”?

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;今天给大家分享一篇文章&#xff01;并提供具体代码帮助大家深入理解&#xff0c;彻底掌握&#xff01;创作不易&#xff0c;如果能帮助到大家或者给大家一些灵感和启发&#xff0c;欢迎收藏关注哦 &#x1f495; 目录 AI是…

基于华为ENSP的OSPF数据报文保姆级别详解(3)

本篇博文摘要 &#x1f31f; 基于华为ensp之OSPF数据报文——头部信息、Hello包、DR/BDR选举、DBD包等保姆级别具体详解步骤&#xff1b;精典图示举例说明、注意点及常见报错问题所对应的解决方法 引言 &#x1f4d8; 在这个快速发展的技术时代&#xff0c;与时俱进是每个IT人的…

如何用SQL语句来查询表或索引的行存/列存存储方式|OceanBase 用户问题集锦

一、问题背景 自OceanBase 4.3.0版本起&#xff0c;支持了列存引擎&#xff0c;允许表和索引以行存、纯列存或行列冗余的形式创建&#xff0c;且这些存储方式可以自由组合。除了使用 show create table命令来查看表和索引的存储类型外&#xff0c;也有用户询问如何通过SQL语句…

重生之我在异世界学编程之算法与数据结构:深入堆篇

大家好&#xff0c;这里是小编的博客频道 小编的博客&#xff1a;就爱学编程 很高兴在CSDN这个大家庭与大家相识&#xff0c;希望能在这里与大家共同进步&#xff0c;共同收获更好的自己&#xff01;&#xff01;&#xff01; 本文目录 正文一、堆的基本概念二、堆的存储表示三…