Bạn đã bao giờ thử duyệt đến đường dẫn http://yoursite.com/.git/ chưa? Nếu bạn gặp lỗi 403, thì đó là điều bình thường. Bởi vì tính năng duyệt thư mục đã chặn truy cập này, đây là tính năng bảo mật cơ bản. Tuy nhiên, nhiều file trong thư mục .git/
vẫn có thể truy cập được. Vậy nên nó cực kỳ nguy hiểm, trong bài này, mình sẽ demo cách khai thác thư mục .git cho các bạn xem nhé.
Tham gia kênh Telegram của AnonyViet 👉 Link 👈 |
Sự nguy hiểm của thư mục .git
Bất kỳ ai cũng có thể sử dụng các công cụ quét tự động như githacker để tải mã nguồn của bạn và xem toàn bộ lịch sử git. Git cũng là một hệ thống file tuân theo một số quy tắc, nên bạn rất dễ đoán các thư mục và file.
Hầu hết các dự án sử dụng master
hoặc main
làm nhánh chính, nên bạn có thể dễ dàng đoán được đường dẫn ẩn trong thư mục /.git/
. Công cụ này thậm chí còn có thể brute force các nhánh và tag.
Nếu quá trình quét thành công, bạn sẽ nhận được thư mụcresult
trên máy của mình (bạn có thể tùy chỉnh tên thư mục bằng tùy chọn --output-dir
).
Không deloy hoặc chặn truy cập thư mục .git
Thư mục .git/
có thể chứa rất nhiều thông tin, bao gồm cả mã nguồn cũng như tên, email và trong trường hợp xấu nhất là thông tin xác thực được mã hóa (ví dụ: cơ sở dữ liệu, token, key).
Bạn nên chặn hoàn toàn quyền truy cập công khai vào thư mục đó. Các giải pháp triển khai và CI/CD hiện đại tương đối dễ cấu hình và có thể xóa các thư mục không liên quan gì đến môi trường production.
Một số nhà cung cấp dịch vụ lưu trữ web (hosting) cũng chặn quyền truy cập vào thư mục này vì lý do bảo mật, nhưng không phải lúc nào những nhà cung cấp này cũng làm vậy và đó không phải là cấu hình mặc định. Vậy nên bạn cần kiểm tra kỹ cấu hình hệ thống trước khi deloy bất cứ thứ gì.
Bạn có thể thực hiện các giải pháp dưới để hệ thống của mình được an toàn hơn:
- Tắt truy cập công khai thư mục
.git/
theo mặc định - Thêm rule cấm truy cập vào thư mục trong mã nguồn, ví dụ: tệp cấu hình Apache
.htaccess
- Không triển khai các thư mục như vậy trong các thư mục chung
Nên trả về 404 cho thư mục.git/
trong cấu hình máy chủ hoặc file .htaccess:
RedirectMatch 404 /\.git
Bạn nên thêm cả hai rule nếu có thể, như hai lớp bảo mật. Trong trường hợp có người sửa đổi.htaccess
và xóa rule, thì vẫn còn rule dự phòng trong thư mục .git/
. Nhưng theo mình được biết thì việc sử dụng file .htaccess
sẽ làm chậm máy chủ Apache http.
Demo cách khai thác thư mục .git
Mình tạo 2 máy ảo là Ubuntu (Server) và Kali (Attacker). Trong máy server, mình sử dụng nginx để làm webserver, Mình tạo file index.php và commit lần đầu lên git.
Sau đó tạo file conn.php chứa mật khẩu là dữ liệu nhảy cảm và add file này vào git rồi stash thay đổi này lại.
Khi truy cập đường dẫn .git thì chúng ta sẽ bị chặn do cơ chế bảo mật của nginx.
Đó là setup cơ bản trên máy server. Giờ chúng ta sẽ tiến hành khai thác thử lỗi này.
Trên kali, các bạn chạy lệnh sau để cài đặt GitHacker:
python3 -m pip install -i https://pypi.org/simple/ GitHacker
Như các bạn thấy ở ảnh dưới, gitHacker sẽ được cài đặt trong đường dẫn /home/user/.local/bin
.
Các bạn truy cập đường dẫn này và chạy lệnh. Thay IP-SERVER bằng ip của máy server của bạn.
python3 githacker --url http://IP-SERVER/.git/ --output-folder result
Truy cập vào thư mục result, bạn sẽ thấy commit của server.
Kiểm tra log và stash.
Khôi phục lại stash đã lưu trước đó và chúng ta sẽ có file conn.php.
Vậy là mình đã khai thác thành công, đừng vì chút tiện lợi để pull repo trên production mà deloy luôn thư mục .git nhé.