Tải bản đầy đủ (.pdf) (31 trang)

Bài tập lớn môn an toàn mạng (65)

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.28 MB, 31 trang )

HỌC VIỆN CƠNG NGHỆ BƯU CHÍNH VIỄN THƠNG
KHOA CƠNG NGHỆ THƠNG TIN

Học phần : An tồn mạng
Bài báo cáo:

Tìm hiểu về công cụ OWASP ZAP
Cài đặt và quét một số lỗ hổng phổ biến
Giảng viên hướng dẫn:
Sinh viên thực hiện:
Mã sinh viên:
Nhóm học phần:
Email:

TS. Đặng Minh Tuấn
Hồng Quế Long
B18DCAT141
Nhóm 02
longhq.B18AT141@
stu.ptit.edu.vn

Hà Nội, 12/2021


Mục lục
Danh mục các hình vẽ ....................................................................................................... 3
Danh mục các từ viết tắt và giải nghĩa ............................................................................ 4
LỜI MỞ ĐẦU.................................................................................................................... 5
Chương 1 Kiểm thử bảo mật ........................................................................................... 6
1. Một số kiến thức cơ bản: .......................................................................................... 6
2. Kiểm thử xâm nhập: ................................................................................................. 6


3. Quá trình kiểm thử xâm nhập: ................................................................................ 7
Chương 2 Cơng cụ chẩn đốn bảo mật OWASP ZAP .................................................. 7
1. Giới thiệu: .................................................................................................................. 7
2. Cài đặt và cấu hình ZAP: ......................................................................................... 8
3. Duy trì một phiên:..................................................................................................... 9
4. Giao diện ZAP trên máy tính: ............................................................................... 10
5. Quét chế độ tự động:............................................................................................... 12
6. Quét ứng dụng bằng cách thủ công: ..................................................................... 13
7. Các tính năng bổ sung: ........................................................................................... 16
Chương 3 Thực hành với ZAP tấn công một số lỗ hổng OWASP ............................. 17
1. Cấu hình ZAP và quét một số trang web: ............................................................ 17
2. Tấn công lỗ hổng IDOR: ........................................................................................ 19
3. Tấn công vào JWT:................................................................................................. 22
Chương 4 Đánh giá về OWASP ZAP ............................................................................ 27
1. Một số ưu điểm, nhược điểm của ZAP: ................................................................. 27
2. So sánh với công cụ Burp Suite: ............................................................................ 28
3. Kết luận: .................................................................................................................. 29
Tài liệu tham khảo .......................................................................................................... 30

2


Danh mục các hình vẽ
Hình 1 Vị trí của ZAP ......................................................................................................... 8
Hình 2 ZAP kết nối với Proxy trong mạng ......................................................................... 8
Hình 3 Các phiên bản ZAP cho từng HĐH ........................................................................ 9
Hình 4 Phiên bản ZAP Docker ........................................................................................... 9
Hình 5 Duy trì phiên ZAP................................................................................................. 10
Hình 6 Khơng gian làm việc ZAP..................................................................................... 11
Hình 7 Quét tự động ......................................................................................................... 12

Hình 8 Các cờ trạng thái ................................................................................................... 13
Hình 9 Quét thủ công ........................................................................................................ 14
Hình 10 Hiển thị cảnh báo trong trình duyệt .................................................................... 16
Hình 11 Quản lí các tiện ích bổ sung ................................................................................ 16
Hình 12 Thiết lập Proxy .................................................................................................... 17
Hình 13 Quét trang web demo.owasp-juice.shop ............................................................. 18
Hình 14 Các thông tin về trang web ................................................................................. 18
Hình 15 Các trạng thái rủi ro ............................................................................................ 19
Hình 16 Đăng nhập thành công ........................................................................................ 20
Hình 17 Các thông tin trả về ............................................................................................. 21
Hình 18 Thông tin về người dùng khác ............................................................................ 21
Hình 19 Trang bình chọn .................................................................................................. 23
Hình 20 Cookie và access token có được ......................................................................... 24
Hình 21 Thay đổi "alg" ..................................................................................................... 24
Hình 22 Thay đổi "admin" ................................................................................................ 25
Hình 23 Access token mới và Send .................................................................................. 25
Hình 24 Kết quả trả về ...................................................................................................... 26
Hình 25 Kết quả trang bình chọn ...................................................................................... 26

3


Danh mục các từ viết tắt và giải nghĩa
ZAP
OWASP
Pentesting
EC
AJAX
HUD
JWT

API
IANA
IDOR

Zed Attack Proxy
The Open Web Application
Security Project
Penetration Testing
Electronic Commerce
Asynchronous JavaScript
And XML
Heads Up Display
JSON Web Token
Application Programming
Interface
Internet Assigned Numbers
Authority
Insecure Direct Object
Reference

