Please note this challenge does not require SSH brute forcing.
Use your skills to access the user and root account!
This room is part of the Turmoil series
Bước 1: Thu thập thông tin
Dò quét cổng dịch vụ
nmap -sV -sC <ip_targert>
Nhận thấy chỉ mở cổng 80 và 22 ngoài ra không còn cổng nào khác cả. Mình tiến hành đến bước số 2
Bước 2: Khai thác dịch vụ web
Mình vào website thấy đây là web giới thiệu apache2
Mình nhìn lên xuống không có gì đặc biệt cả cho đến khi kiểm tra mã nguồn của nó xem sao phát hiện đoạn code này chứa ảnh thm.jpg
Mình tải ảnh này về. Đồng thời mình thực hiện tìm kiếm url khác bằng gobuster
Nhưng không có gì cả. Mình tiếp tục mở bức ảnh mình tải về nhưng nó không mở lên được vậy nguyên nhân là gì nhỉ ?
Mình kiểm tra mã hex của ảnh bằng lệnh xxd: xxd thm.jpg | head
Phát hiện đây là định dạng của tệp ảnh PNG không phải JPG mình tiến hành thay đổi header của tệp tin này cho đúng định dạng, bạn có thể tìm một ảnh jpg chuẩn trích xuất header để sửa bằng một số công cụ hexeditor online
Còn ở đây mình sửa bằng lệnh xxd luôn
Mình thu được ảnh gốc mở ảnh lên phát hiện có đường dẫn khác là /th1s_1s_h1dd3n
Mình truy cập vào website theo đường dẫn này thì phát hiện một trang như ảnh
Mình kiểm tra mã nguồn của nó
Một gợi ý cho chúng ta, hãy tìm ra con số bảo mật trong khoảng từ 0-99 vậy làm sao để thử nó khi không có chỗ nào điền, mình nghĩ ngay đế url, mình có thể gửi dữ liệu lên server bằng phương thức GET sử dụng một URL PARAMETER kiểu khai thác lỗ hổng LFI
ví dụ: http://url?<parameter_word>=
Bạn có thể tìm ra giá trị <parameter_word> chính xác bằng cách sử dụng burp, mình có một bài về hướng dẫn cách tìm rồi nhé, bạn có thể xem lại, mình tìm ra từ khóa là secret mình thử giá trị 11 thấy hiển thi trả về là không đúng
Mình viết chương trình bằng python để request url trên thử giá trị 0-99 để xem giá trị nào thỏa mãn
import requests
url = ‘ip_target‘
host=’http://{}/th1s_1s_h1dd3n/?secret={}‘
for i in range (100):
r = request.get(url.format(host, i))
if not ‘That is wrong!‘ in r.text:
print (“Found secret: {}”.format(i))
print (r.text)
Mình chạy code thu được số mình muốn và một key, và key này chắc chắn là mật khẩu để giải mã gì đó, vì chúng ta không thể brute force bài này mà.
Mình nghĩ đến việc đó là bức ảnh thm.jpg liệu mình đã phân tích hết, mình kiểm tra nó bằng công cụ steghide xem có gì được ẩn giấu trong nó không, phát hiện nó yêu cầu một mật khẩu để xem thông tin, mình thử luôn key thu được ở trên và thành công phát hiện tệp tin giấy là hidden.txt
Mình liền trích xuất tệp tin ra để xem nội dung
Phát hiện một username, nhưng định dạng của nó không giống như một username thông thường, mình thử giải mã nó kiểu ROT13 và thu được user chuẩn
Nhưng lấy mật khẩu ở đâu, mình thử lại key hồi đầu tìm được xem có phải mật khẩu không kết quả là không được, dường như tưởng chừng đến đây bế tắc, nhưng thật may mắn, bức ảnh hình miệng cười ở phần mô tả cho mình một chú ý, liệu đây có phải là một ẩn giấu gì trong nó không. Mình liền tải nó về
Tương tự mình thử kiểm tra thông tin của nó xem có ẩn giấu gì không bằng steghide
Phát hiện có một tệp tin password.txt được ẩn dấu ở đây, mình liền giải mã và đọc tệp tin đó thu được một mật khẩu
Mình đăng nhập ssh thử với thông tin thu được ở trên và thành công
Bước 3: Khai thác dịch vụ ssh
Mình kiểm tra thư mục chính user, phát hiện cờ đầu tiên mình đọc nó
Tìm cách leo thăng, mình thử dùng một số lệnh như sudo -l, find, …
Khi dùng lệnh find mình phát hiện hệ thống này có dùng phiên bản screen-4.5.0 khá là cũ rồi và đây là điểm để chúng ta khai thác leo thăng
Bước 4: Leo thăng
Mình tìm trên mạng mã lỗi khai thác screen-4.5.0: GNU Screen 4.5.0 – Local Privilege Escalation (PoC) – Linux local Exploit (exploit-db.com)
Mình thực hiện đến thư mục /tmp của user, tải tệp tin khai thác về máy victim, và chạy
Thành công leo thăng, việc còn lại là đọc cờ cuối cùng.
0 Comments