Bài 1: Tổng quan
1. Khảo sát kiến thức nền
1.1 Ứng dụng Web
Ứng dụng web là các phần mềm chạy trên nền tảng trình duyệt, sử dụng giao thức HTTP/HTTPS để giao tiếp giữa client và server. Các công nghệ phổ biến bao gồm:
Backend (Server-side):
- Ngôn ngữ lập trình: PHP, Java, Python, Node.js, C#/.NET
- Cơ sở dữ liệu quan hệ: MySQL, PostgreSQL, Microsoft SQL Server, Oracle, SQLite
- Cơ sở dữ liệu NoSQL: MongoDB, CouchDB, Cassandra, HBase
Frontend (Client-side):
- HTML, CSS, JavaScript
- Framework: React, Angular, Vue.js, jQuery
Định dạng dữ liệu:
- XML, JSON
1.2 Ứng dụng Di động
Ứng dụng di động có thể phát triển theo nhiều hướng:
Native (Thuần nền tảng):
- Android: Java, Kotlin
- iOS: Objective-C, Swift
Cross-platform (Đa nền tảng):
- Flutter (Dart)
- React Native (JavaScript)
Kiến trúc tổng thể:
Mobile App --> REST API --> Backend Services
--> Cloud Resources
--> Legacy Applications
--> Partner Applications1.3 Một số dạng tấn công phổ biến vào ứng dụng
- Injection: SQL Injection, Command Injection, LDAP Injection
- XSS (Cross-Site Scripting): Chèn mã JavaScript độc hại vào trang web
- CSRF (Cross-Site Request Forgery): Giả mạo yêu cầu từ phía người dùng
- Broken Authentication: Khai thác cơ chế xác thực yếu
- Path Traversal / LFI: Đọc file hệ thống không được phép
- XXE (XML External Entity): Khai thác parser XML
- SSRF (Server-Side Request Forgery): Server bị dùng để truy cập tài nguyên nội bộ
1.4 CTF (Capture The Flag) là gì?
CTF là hình thức thi đấu an toàn thông tin, trong đó người chơi phải tìm và khai thác lỗ hổng bảo mật để thu thập các “flag” (chuỗi ký tự đặc biệt). CTF giúp người học:
- Thực hành kỹ năng tấn công trong môi trường hợp pháp, kiểm soát
- Rèn luyện tư duy phân tích và giải quyết vấn đề bảo mật
- Làm quen với các công cụ và kỹ thuật pentest thực tế
Các thể loại CTF phổ biến: Web Exploitation, Reverse Engineering, Forensics, Cryptography, Binary Exploitation (Pwn).
2. OWASP Top 10
OWASP (Open Web Application Security Project) là tổ chức phi lợi nhuận công bố danh sách 10 rủi ro bảo mật phổ biến nhất trong ứng dụng web.
| Thứ hạng | Tên lỗ hổng |
|---|---|
| A01 | Injection |
| A02 | Broken Authentication |
| A03 | Sensitive Data Exposure |
| A04 | XML External Entities (XXE) |
| A05 | Broken Access Control |
| A06 | Security Misconfiguration |
| A07 | Cross-Site Scripting (XSS) |
| A08 | Insecure Deserialization |
| A09 | Using Components with Known Vulnerabilities |
| A10 | Insufficient Logging & Monitoring |
| Thứ hạng | Tên lỗ hổng | Ghi chú |
|---|---|---|
| A01 | Broken Access Control | |
| A02 | Cryptographic Failures | |
| A03 | Injection | |
| A04 | Insecure Design | Mới |
| A05 | Security Misconfiguration | |
| A06 | Vulnerable and Outdated Components | |
| A07 | Identification and Authentication Failures | Mới |
| A08 | Software and Data Integrity Failures | Mới |
| A09 | Security Logging and Monitoring Failures | |
| A10 | Server-Side Request Forgery (SSRF) | Từ khảo sát |
3. Mục tiêu và Nội dung môn học
3.1 Mục tiêu
Môn học trang bị kiến thức cơ bản về bảo mật, bảo vệ dữ liệu và an toàn thông tin, hướng đến khả năng:
- Hiểu và nhận biết các lỗ hổng bảo mật phổ biến
- Thực hành kiểm thử xâm nhập (penetration testing)
- Biết cách bảo vệ ứng dụng web và di động
3.2 Nội dung chi tiết
- Công cụ hỗ trợ tìm kiếm lỗ hổng, kiểm thử tự động
- Đảm bảo an toàn ứng dụng di động (Android/iOS)
- Kỹ thuật tấn công và thâm nhập ứng dụng web: XSS, CSRF, LFI, SQL Injection
- Một số giải pháp bảo vệ (WAF và các kỹ thuật tương tự)
- Checklist kiểm thử
- Cách viết báo cáo kiểm thử
4. Chuẩn bị môi trường thực hành
4.1 Máy ảo cần thiết
| Máy ảo | Mục đích | Nguồn tải |
|---|---|---|
| Kali Linux | Công cụ tấn công, kiểm thử | kali.org |
| OWASP-BWA | Môi trường mục tiêu có lỗ hổng | sourceforge.net/projects/owaspbwa |
| Windows 7 | Thực hành trên môi trường Windows | developer.microsoft.com |
| bWAPP / Bee-box | Ứng dụng dễ bị tấn công thay thế | vulnhub.com |
4.2 Phần mềm ảo hóa
- VMware Workstation / VMware Player
- Oracle VirtualBox (miễn phí)
- KVM (trên Linux)
5. OWASP Broken Web Applications (BWA)
5.1 Giới thiệu
OWASP-BWA là một máy ảo (VM) được đóng gói sẵn, chứa hàng chục ứng dụng web có lỗ hổng, được thiết kế cho mục đích học tập và kiểm thử. Đây là môi trường lab chuẩn để thực hành các kỹ thuật tấn công và phòng thủ.
5.2 Đối tượng sử dụng
- Người học bảo mật ứng dụng web
- Kiểm tra kỹ thuật đánh giá thủ công
- Kiểm tra công cụ scan tự động
- Kiểm tra công cụ phân tích mã nguồn (SAST)
- Quan sát và phân tích hành vi tấn công web
- Kiểm tra WAF (Web Application Firewall)
5.3 Phân loại ứng dụng trong BWA
Các ứng dụng hướng dẫn có giải thích từng bước, phù hợp cho người mới bắt đầu:
- OWASP WebGoat - ứng dụng Java với các bài học tương tác
- OWASP WebGoat.NET - phiên bản .NET
- OWASP Mutillidae II - ứng dụng PHP rất nhiều lỗ hổng
- OWASP Security Shepherd - nền tảng học bảo mật dạng CTF
- OWASP Bricks - ứng dụng PHP module hóa
- OWASP RailsGoat - phiên bản Ruby on Rails
Ứng dụng mô phỏng thực tế nhưng được cố ý tạo ra lỗ hổng:
- bWAPP (Buggy Web Application) - hơn 100 loại lỗ hổng khác nhau
- Damn Vulnerable Web Application (DVWA) - PHP/MySQL, phổ biến nhất
- Ghost - ứng dụng blog có lỗ hổng
- Magical Code Injection Rainbow (MCIR) - tập trung vào injection
Phiên bản cũ (có lỗ hổng thực sự đã từng tồn tại) của CMS phổ biến:
- WordPress - phiên bản cũ có nhiều CVE đã biết
- Joomla - tương tự
- Ứng dụng phục vụ kiểm thử các công cụ scan tự động (Nikto, ZAP, Burp Suite)
- OWASP AppSensor - giả lập mạng xã hội, tự động log tất cả các hành vi tấn công
6. Trình duyệt và Công cụ
6.1 OWASP Mantra
OWASP Mantra là trình duyệt dựa trên Firefox/Chromium, được tích hợp sẵn nhiều add-on bảo mật. Đây là công cụ phổ biến trong giảng dạy bảo mật web.
Các tính năng tích hợp:
- Tamper Data: bắt và chỉnh sửa HTTP request trước khi gửi đi
- Live HTTP Headers: xem header HTTP theo thời gian thực
- HttpFox: phân tích HTTP traffic
- HackBar: thay đổi input trực tiếp trên thanh công cụ
- Cookie Manager+: xem và sửa cookie
- Web Developer: vô hiệu hóa CSS, JS, xem source
- Proxy settings tích hợp
6.2 So sánh tính năng giữa các trình duyệt
| Tính năng | Chrome | Firefox | Edge/IE | Safari |
|---|---|---|---|---|
| Switching User Agents | Có | Có | Có | Có |
| Edit and Replay Requests | Có | Có | Có | Không |
| Editing Cookies | Có | Có | Có | Có |
| Editing Local Storage | Có | Có | Có | Có |
| Disable CSS | Có | Có | Không | Không |
| Disable Javascript | Có | Có | Có | Có |
| View Headers | Có | Có | Có | Có |
| Native Screenshot | Có | Có | Có | Có |
| Offline Mode | Có | Có | Có | Không |
| Encode/Decode | Có | Có | Không | Không |
6.3 Các Add-on Firefox hữu ích khác
- XSS Me: tự động kiểm tra lỗ hổng XSS
- SQL Inject Me: tự động kiểm tra SQL Injection
- FoxyProxy: quản lý proxy nhanh (tích hợp với Burp Suite/ZAP)
- iMacros: tự động hóa thao tác trên trình duyệt
- FirePHP: debug PHP qua HTTP header
- RESTClient: kiểm tra REST API (GET, POST, PUT, DELETE)
- Wappalyzer: nhận diện công nghệ sử dụng của website (CMS, framework, server…)
- Passive Recon: thu thập thông tin public (DNS, Whois)
7. Kiến thức nền cần ôn tập
7.1 HTML cơ bản
Hiểu cấu trúc HTML là nền tảng để phân tích và tấn công ứng dụng web.
Các khái niệm cần nắm:
- Thẻ Tag: cấu trúc
<tag attribute="value">nội dung</tag> - Attribute: thuộc tính của thẻ, ví dụ
id,class,name,action,method - Form: cơ chế gửi dữ liệu từ người dùng lên server
<!DOCTYPE html>
<html>
<head>
<title>Login Form</title>
</head>
<body>
<form id="loginForm" method="POST" action="/login">
<label for="username">Username:</label>
<input type="text" id="username" name="username" required>
<label for="password">Password:</label>
<input type="password" id="password" name="password" required>
<button type="submit">Đăng nhập</button>
</form>
</body>
</html>7.2 JavaScript và jQuery cơ bản
JavaScript được dùng để xử lý logic phía client, kiểm tra input người dùng trước khi gửi lên server.
Ví dụ kiểm tra form với JavaScript thuần:
document.getElementById("loginForm").addEventListener("submit", function(e) {
var username = document.getElementById("username").value.trim();
var password = document.getElementById("password").value;
if (username === "") {
alert("Username không được để trống!");
e.preventDefault(); // Ngăn form gửi đi
return;
}
if (password.length < 6) {
alert("Password phải có ít nhất 6 ký tự!");
e.preventDefault();
return;
}
});Ví dụ với jQuery:
$(document).ready(function() {
$("#loginForm").on("submit", function(e) {
var username = $("#username").val().trim();
var password = $("#password").val();
if (!username || !password) {
alert("Vui lòng điền đầy đủ thông tin!");
e.preventDefault();
return false;
}
if (password.length < 6) {
alert("Password quá ngắn!");
e.preventDefault();
return false;
}
});
});7.3 AJAX cơ bản
AJAX (Asynchronous JavaScript and XML) cho phép gửi request lên server mà không reload trang. Hiểu AJAX là quan trọng vì nhiều ứng dụng hiện đại dùng AJAX để giao tiếp với API.
// Ví dụ gửi login bằng AJAX (fetch API hiện đại)
document.getElementById("loginForm").addEventListener("submit", function(e) {
e.preventDefault();
var data = {
username: document.getElementById("username").value,
password: document.getElementById("password").value
};
fetch("/api/login", {
method: "POST",
headers: {
"Content-Type": "application/json"
},
body: JSON.stringify(data)
})
.then(response => response.json())
.then(result => {
if (result.success) {
window.location.href = "/dashboard";
} else {
alert("Sai tên đăng nhập hoặc mật khẩu!");
}
})
.catch(error => console.error("Lỗi:", error));
});8. Luật An Toàn Thông Tin Mạng
Điều 7 - Các hành vi bị nghiêm cấm (Luật số 86/2015/QH13, hiệu lực 01/07/2016)
Điều 8 - Xử lý vi phạm
Người vi phạm có thể bị:
- Xử lý kỷ luật
- Xử phạt vi phạm hành chính
- Truy cứu trách nhiệm hình sự
- Bồi thường thiệt hại theo quy định pháp luật