Dự án Bảo mật Ứng dụng Web Mở
Kiểm thử xâm nhập
Thương mại điện tử
JavaScript và XML không đồng bộ
Hiển thị cảnh báo
Mã thông báo web JSON
Giao diện lập trình ứng dụng
Tổ chức cấp phát số hiệu Internet
Tham chiếu đối tượng trực tiếp
không an toàn


4


LỜI MỞ ĐẦU
CNTT đóng vai trị quan trọng trong chiến lược cạnh tranh và phát triển của
một doanh nghiệp (DN). Tuy vậy, cùng với những phát triển, doanh nghiệp luôn
phải đối mặt với các nguy cơ bị tấn công như từ chối dịch vụ, thay đổi nội dung
các trang web, lấy trộm các thông tin trong cơ sở dữ liệu… có thể gây thiệt hại
nặng nề về tài chính và uy tín của DN. Khi bạn hoặc team mình develop ra một
ứng dụng Web thì bạn có biết là, ứng dụng Web đó đã có các biện pháp bảo mật
hay chưa không ? Nếu một lỗ hổng tồn tại trong ứng dụng web của bạn, thì rất dễ
phát sinh ra các trường hợp trang web của bạn bị giả mạo, bị đánh sập, hoặc thậm
chí là sẽ bị rị rỉ thơng tin cá nhân. Ví dụ dễ hiểu nhất là, hình dung trường hợp một
site EC của một công ty mà bị sập thì ta sẽ hiểu được vấn đề ở đây nghiêm trọng
như thế nào. Tuy nhiên, đáng tiếc là chúng ta lại thường không biết về các lỗ hổng
của ứng dụng Web mà chúng ta xây dựng lên.
Nếu trước đây các cuộc tấn công của tin tặc đa phần chỉ muốn thể hiện khả
năng thì hiện nay, các cuộc tấn công đang dịch chuyển sang các mục tiêu tài chính,
chính trị. Vì vậy, các yêu cầu về bảo mật cho hệ thống ngày càng được quan tâm
sâu sắc, trở thành một trong những ưu tiên đầu tư hàng đầu của DN cũng như các
cơ quan chính phủ trong thời gian gần đây.
Ở bài này, mình muốn giới thiệu cơng cụ chẩn đốn bảo mật "OWASP
ZAP". Bằng cách sử dụng OWASP ZAP, bạn có thể kiểm tra lỗ hổng của ứng dụng
web. Và quan trọng nhất là, bạn hoàn tồn có thể sử dụng nó miễn phí.

5


Chương 1 Kiểm thử bảo mật

1. Một số kiến thức cơ bản:
Kiểm thử bảo mật phần mềm là quá trình đánh giá và thử nghiệm một hệ
thống để phát hiện ra các rủi ro và lỗ hổng bảo mật của hệ thống và dữ liệu của nó.
Đánh giá là việc phân tích và phát hiện ra các lỗ hổng bảo mật mà không cố gắng
thực sự khai thác các lỗ hổng đó, thử nghiệm là việc phát hiện và cố gắng khai
thác các lỗ hổng.
Kiểm thử bảo mật thường được chia nhỏ ra, tùy theo loại lỗ hổng đang
được kiểm tra hoặc loại kiểm tra đang được thực hiện. Phổ biến là:
• Đánh giá lỗ hổng bảo mật - Hệ thống được qt và phân tích các vấn đề bảo
mật.
• Kiểm thử thâm nhập - Hệ thống trải qua quá trình phân tích và tấn cơng từ
những cuộc tấn cơng độc hại mơ phỏng.
• Kiểm thử thời gian chạy - Hệ thống trải qua quá trình phân tích và kiểm tra
bảo mật từ người dùng cuối.
• Đánh giá mã nguồn – Mã nguồn hệ thống trải qua quá trình xem xét và
phân tích chi tiết, tìm kiếm cụ thể các lỗ hổng bảo mật.
Lưu ý rằng đánh giá rủi ro, thường được liệt kê như một phần của kiểm tra
bảo mật, khơng bao gồm trong danh sách này. Đó là bởi vì đánh giá rủi ro thực sự
không phải là một bài kiểm tra mà là phân tích mức độ nghiêm trọng được nhận
thức của các rủi ro khác nhau (bảo mật phần mềm, bảo mật nhân sự, bảo mật phần
cứng, v.v.) và bất kỳ bước giảm thiểu nào đối với những rủi ro đó.
2. Kiểm thử xâm nhập:
Kiểm thử thâm nhập (pentesting) được thực hiện như thể người kiểm tra là
một kẻ tấn cơng bên ngồi với mục tiêu, đột nhập vào hệ thống và đánh cắp dữ
liệu hoặc thực hiện một số loại tấn công từ chối dịch vụ.
Pentesting có lợi thế là chính xác hơn vì nó có ít kết quả giả hơn (kết quả
báo cáo một lỗ hổng thực sự khơng xuất hiện), nhưng có thể tốn thời gian để chạy.
Pentesting cũng được sử dụng để kiểm tra các cơ chế phòng thủ, xác minh
kế hoạch phản ứng và xác nhận việc tuân thủ chính sách bảo mật.
Tự động pentesting là một phần quan trọng của xác thực nguyên vẹn liên

