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

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


http://www.mrgr.cn/news/83589.html

相关文章:

  • docker的数据卷和自定义镜像
  • Dockerfile 构建java镜像并运行部署java项目
  • 《系统爆破:MD5易破,后台登录可爆破?》
  • 工业视觉2-相机选型
  • 啥!GitHub Copilot也免费使用了
  • Unity + Firebase + GoogleSignIn 导入问题
  • Go跨平台UI开发之wails的使用(1)项目初始化
  • 26个开源Agent开发框架调研总结(2)
  • 一步迅速学会 B+ 树 的核心概念
  • SpringAOP前置——代理模式
  • 机器视觉3-线性分类器
  • 机器学习数据预处理preprocessing
  • 《自动驾驶与机器人中的SLAM技术》ch7:基于 ESKF 的松耦合 LIO 系统
  • ubuntu22.4 ROS2 安装gazebo(环境变量配置)
  • nginx-配置指令的执行顺序!
  • 计算机网络 笔记 网络层1
  • 【DB-GPT】开启数据库交互新篇章的技术探索与实践
  • Vue2+OpenLayers调用WMTS服务初始化天地图示例(提供Gitee源码)
  • vite5.x配置https
  • Windows 安装 Docker 和 Docker Compose
  • C#中的运算符和类--06
  • C# 虚方法和抽象方法的区别,重写和重载的区别,参数修饰符(ref、out、in、params)--09
  • [Unity]MacOS下开发Unity
  • 计算机组成原理(1)
  • 英语语法精简框架
  • stable diffusion 量化学习笔记