Server-Side Request Forgery (SSRF)
🎯 Mục tiêu học: hiểu rủi ro khi API nhận 1 URL/địa chỉ từ client rồi tự gọi tới đó ở phía server — kẻ tấn công có thể lợi dụng để "mượn" server làm bàn đạp truy cập tài nguyên nội bộ.
Rủi ro là gì
Nhiều API có tính năng nhận URL từ client (webhook, tải ảnh từ link, xem trước liên kết...) rồi server tự gọi HTTP request tới URL đó. Nếu không kiểm soát, kẻ tấn công đưa vào URL nội bộ (localhost, IP private, hoặc endpoint metadata của nhà cung cấp cloud) để server vô tình truy cập tài nguyên đáng lẽ không thể truy cập từ bên ngoài.
POST /v1/webhooks/validate
Body: { "callbackUrl": "https://doi-tac.com/hook" } ← trường hợp bình thường
Body: { "callbackUrl": "http://169.254.169.254/latest/meta-data/" }
← địa chỉ metadata nội bộ của nhà cung cấp cloud — nếu server tự GET
tới đây, có thể lộ thông tin/quyền truy cập nội bộ nhạy cảmChecklist kiểm tra
Cách kiểm tra
| Mã TC | Nội dung | Kỳ vọng |
|---|---|---|
| TC-SSRF-01 | Với mọi field nhận URL từ client, thử đưa vào địa chỉ nội bộ (localhost, 127.0.0.1, địa chỉ IP private 10.x/172.16.x/192.168.x) | Bị từ chối, không cho server gọi tới địa chỉ nội bộ |
| TC-SSRF-02 | Thử đưa vào địa chỉ metadata service của nhà cung cấp cloud (nếu biết hệ thống host ở đâu) | Bị chặn — đây là mục tiêu tấn công SSRF phổ biến và nguy hiểm nhất |
| TC-SSRF-03 | Thử redirect: URL hợp lệ ban đầu nhưng chuyển hướng (301/302) sang địa chỉ nội bộ | Server không tự động theo redirect tới địa chỉ nội bộ |
📌 Ghi nhớ
SSRF chỉ xuất hiện ở những API có tính năng "nhận URL từ client và tự gọi tới đó" — không phải API nào cũng có rủi ro này, nhưng cần rà soát kỹ mọi field nhận URL/link/callback trong toàn bộ hệ thống.
📖 Thuật ngữ Anh–Việt (mục này)
Đề thi dùng thuật ngữ tiếng Anh — nhớ đúng cụm bên trái. Bấm 🔊 để nghe từng từ, hoặc "Đọc tất cả" để nghe lần lượt Anh → (vài giây) → Việt.
| Thuật ngữ (EN) | Nghĩa & ghi nhớ nhanh |
|---|---|
| SSRF | Server-Side Request Forgery — server bị lợi dụng để gọi request tới địa chỉ ngoài ý muốn |
| Metadata service | Dịch vụ nội bộ của nhà cung cấp cloud chứa thông tin cấu hình/quyền truy cập của máy chủ |
| Private IP range | Dải địa chỉ IP nội bộ (10.x, 172.16.x, 192.168.x) không nên truy cập được từ bên ngoài |
📎 Nội dung do maiqai.com biên soạn dựa trên OWASP API Security Top 10 (2023, CC BY-SA 4.0), diễn giải lại bằng tiếng Việt kèm ví dụ minh hoạ riêng.