tục. Nó giúp phát hiện ra các lỗ hổng mới cũng như hồi quy cho các lỗ hổng trước
đó trong một mơi trường thay đổi nhanh chóng và q trình phát triển có thể mang
tính cộng tác và phân phối cao.

6


3. Quá trình kiểm thử xâm nhập:
Cả hai phương pháp pentesting thủ công và tự động đều được sử dụng,
thường kết hợp với nhau, để kiểm tra mọi thứ từ máy chủ, đến mạng, thiết bị, đến
điểm cuối. Ở đây, chúng ta tập trung vào ứng dụng web hoặc trang web
pentesting.
Pentesting thường diễn ra theo các giai đoạn sau:
• Khám phá - Người thử nghiệm cố gắng tìm hiểu về hệ thống đang được thử
nghiệm. Bao gồm việc cố gắng xác định phần mềm nào đang được sử dụng,
điểm cuối nào tồn tại, bản vá lỗi nào được cài đặt, v.v. Nó cũng bao gồm
việc tìm kiếm trang web để tìm nội dung ẩn, các lỗ hổng đã biết và các dấu
hiệu điểm yếu khác.
• Tấn cơng - Người thử nghiệm cố gắng khai thác các lỗ hổng đã biết hoặc bị
nghi ngờ để chứng minh chúng tồn tại.
• Báo cáo - Người kiểm tra báo cáo lại kết quả kiểm tra của họ, bao gồm các
lỗ hổng, cách họ khai thác chúng và mức độ khó khăn của việc khai thác
cũng như mức độ nghiêm trọng của việc khai thác.
Mục tiêu cuối cùng của pentesting là tìm kiếm các lỗ hổng để có thể giải
quyết các lỗ hổng này. Nó cũng có thể xác minh rằng một hệ thống không dễ bị
tổn thương bởi một lớp đã biết hoặc một khiếm khuyết cụ thể; hoặc, trong trường
hợp các lỗ hổng bảo mật đã được báo cáo là đã được sửa chữa, hãy chắc chắn rằng
hệ thống khơng cịn dễ bị tấn cơng bởi khiếm khuyết đó.

Chương 2 Cơng cụ chẩn đốn bảo mật OWASP ZAP

1. Giới thiệu:
Cơng cụ chẩn đoán bảo mật "OWASP ZAP" được tạo bởi một cộng đồng
quốc tế có tên là The Open Web Application Security Project (OWASP). OWASP
được điều hành bởi tổ chức có tên The OWASP Foundation (Quỹ OWASP) tại
Hoa Kỳ và được thành lập vào năm 2001. Ngày nay thì đã có hơn 200 chi nhánh
trên khắp thế giới. Tại Nhật Bản cũng có OWASP Nhật Bản. Mục đích của The
OWASP Foundation là bảo vệ các ứng dụng Web, vì vậy các thành viên của
OWASP đang thực hiện hơn 120 dự án. Và OWASP ZAP là tool được tạo ra bên
trong hơn 120 dự án đó, để cho bất cứ ai cũng có thể kiểm tra các lỗ hổng của ứng
dụng web một cách miễn phí.
OWASP ZAP là một cơng cụ miễn phí và phổ biến được duy trì bởi hằng
trăm nghìn tình nguyện viên trên tồn thế giới. Nó là cơng cụ bổ ích khi kiểm tra
bảo mật thủ cơng vì nó giúp chúng ta tìm ra các lỗ hỏng bảo mật trên website một
cách tự động.
7


ZAP là được gọi là "man-in-the-middle proxy", nó đứng giữa trình duyệt
của người test và ứng dụng web, nó có thể ngăn chặn và kiểm trả các thông điệp
được gửi đi, sửa đổi và gửi tiếp các thơng điệp đó đến đích.

Hình 1 Vị trí của ZAP
Và nếu một network proxy khác được sử dụng, ZAP có thể được cấu hình
để connect với proxy đó.

