Tấn công Web: SQL Injection & XSS
Quảng cáo • Advertisement
📢 Sponsor Ad
Google AdSense
lesson.content.title
lesson.content.subtitle
🎯 Mục tiêu bài học
Học tấn công để biết phòng thủ. Ethical Hacking.
1. SQL Injection (SQLi) - Lỗi kinh điển
Lỗi do ghép chuỗi SQL ngây thơ.
query = "SELECT * FROM users WHERE user='" + txtName + "' AND pass='" + txtPass + "'";
Hacker nhập User: admin' --
Câu SQL thành: SELECT * FROM users WHERE user = 'admin' --' AND pass='...'
Dấu -- là comment trong SQL, nó bỏ qua đoạn kiểm tra pass phía sau. -> Hacker đăng nhập thành công với quyền Admin không cần mật khẩu!
⚠️ Demo Code (Lỗ hổng):
// Java JDBC (Nguy hiểm)
String query = "SELECT * FROM users WHERE user = '" + username + "'";
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(query);
✅ Fix Code (An toàn):
// Java JDBC (Prepared Statement)
String query = "SELECT * FROM users WHERE user = ?";
PreparedStatement pstmt = conn.prepareStatement(query);
pstmt.setString(1, username);
ResultSet rs = pstmt.executeQuery();
Phòng chống: Prepared Statement
Luôn dùng Parameter Binding (? hoặc :name). DB sẽ hiểu đó là dữ liệu, không phải code thực thi.
2. XSS (Cross-Site Scripting)
Hacker chèn mã Javascript độc hại vào web để chạy trên máy người dùng khác.
a. Stored XSS (Nguy hiểm nhất)
- Hacker post status Facebook:
Hello <script>gui_het_cookie_cho_tao()</script>. - Server lưu status này vào DB.
- Bạn lướt Newfeed, Server trả về đoạn script kia. Máy bạn chạy script -> Mất nick.
b. Reflected XSS
- Hacker gửi link:
shopee.vn/search?keyword=<script>...</script>. - Web Shopee hiển thị dòng: "Không tìm thấy kết quả cho [script...]". -> Máy bạn chạy script.
Phòng chống:
- Encode đầu ra (Biến
<thành<). - Dùng Content Security Policy (CSP).
3. CSRF (Cross-Site Request Forgery) - Mượn tay giết người
Kịch bản:
- Bạn đang đăng nhập E-banking (Session Cookie còn sống).
- Bạn vô tình vào trang web đen
phimmoi.net. - Trang web đen có 1 image ẩn:
<img src="https://bank.com/transfer?to=hacker&amount=1ty">. - Trình duyệt thấy URL thì tự động gửi Get Request kèm theo Cookie của Bank.
- Bank thấy Cookie hợp lệ -> Chuyển tiền!
Phòng chống: CSRF Token
Mỗi form gửi đi phải kèm theo một mã bí mật ngẫu nhiên (CSRF Token) mà web đen không thể biết được. Bank check không có Token -> Từ chối.
4. DDOS (Distributed Denial of Service)
Dùng mạng botnet (hàng triệu camera/máy tính ma) truy cập cùng lúc làm sập server.
- Layer 3/4 Attack: SYN Flood (làm tràn bảng kết nối TCP), UDP Flood.
- Layer 7 Attack: HTTP Flood (Gửi request tìm kiếm liên tục, bắt DB làm việc kiệt sức).
5. Các đòn hiểm khác
Reflected XSS vs DOM-based XSS
- Reflected: Mã độc từ URL -> Server -> Trả về Browser.
- DOM-based: Mã độc từ URL -> Browser xử lý (JS) -> Chạy luôn (Không qua Server). Vd:
document.write(location.hash). Rất khó chặn bằng WAF Server-side.
Clickjacking (UI Redressing)
Hacker chèn trang web Ngân hàng của bạn vào một iframe trong suốt, đè lên nút "Xem phim miễn phí".
Bạn tưởng bấm "Play" -> Thực ra là bấm "Chuyển tiền".
👉 Fix: Header X-Frame-Options: DENY (Cấm web khác nhúng mình vào iframe).
Quảng cáo • Advertisement
📢 Ad Space
Google AdSense