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 Applications

1.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ạngTên lỗ hổng
A01Injection
A02Broken Authentication
A03Sensitive Data Exposure
A04XML External Entities (XXE)
A05Broken Access Control
A06Security Misconfiguration
A07Cross-Site Scripting (XSS)
A08Insecure Deserialization
A09Using Components with Known Vulnerabilities
A10Insufficient Logging & Monitoring
Thứ hạngTên lỗ hổngGhi chú
A01Broken Access Control
A02Cryptographic Failures
A03Injection
A04Insecure DesignMới
A05Security Misconfiguration
A06Vulnerable and Outdated Components
A07Identification and Authentication FailuresMới
A08Software and Data Integrity FailuresMới
A09Security Logging and Monitoring Failures
A10Server-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 ảoMục đíchNguồn tải
Kali LinuxCông cụ tấn công, kiểm thửkali.org
OWASP-BWAMôi trường mục tiêu có lỗ hổngsourceforge.net/projects/owaspbwa
Windows 7Thực hành trên môi trường Windowsdeveloper.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ăngChromeFirefoxEdge/IESafari
Switching User Agents
Edit and Replay RequestsKhông
Editing Cookies
Editing Local Storage
Disable CSSKhôngKhông
Disable Javascript
View Headers
Native Screenshot
Offline ModeKhông
Encode/DecodeKhôngKhô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

9. Câu hỏi ôn tập và trả lời