Hình 2 ZAP kết nối với Proxy trong mạng
ZAP cung cấp chức năng cho nhiều cấp độ kỹ năng - từ nhà phát triển,
người thử nghiệm mới thử nghiệm bảo mật, đến các chuyên gia thử nghiệm bảo
mật. ZAP có các phiên bản cho từng hệ điều hành chính và Docker, vì vậy bạn
khơng bị ràng buộc với một hệ điều hành duy nhất. Chức năng bổ sung có sẵn

miễn phí từ nhiều tiện ích bổ sung trong ZAP Marketplace, có thể truy cập từ bên
trong ứng dụng khách ZAP.
Bởi vì ZAP là mã nguồn mở, mã nguồn có thể được kiểm tra để xem chính
xác chức năng được triển khai như thế nào. Bất kỳ ai cũng có thể tình nguyện làm
việc trên ZAP, sửa lỗi, thêm tính năng, tạo yêu cầu để đưa các bản sửa lỗi vào dự
án và tác giả các tiện ích bổ sung để hỗ trợ các tình huống chuyên biệt.
2. Cài đặt và cấu hình ZAP:
ZAP cài đặt được trên hầu hết các hệ điều hành hiện nay như Windows,
Linux, MacOS… và có các phiên bản hỗ trợ Docker.
Điều đầu tiên cần làm là cài đặt ZAP trên hệ thống mà bạn định thực hiện
pentest. Tải xuống trình cài đặt thích hợp từ trang Tải xuống.

8


Hình 3 Các phiên bản ZAP cho từng HĐH

Hình 4 Phiên bản ZAP Docker
Lưu ý rằng ZAP yêu cầu Java 8+ để chạy. Các phiên bản Docker không yêu
cầu bạn cài đặt Java.
Khi quá trình cài đặt hoàn tất, hãy khởi chạy ZAP và đọc các điều khoản
cấp phép. Nhấp vào Đồng ý nếu bạn chấp nhận các điều khoản và ZAP sẽ hồn tất
q trình cài đặt, sau đó ZAP sẽ tự động bắt đầu.
3. Duy trì một phiên:
Khi mới bắt đầu ZAP, bạn sẽ được hỏi có muốn duy trì phiên ZAP hay
không. Theo mặc định, các phiên ZAP luôn được ghi vào cơ sở dữ liệu HSQLDB
với tên và vị trí mặc định. Nếu bạn khơng tiếp tục phiên, các tệp đó sẽ bị xóa khi
bạn thốt khỏi ZAP.
Nếu bạn chọn duy trì một phiên, thông tin phiên sẽ được lưu trong cơ sở dữ
liệu cục bộ để bạn có thể truy cập nó sau này và bạn sẽ có thể cung cấp tên và vị

trí tùy chỉnh để lưu tệp.

9


Hình 5 Duy trì phiên ZAP
Mặc định, chọn No, i do not want persist this session at this moment in
time, sau đó chọn Start. Phiên ZAP sẽ khơng lưu phiên hiện tại.
4. Giao diện ZAP trên máy tính:
Giao diện trang chủ của ZAP được chia thành các thành phần:
1. Thanh Menu - Cung cấp quyền truy cập vào nhiều công cụ tự động và
thủ công.
2. Thanh công cụ - Bao gồm các nút cung cấp khả năng truy cập dễ dàng
vào các tính năng thường được sử dụng nhất.
3. Cửa sổ Cây - Hiển thị cây Trang web và cây Tập lệnh.
4. Cửa sổ Workspace - Hiển thị các yêu cầu, phản hồi và tập lệnh và cho
phép bạn chỉnh sửa chúng.
5. Cửa sổ Thông tin - Hiển thị chi tiết của các công cụ tự động và thủ
công.
6. Chân trang - Hiển thị tóm tắt các cảnh báo được tìm thấy và trạng thái
của các cơng cụ chính.

10


Hình 6 Không gian làm việc ZAP
Trong khi sử dụng ZAP, bạn có thể nhấp vào Help trên Thanh Menu hoặc
nhấn F1 để truy cập trợ giúp từ Hướng dẫn sử dụng ZAP dành cho máy tính. Nó
cũng có sẵn trực tuyến.
ZAP cũng hỗ trợ API và chức năng dòng lệnh mạnh mẽ.

QUAN TRỌNG: Bạn chỉ nên sử dụng ZAP để tấn cơng ứng dụng mà bạn
có quyền kiểm tra bằng một cuộc tấn cơng có hiệu lực. Bởi vì đây là một mô
phỏng hoạt động giống như một cuộc tấn cơng thực sự, thiệt hại thực tế có thể xảy
ra đối với chức năng, dữ liệu của trang web, v.v. Nếu bạn lo lắng về việc sử dụng
ZAP, bạn có thể ngăn nó gây hại (mặc dù chức năng của ZAP sẽ bị giảm đáng kể)
bằng cách chuyển sang chế độ an toàn.
Để chuyển ZAP sang chế độ an toàn, hãy nhấp vào mũi tên trên menu thả
xuống chế độ trên thanh cơng cụ chính để mở rộng danh sách thả xuống và chọn
Safe Mode.

