Tôi quản lý một website nho nhỏ (dĩ nhiên không phải toannn.com vì site này tôi dùng jenkyll nha ae). Bản tính hay soi mói nên thỉnh thoảng tôi lại coi log access xem có gì hay ho và tôi thấy mấy request nó ntn ae ạ.

cover

Đậu mán, trước đây tôi cũng gặp case tương tự rồi nên không quá khó để tôi nhận ra là có đứa nó max rảnh đang download code của tôi ae ạ. Chả hiểu để làm gì? cái site còi thôi mà :). Xử lý xong rảnh tay tôi note lại đây để ae chú ý nha,

Tình huống: dev của tôi hay dùng git để quản lý source code. Và cũng có thói quen dùng git để clone/pull code mới từ server source control về server product mỗi lần upgrade thay vì up bằng tay lên. Do vậy trên server product có thư mục .git này.

1. Dấu hiệu

Dấu hiệu như hình đó ae, có rất nhiều request vào thư mục .git. Các request này có vẻ như đang cố tình để get mấy file trong thư mục này. Và đã thành cmn công vì toàn mã 200 kìa.

GET /.git/objects/00/00000000000000000000000000000000000000 HTTP/1.1" 200 580 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36"

2. Hệ quả

Hệ quả là sau khi nó download được thư mục .git của tôi thì nó có thể dễ dàng restore lại toàn bộ source code nguyên bản từ thư mục .git này (cách làm cụ thể thì tôi trình bày ở mục 4 nha). Còn lấy code thì làm gì tôi không biết :) khi nào gặp tôi hỏi nó nha ae.

3. Cách phòng tránh

Có ae nghĩ đơn giản nhất là xóa cmn thư mục .git đi. Ok chính xác. Nhưng không tôi không muốn làm thế, tôi vẫn muốn cho dev sử dụng kiểu clone/pull code về khi upgrade bình thường. Cách làm của tôi là chặn cmn việc truy cập thư mục .git trên web server hoặc trên reserve proxy.

Tôi hay dùng nginx nên tôi thêm đoạn này vào section / trong cấu hình nginx.

location ~ /\.git {
  deny all;
}

Vậy là bất cứ thằng nào request vào .git server sẽ chặn và trả lại mã 403.

4. Tái hiện lại hiện trường - A Script kiddie

Lang thang google tôi tìm được nguyên cái project đã code sẵn rồi. Link không che đây click link 18+. 3 tool này dễ xài cực và khá hiệu quả. Để test tôi cài 1 web server sau đó upload vô đó thư mục git. Từ server khác chạy mấy tool lấy từ repo kia.

  • B1. Dùng tool Finder trong repo kia để quét.
  • B2. Dùng tool Dumper để download thư mục .git về.
  • B3. Dùng tool Extractor để restore lại code từ thư mục .git

Kết quả là 1 phát ăn ngay ae ạ, lấy nguyên được bộ source code luôn :’(

Ae chú ý khi cấu hình web server nha, đừng như tôi,