Vấn đề thực tế: Tại sao ứng dụng “chạy tốt” vẫn bị hack?
Vừa release xong dự án web quản lý nhân sự, mình tự tin bàn giao vì mọi tính năng đều mượt. Thế nhưng chỉ 48 giờ sau, khách hàng báo tin dữ: toàn bộ dữ liệu của 2.000 nhân viên bị rao bán trên diễn đàn underground. Đau đớn hơn, hacker còn chiếm luôn quyền admin để đổi cấu hình hệ thống.
Lúc đó mình mới nhận ra một bài học xương máu. Code đúng tính năng mới chỉ là điều kiện cần. Hacker không quan tâm code của bạn đẹp hay không. Họ chỉ chú ý đến cách server phản ứng khi nhận những dữ liệu “lạ” từ form hoặc URL. Nếu bạn chỉ test bằng trình duyệt, bạn đang bỏ sót 90% những gì thực sự diễn ra ngầm định.
Phân tích nguyên nhân: Lỗ hổng đến từ đâu?
Phần lớn các lỗi như SQL Injection, XSS hay IDOR đều chung một gốc rễ: Tin tưởng tuyệt đối vào dữ liệu từ người dùng.
- SQL Injection (SQLi): Xảy ra khi bạn nối chuỗi trực tiếp đầu vào vào câu truy vấn. Chỉ cần một ký tự
'hoặc--, hacker có thể khiến database “nôn” ra toàn bộ bảng mật khẩu. - Cross-Site Scripting (XSS): Nếu bạn hiển thị dữ liệu người dùng mà quên lọc (sanitize), hacker sẽ chèn mã JavaScript độc hại. Mục tiêu thường là đánh cắp Cookie để chiếm session ngay lập tức.
- IDOR: Đây là lỗi logic phân quyền. Ví dụ, URL xem hồ sơ là
/api/user/100. Nếu mình đổi100thành1mà xem được info của sếp, đó chính là lỗ hổng IDOR nghiêm trọng.
Trình duyệt thông thường chỉ cho bạn thấy bề nổi của tảng băng chìm. Để thực sự kiểm soát dữ liệu, bạn cần một công cụ nằm ở giữa để chặn đứng, soi xét và “xào nấu” request trước khi gửi lên server.
Các phương pháp kiểm tra bảo mật hiện nay
Nhiều anh em thường loay hoay với các cách sau trước khi biết đến Burp Suite:
- Code Review thủ công: Tìm kiếm các hàm như
mysql_real_escape_string. Cách này cực kỳ tốn sức và rất dễ bỏ sót các case phức tạp. - Dùng tool scan tự động: Các extension hay OWASP ZAP rất tiện. Tuy nhiên, chúng thường báo lỗi giả (false positive) hoặc bỏ qua các lỗi logic nghiệp vụ sâu.
- Inspect Element (F12): Đây là cách sơ khai nhất. Bạn không thể sửa các header ẩn như
User-AgenthayReferermột cách linh hoạt tại đây.
Cách tốt nhất: Sử dụng Burp Suite Community Edition
Để tìm lỗi hiệu quả, mình luôn dùng Burp Suite Community Edition. Dù miễn phí, nó vẫn là công cụ tiêu chuẩn mà mọi kỹ sư bảo mật chuyên nghiệp đều phải biết.
1. Thiết lập môi trường trong 5 phút
Sau khi cài đặt, bạn cần cấu hình để trình duyệt đẩy traffic qua Burp. Thay vì chỉnh proxy hệ thống rắc rối, hãy cài extension FoxyProxy trên Chrome hoặc Firefox.
Thông số mặc định thường là:
IP: 127.0.0.1
Port: 8080
Đừng quên cài CA Certificate của Burp để bắt được traffic HTTPS. Bạn chỉ cần bật proxy, truy cập http://burp, tải chứng chỉ về và import vào trình duyệt là xong.
2. Săn SQL Injection bằng Repeater
Tính năng Repeater (Ctrl + R) giúp bạn tiết kiệm hàng giờ đồng hồ. Bạn có thể sửa request và gửi đi gửi lại nhiều lần mà không cần load lại trang web.
Giả sử bạn bắt được request tìm kiếm sản phẩm:
GET /search.php?id=15 HTTP/1.1
Hãy thử thêm dấu nháy đơn vào: id=15'. Nếu server trả về mã lỗi 500 hoặc thông báo “SQL syntax error”, đó là dấu hiệu máy chủ đang “hở sườn”. Lúc này, bạn có thể thử các payload mạnh hơn như:
id=15' OR 1=1 --
id=15' UNION SELECT 1,username,password FROM admin --
3. Kiểm tra XSS với tính năng Intercept
Với XSS, hãy bật Intercept is on trong tab Proxy. Khi bạn nhấn “Gửi” form, Burp sẽ giữ request lại giữa đường. Bây giờ, hãy thay thế nội dung comment bằng đoạn mã script:
<script>alert('Hacked by ItFromZero')</script>
Nhấn Forward để đẩy đi. Nếu màn hình hiện popup, ứng dụng của bạn đang bị hổng XSS. Đừng coi thường, hacker có thể dùng document.cookie để lấy trọn quyền truy cập của bất kỳ user nào xem comment đó.
4. Phát hiện IDOR – Lỗi logic cực kỳ phổ biến
Các công cụ scan tự động thường bó tay với IDOR. Để check lỗi này, bạn cần hai tài khoản (User A và User B).
- Dùng User A để lấy request xem info:
GET /profile?id=500. - Chuột phải chọn Send to Repeater.
- Đổi
id=500thànhid=1(ID của admin hoặc User B). - Nếu server trả về dữ liệu của người khác dù bạn đang dùng token của User A, bạn đã tìm thấy IDOR.
Bên cạnh việc vá code, bảo mật hạ tầng cũng rất quan trọng. Mình thường dùng trình tạo mật khẩu tại toolcraft.app/vi/tools/security/password-generator. Công cụ này chạy 100% trên client nên cực kỳ an toàn cho anh em quản trị server.
5. Quy trình làm việc chuyên nghiệp
Để không bị rối giữa hàng nghìn request, hãy áp dụng quy trình này:
- Target Scope: Chỉ tập trung vào domain của dự án, tránh bắt nhầm traffic từ Facebook hay Google.
- HTTP History: Duyệt qua toàn bộ tính năng trang web để Burp lưu lại dấu vết.
- Repeater & Intruder: Chọn lọc các request nhạy cảm như đổi mật khẩu hay thanh toán để test kỹ.
Làm IT không chỉ là xây dựng, mà còn là học cách bảo vệ thành quả của mình. Hãy thử cài Burp Suite và thực hành ngay trên các lab như DVWA hay WebGoat. Nếu gặp khó khăn khi cấu hình, hãy để lại comment bên dưới để mình hỗ trợ nhé.