11


5. Quét chế độ tự động:
Cách đơn giản nhất để bắt đầu sử dụng ZAP là thông qua tab Quick Start.
Quick Start là một tiện ích bổ sung ZAP được tự động đưa vào khi bạn cài đặt
ZAP.
Để chạy Quick Start Automated Scan:
1. Khởi động ZAP và nhấp vào tab Quick Start của Cửa sổ làm việc.
2. Nhấp vào nút Automated Scan.
3. Trong hộp URL to attack, hãy nhập URL đầy đủ của ứng dụng web bạn
muốn tấn công.
4. Nhấp vào Attack.

Hình 7 Quét tự động
ZAP sẽ tiến hành thu thập dữ liệu ứng dụng web bằng trình thu thập dữ liệu
của nó và quét thụ động từng trang mà nó tìm thấy. Sau đó, ZAP sẽ sử dụng trình
quét đang hoạt động để tấn công tất cả các trang, chức năng và thông số đã phát
hiện.
ZAP cung cấp 2 trình thu thập thông tin để thu thập dữ liệu các ứng dụng

web, bạn có thể sử dụng một trong hai hoặc cả hai trình thu thập thông tin từ màn
hình này.
ZAP spider truyền thống phát hiện ra các liên kết bằng cách kiểm tra
HTML trong các phản hồi từ ứng dụng web. Spider này nhanh nhưng không phải
lúc nào cũng hiệu quả khi khám phá một ứng dụng web AJAX tạo liên kết bằng
JavaScript.
Đối với các ứng dụng AJAX, ZAP’s AJAX spider có thể sẽ hiệu quả hơn.
Spider này khám phá ứng dụng web bằng cách gọi các trình duyệt sau đó đi theo

12


các liên kết đã được tạo. AJAX spider chậm hơn spider truyền thống và yêu cầu
cấu hình bổ sung để sử dụng trong môi trường "headless".
ZAP sẽ quét một cách thụ động tất cả các yêu cầu và phản hồi được ủy
quyền thơng qua nó. Qt thụ động khơng thay đổi phản hồi theo bất kỳ cách nào
và được coi là an toàn. Quá trình quét cũng được thực hiện trong một chuỗi nền để
không làm chậm quá trình khám phá. Quét thụ động rất tốt trong việc tìm ra một
số lỗ hổng và là một cách để cảm nhận trạng thái bảo mật cơ bản của ứng dụng
web và xác định vị trí có thể cần tiến hành điều tra thêm.
Phía bên trái của Chân trang chứa một số Alerts được tìm thấy trong quá
trình kiểm tra của bạn, được chia thành các danh mục rủi ro. Các loại rủi ro này là:

Hình 8 Các cờ trạng thái
Để xem các cảnh báo được tạo trong quá trình kiểm tra của bạn:
1. Nhấp vào tab Alerts trong Cửa sổ Thông tin.
2. Nhấp vào từng cảnh báo được hiển thị trong cửa sổ đó để hiển thị URL
và lỗ hổng bảo mật được phát hiện ở phía bên phải của Cửa sổ thông tin.
3. Trong Windows Workspace, hãy bấm vào tab Response để xem nội
dung của tiêu đề và nội dung của phản hồi. Phần phản hồi đã tạo ra cảnh báo sẽ

được đánh dấu.
6. Quét ứng dụng bằng cách thủ công:
Chức năng quét thụ động và tấn công tự động là một cách tuyệt vời để bắt
đầu đánh giá lỗ hổng của ứng dụng web của bạn nhưng nó có một số hạn chế.
Trong số này có:
• Bất kỳ trang nào được bảo vệ bằng trang đăng nhập đều không thể phát
hiện được trong quá trình quét thụ động vì trừ khi bạn đã định cấu hình
chức năng xác thực của ZAP, ZAP sẽ không xử lý xác thực được u cầu.
• Bạn khơng có nhiều quyền kiểm sốt trình tự quét trong quá trình quét thụ
động hoặc các loại tấn công được thực hiện trong một cuộc tấn công tự
động. ZAP cung cấp nhiều tùy chọn bổ sung để thăm dị và tấn cơng bên
ngồi qt thụ động.
13


Trình thu thập dữ liệu là một cách tuyệt vời để khám phá trang web cơ bản
của bạn, nhưng chúng nên được kết hợp với khám phá thủ công để có hiệu quả
hơn. Ví dụ: Spiders sẽ chỉ nhập dữ liệu mặc định cơ bản vào các biểu mẫu trong
ứng dụng web của bạn nhưng người dùng có thể nhập thêm thơng tin có liên quan
để có thể hiển thị nhiều ứng dụng hơn cho ZAP. Điều này đúng với những thứ như
biểu mẫu đăng ký yêu cầu địa chỉ email hợp lệ. Spider có thể nhập một chuỗi ngẫu
nhiên, điều này sẽ gây ra lỗi. Người dùng sẽ có thể phản ứng với lỗi đó và cung
cấp một chuỗi được định dạng chính xác, điều này có thể khiến ứng dụng bị lộ
nhiều hơn khi biểu mẫu được gửi và chấp nhận.
Bạn nên khám phá tất cả ứng dụng web của mình bằng trình duyệt proxy
thông qua ZAP. Khi đó, ZAP sẽ quét một cách thụ động tất cả các yêu cầu và phản
hồi được thực hiện trong quá trình bạn khám phá các lỗ hổng, tiếp tục xây dựng sơ
đồ trang web và ghi lại các cảnh báo cho các lỗ hổng tiềm ẩn được tìm thấy trong
quá trình thăm dò.
Điều quan trọng là để ZAP khám phá từng trang trong ứng dụng web của

bạn, cho dù được liên kết với trang khác hay không, để tìm các lỗ hổng. Ẩn danh
không hẳn là bảo mật và các trang ẩn đôi khi xuất hiện trực tuyến mà không cần
cảnh báo hoặc thông báo. Vì vậy, hãy cẩn thận nhất có thể khi khám phá trang
web của bạn.
Bạn có thể nhanh chóng và dễ dàng khởi chạy các trình duyệt được định
cấu hình trước để proxy thông qua ZAP nhờ tab Quick Start. Các trình duyệt
được khởi chạy theo cách này cũng sẽ bỏ qua bất kỳ cảnh báo xác thực chứng chỉ
nào nếu không sẽ được báo cáo.

Hình 9 Quét thủ công

14


Để quét thủ công :
1. Khởi động ZAP và chọn Quick Start trong cửa sổ làm việc.
2. Chọn Manual Explore.
3. Trong hộp URL to explore, nhập đầy đủ URL của ứng dụng web cần
quét.
4. Chọn trình duyệt mà bạn muốn, ZAP cung cấp 2 trình duyệt mặc định là
Chrome và Firefox.
5. Chọn Launch Browser.
Tùy chọn này sẽ khởi chạy bất kỳ trình duyệt nào mà bạn đã cài đặt với các
cấu hình mới.
Nếu bạn muốn sử dụng bất kỳ trình duyệt nào của mình với cấu hình hiện
có, chẳng hạn như với các tiện ích bổ sung khác của trình duyệt được cài đặt, thì
bạn sẽ cần phải định cấu hình thủ công trình duyệt của mình để proxy qua ZAP và
nhập Chứng chỉ ZAP Root CA.
Theo mặc định, Hiển thị cảnh báo ZAP (HUD) sẽ được bật. Bỏ chọn tùy
chọn có liên quan trên màn hình này trước khi khởi chạy trình duyệt sẽ vơ hiệu

hóa HUD.
Màn hình Cảnh báo (HUD) là một giao diện mới cung cấp quyền truy cập
vào chức năng ZAP trực tiếp trong trình duyệt. Nó lý tưởng cho những người mới
làm quen với bảo mật web và cũng cho phép những người kiểm tra xâm nhập có
kinh nghiệm tập trung vào chức năng của ứng dụng đồng thời cung cấp chức năng
và thông tin bảo mật chính.

15


Hình 10 Hiển thị cảnh báo trong trình duyệt
HUD được nhúng trong ứng dụng đích trong trình duyệt của bạn khi được
bật qua tùy chọn thanh công cụ hoặc màn hình Manual Explore. Chỉ các trình
duyệt hiện đại như Firefox và Chrome mới được hỗ trợ.
Theo mặc định, một màn hình hiển thị cho HUD bao gồm một liên kết đến
một hướng dẫn sẽ đưa bạn qua các tính năng của HUD và giải thích cách bạn có
thể sử dụng chúng.
7. Các tính năng bổ sung:
Các tính năng mới có thể được chủ động thêm vào. Online Marketplace
cung cấp số lượng lớn các tiện ích bổ sung cho ZAP. Bạn có truy cập thơng qua
nút Manage Add-ons trên thanh cơng cụ. Tất cả các tính năng đều miễn phí.

Hình 11 Quản lí các tiện ích bổ sung
16


Chương 3 Thực hành với ZAP tấn công một số lỗ hổng
OWASP
1. Cấu hình ZAP và quét một số trang web:
Chọn Tools và tìm đến Options, sẽ có một màn hình khác xuất hiện trên

màn hình. Tại đây, ta sẽ thiết lập Address và Port. Mặc định của Address là
localhost:8080, Port là 8080. Trường hợp đã có ứng dụng khác sử dụng cổng 8080
rồi, bạn có thẻ thay đổi một cổng khác tùy ý, trong bài này mình sẽ sử dụng Port
8088, sau đó lưu lại thiết lập.

Hình 12 Thiết lập Proxy
Tiến hành quét trang web p bằng cách quét thủ công.
Nhập địa chỉ vào hộp URL và chọn Launch Brower

17


Hình 13 Quét trang web demo.owasp-juice.shop
Trình duyệt web sẽ hiện ra cùng với HUD được nhúng bên trong

Hình 14 Các thông tin về trang web
Tab history trong HUD của trình duyệt và mục Information Window sẽ hiển thị
thông tin mà cơng cụ qt được:
• Thơng tin của Id trang web gửi về Proxy của ZAP đánh số từ 1;
• Req. Timestamp: thời gian Proxy u cầu thơng tin;
• Method: các phương thức GET, POST, PUT, DELETE, …
• URL: địa chỉ trả về
• Code: các mã thơng báo:
• 200: OK- thành cơng
• 400: Bad Request- u cầu khơng hợp lệ
• 504: Gateway Timeout- Phản hồi khơng kịp thời
• 404: Not found- Lỗi máy chủ web
18



• RTT: Round-trip time – thời gian trễ trọn vòng
• Size Resp. Body: Kích cỡ của phản hồi
• Highest Alert: Trạng thái rủi ro của web, chọn tab Alerts để biết chi tiết
các rủi ro

Hình 15 Các trạng thái rủi ro
- Cross-Domain Misconfiguration : trang web bị lỗi cấu hình Chia sẻ tài nguyên
nguồn gốc cheo CORS( Cross-Origin Resource Sharing)
- Session ID in URL Rewrite : ID phiên bị lộ trên URL
- Vulnerable JS Library : Lỗ hổng trong thư viện JS
- X-Frame-Options Header Not Set: X-Frame-Options không được thiết lập khiến
web có thể bị tấn cơng Clickjacking
2. Tấn cơng lỗ hổng IDOR:
IDOR là một trong những lỗ hổng nằm trong OWASP A01:2021 Broken
Access Control. Lỗ hổng này cho phép hacker có thể tấn cơng theo chiều ngang,
khơng có bất kì cơ chế xác thực nào và sử dụng các tham chiếu này để đọc, thay
đổi hay sử dụng dữ liệu trái phép của những người dùng có cùng level.
Ví dụ: Website của bạn có chức năng xem thơng tin người dùng qua định
danh ID
Request:
GET /account/123 HTTP 1.1
Host: example.com
Cookie: ...

19


Response:
{id: 123, username: MinhTuan, Address: 13F Keangnam, ... }
Đây là những dữ liệu cá nhân mà thơng thường chỉ có tài khoản của người

dùng đó mới có thể xem được. Nhưng Attacker có thể thay đổi giá trị id để có thể
xem được thơng tin của người dùng khác.
GET /account/124 HTTP 1.1
Host: example.com
Response:
{id: 124, username: Nghia, Address: Trieu Khuc, ... }
Hay cả đối với chức năng thêm, sửa, xóa thơng tin mà người dùng này có
thể thực hiện được đối với tài khoản người dùng khác thì cũng gọi là lỗi IDOR.
Kịch bản demo: Ta sẽ đăng nhập vào trang web bài lab với tài khoản và mật
khẩu là “tom” và “cat”. Sau đó, ta sẽ xem thơng tin tài khoản hiện tại của mình.
ZAP sẽ bắt các thông tin trả về và lấy được các trường thông tin người dùng. Sau
đó, thay đổi id để xem thơng tin của người dùng khác.

Hình 16 Đăng nhập thành cơng
Ta thấy có địa chỉ http://localhost:8080/WebGoat/IDOR/profile trả về các thông tin
“role”, “color”, “size”, “userID”, “name”.

20


Hình 17 Các thông tin trả về
Ta lấy địa chỉ http://localhost:8080/WebGoat/IDOR/profile thay đổi ID và trang
web trả về thông tin của một người dùng khác là “Buffalo Bill”.

Hình 18 Thông tin về người dùng khác

21


Một số cách phòng chống IDOR:

- Với những dữ liệu nhạy cảm như source code, config, database key, cần
hạn chế quyền truy cập. Các tốt nhất sẽ là chỉ cho phép các IP nội bộ truy cập các
dữ liệu này
- Tránh để lộ key của đối tượng: Trong các trường hợp đã nêu, id của đối
tượng là số int, do đó hacker có thể đốn ra id của các đối tượng khác. Để phịng
tránh có thể mã hóa id, dùng GUID để làm id. Hacker khơng thể nào dị ra ID của
đối tượng khác được
- Kiểm tra chặt chẽ quyền truy cập user : Nguyễn nhân của lỗi IDOR nằm ở
cơ chế phân quyền, vì vậy khi mà phát triển 1 ứng dụng tuân thủ chặt chẽ phân
quyền và kiểm tra quyền truy cập tới dữ liệu là điều quan trọng nhất. Luôn kiểm
tra quyền truy cập của mỗi người dùng ở tất cả các request. Việc kiểm tra phân
quyền thực hiện ở phía server.
3. Tấn cơng vào JWT:
JWT là một chuẩn mở (RFC 7519) định nghĩa một cách nhỏ gọn và khép
kín để truyền một cách an tồn thơng tin giữa các bên dưới dạng đối tượng JSON.
Thông tin này có thể được xác minh và đáng tin cậy vì nó có chứa chữ ký số. JWTs
có thể được ký bằng một thuật tốn bí mật (với thuật tốn HMAC) hoặc một public
/ private key sử dụng mã hoá RSA.
Cấu trúc của JWT gồm có:
Header
• Header bao gồm hai phần chính: loại token (mặc định là JWT - Thơng tin
này cho biết đây là một Token JWT) và thuật tốn đã dùng để mã hóa
(HMAC SHA256 - HS256 hoặc RSA).
Payload
• Payload chứa các claims. Claims là một các biểu thức về một thực thể
(chẳng hạn user) và một số metadata phụ trợ. Có 3 loại claims thường gặp
trong Payload: reserved, public và private claims.
• Reserved claims: Đây là một số metadata được định nghĩa trước, trong đó
một số metadata là bắt buộc, số còn lại nên tuân theo để JWT hợp lệ và đầy
đủ thông tin: iss (issuer), iat (issued-at time) exp (expiration time), sub

(subject), aud (audience), jti (Unique Identifier cho JWT).
• Public Claims - Khóa có thể định nghĩa tùy theo ý muốn của người sử
dụng JWT. Tuy nhiên để tránh trùng lặp, chúng được xác định trong IANA
JSON Web Token Registry hoặc là 1 URI có chứa khơng gian tên khơng bị
trùng lặp.
• Private Claims - Claims tự định nghĩa (không được trùng với Reserved
Claims và Public Claims), được tạo ra để chia sẻ thông tin giữa 2 parties đã
thỏa thuận và thống nhất trước đó.

22


Signature
• Chữ ký Signature trong JWT là một chuỗi được mã hóa bởi header, payload
cùng với một chuỗi bí mật
• Do bản thân Signature đã bao gồm cả header và payload nên Signature có
thể dùng để kiểm tra tính tồn vẹn của dữ liệu khi truyền tải.
Cấu trúc của một JWT đơn giản như sau:
<base64-encoded header>.<base64-encoded payload>.<base64-encoded signature>
Một ứng dụng phổ biến nhất của JWT đó là xác thực API: Sau khi user
login phía client sẽ nhận response bao gồm jwt, ở mỗi request sau đó sẽ gửi kèm
JWT. Server sẽ xác minh token đó và user có thể truy cập resouce, routes được
phép với token đó. Bộ API dựa trên nguyên tắc CRUD( Create, Read, Update,
Delete). Người dùng thông thường sẽ có quyền Read. Bằng cách nào đó, hacker lấy
được và chỉnh sửa thơng tin trong JWT, sau đó có đầy đủ các quyền theo ngun
tắc CRUD mà khơng cần đăng nhập với tài khoản admin và có thể gây nguy hiểm
đến hệ thống.
Kịch bản demo 1 : Đăng nhập với tài khoản Jerry vào một trang bình chọn.
Thông thường tài khoản user sẽ chỉ có quyền xem và bình chọn các ứng viên. Ta sẽ
dùng ZAP để lấy JWT và chỉnh sửa thông tin thành quyền admin để xóa các bình

chọn.

Hình 19 Trang bình chọn

23


Dùng ZAP để bắt cookie có chứa JWT của người dùng

Hình 20 Cookie và access token có được
Dùng tool Encode/Decode trong Tools trên Thanh công cụ để giải mã JWT trên và
thay đổi “alg” trong Header thành “none” và thay đổi “admin” thành “true” trong
Payload

Hình 21 Thay đổi "alg"

24


Hình 22 Thay đổi "admin"
Ghép hai phần Header và Payload đã thay đổi ở trên và xóa Signature, ta có JWT
mới và nhấn Send

Hình 23 Access token mới và Send

25


×