Chủ đề: Cross-site scripting (1,3,5,7,9,11,13,15,17,19) | Báo cáo môn An toàn thông tin Trường đại học sư phạm kỹ thuật TP. Hồ Chí Minh

a. Mục tiêu: Mục tiêu chính của bài lab là giúp bạn hiểu cách tìm kiếm và khai thác các lỗ hổng XSS phản chiếu cơ bản trong bối cảnh HTML khi không có mã hóa nào được áp dụng cho dữ liệu đầu vào từ người dùng. b. Thực hiện:- Sao chép và dán nội dung sau: “” vào hộp tìm kiếm. 2. 3. DOM XSS in document.write sink using source location.search. a. Mục tiêu: Mục tiêu của bài lab là giúp bạn nhận ra cách location.search có thể bị lợi dụng trong các cuộc tấn công DOM XSS, Tài liệu giúp bạn tham khảo, ôn tập và đạt kết quả cao. Mời bạn đọc đón xem!

Nhóm 4:
Thành viên:
Lê Công Hùng - 22110151
Nguyễn Hiếu Nghĩa - 22110189
Trần Nhật Minh - 22110183
Chủ đề: Cross-site scripting (1,3,5,7,9,11,13,15,17,19)
1. 1. Reflected XSS into HTML context with nothing encoded
a. Mục tiêu:
Mục tiêu chính của bài lab là giúp bạn hiểu cách tìm kiếm và khai
thác các lỗ hổng XSS phản chiếu cơ bản trong bối cảnh HTML khi
không có mã hóa nào được áp dụng cho dữ liệu đầu vào từ người
dùng.
b. Thực hiện:
- Sao chép và dán nội dung sau: “<script>alert(1)</script>” vào
hộp tìm kiếm
- Nhấp vào "Tìm kiếm"
c. Kết quả:
Kết quả sẽ là một hộp thoại bật lên (pop-up) với nội dung "1"
2. 3. DOM XSS in document.write sink using source location.search
a. Mục tiêu:
Mục tiêu của bài lab là giúp bạn nhận ra cách location.search có
thể bị lợi dụng trong các cuộc tấn công DOM XSS, đồng thời hiểu
được tầm quan trọng của việc mã hóa và xử lý dữ liệu đầu vào để
ngăn chặn XSS.
b. Thực hiện:
- Nhập 1 chuỗi bất kì vào thanh tìm kiếm, ví dụ là abc123 sau đó
nhấn Search:
- Vào phần kiểm trat rang web:
- Tìm chuỗi vừa nhập:
- Đóng lại và nhập chuỗi “"><svg onload=alert(1)>” vào ô tìm
kiếm:
- Nhấn search
c. Kết quả:
Xuất hiện hộp thoại cảnh báo:
3. 5. DOM XSS in jQuery anchor href attribute sink using
location.search source
a. Mục tiêu:
Mục tiêu là khai thác lỗ hổng DOM-based XSS bằng cách tận dụng
location.search để chèn mã độc vào thuộc tính href của một thẻ
<a> thông qua jQuery
b. Thực hiện:
- Chọn submit feedback:
- Trên trang Gửi phản hồi, hãy thay đổi tham số truy
vấn returnPaththành /chuỗi chữ số ngẫu nhiên theo sau, ví dụ
abc123 sau đó nhấn enter
Mở phần kiểm tra và tìm chuỗi vừa nhập:
- Thay đổi returnPath thành” javascript:alert(document.cookie)” và
nhấn enter:
- Nhấn back để thực hiện:
c. Kết quả:
Xuất hiện hộp thoại cảnh báo đoạn payload vừa chèn
4. 7. Reflected XSS into attribute with angle brackets HTML-encoded
a. Mục tiêu:
Ứng dụng có đầu vào người dùng được chèn vào thuộc tính
HTML.
Các ký tự đặc biệt như dấu ngoặc góc < và > đã được mã hóa thành
&lt; và &gt;. Tuy nhiên, nếu chỉ mã hóa dấu ngoặc góc mà không
kiểm soát các ký tự khác, điều này có thể dẫn đến khả năng khai
thác XSS thông qua việc chèn mã độc vào các thuộc tính.
Tìm cách chèn mã JavaScript độc hại vào một thuộc tính HTML,
mặc dù dấu ngoặc góc đã được mã hóa.
b. Thực hiện:
Bước 1: Nhập một chuỗi ngẫu nhiên vào ô tim kiếm
Bước 2: xem mã nguồn của trang bằng cách click chuột phải chọn
“inspect” quan sát ở ta thấy giá trị ta nhập được ánh xạ tới giá trị
thuộc tính tương ứng
Bước 3: thay thế từ đã nhập ban đầu bằng "onmouseover="alert(1)
vào ô tìm kiếm và chờ kết quả
c. Kết quả:
Khi hoàn thành, mục tiêu là kích hoạt một hàm JavaScript, chẳng
hạn như alert(1), khi thuộc tính đó được sử dụng trong HTML
5. 9. Reflected XSS into a JavaScript string with angle brackets HTML
encoded
a. Mục tiêu:
Khai thác lỗ hổng Reflected XSS khi dữ liệu người dùng được
chèn vào một chuỗi JavaScript và dấu ngoặc góc (< và >) đã được
mã hóa HTML.
Tìm cách chèn mã JavaScript độc hại vào chuỗi JavaScript của ứng
dụng để thực thi một hàm alert().
b. Thực hiện:
Bước 1: Nhập một chuỗi ngẫu nhiên vào ô tim kiếm
Bước 2: Mở Burp Suite và bật Intercept trong tab Proxy.
- Quay lại trình duyệt của bạn, thực hiện lại tìm kiếm và để Burp
chặn yêu cầu này.
- Kiểm tra yêu cầu bị chặn trong Burp và xác nhận rằng nó có chứa
tham số tìm kiếm với chuỗi ngẫu nhiên bạn đã nhập là abcd1234
Bước 3: Gửi yêu cầu bị chặn sang Burp Repeater
- Khi yêu cầu vẫn đang bị chặn, nhấp chuột phải vào yêu cầu và
chọn Send to Repeater.
- Chuyển sang tab Repeater trong Burp Suite, nơi bạn có thể chỉnh
sửa và gửi lại yêu cầu, click vào nút “Send”
Bước 4: Thay chuỗi ngẫu nhiên bằng payload XSS
- Trong tab Repeater, tìm tham số chứa chuỗi tìm kiếm của bạn (ví
dụ: search=abcd1234).
- Thay chuỗi ngẫu nhiên bằng payload: '-alert(1)-'.
- Nhấn Send trong tab Repeater để gửi yêu cầu đã chỉnh sửa.
Bước 5: Sao chép và dán URL để xác minh XSS
- Nếu ứng dụng phản chiếu payload vào ngữ cảnh JavaScript mà
không mã hóa đúng cách, hàm alert(1) sẽ được thực thi.
- Nhấp chuột phải vào phản hồi trong Repeater và chọn Copy URL.
- Dán URL đã sao chép vào thanh địa chỉ của trình duyệt và nhấn
Enter để tải trang
c. Kết quả:
Khi hoàn thành, sẽ có một hộp thông báo alert(1) xuất hiện, xác
nhận rằng bạn đã khai thác thành công lỗ hổng XSS.
6. 11. DOM XSS in AngularJS expression with angle brackets and
double quotes HTML-encoded
a. Mục tiêu:
Trong bài lab này, ứng dụng đầu vào người dung được chèn vào
một biểu thức AngularJS .Các dấu <, >, và " đã được mã hóa
HTML (khiến chúng trở thành &lt;, &gt;, và &quot;). Tuy nhiên,
nếu chỉ mã hóa HTML những ký tự này, kẻ tấn công vẫn có thể
khai thác lỗ hổng XSS bằng cách sử dụng các ký tự và cấu trúc
JavaScript khác không bị mã hóa.Qua bài lab này ta cũng biết cách
chèn một biểu thức AngularJS mà vẫn có thể thoát khỏi ngữ cảnh
hiện tại và chè mã đọc vào.
b. Thực hiện:
Bước 1: Nhập một chuỗi ký tự ngẫu nhiên vào ô tìm kiếm
- Mở ứng dụng trong trình duyệt.
- Nhập một chuỗi ký tự ngẫu nhiên, chẳng hạn như abcd1234 vào ô
tìm kiếm rồi gửi yêu cầu tìm kiếm.
- Sau khi gửi, xem mã nguồn của trang (nhấp chuột phải vào trang
và chọn "Xem mã nguồn trang") để kiểm tra xem chuỗi đầu vào
của bạn có xuất hiện trong một directive ng-app của AngularJS
hoặc trong phần nào đó của trang được quản lý bởi AngularJS
không.
Bước 2: Nhập biểu thức AngularJS vào ô tìm kiếm
- Thay chuỗi ngẫu nhiên trong ô tìm kiếm bằng biểu thức
AngularJS {{$on.constructor('alert(1)')()}}
- biểu thức AngularJS sẽ được xử lý và thực thi trong ngữ cảnh của
AngularJS, dẫn đến việc thực thi alert(1).
c. Kết quả:
Khi hoàn thành, biểu thức phải có khả năng thực thi mã JavaScript
để mở một hộp thông báo (alert(1)) trong trình duyệt của người
dùng.
7. 13. Lap Stored DOM XSS
a. Mục tiêu:
- Hiểu và khai thác DOM XSS: Nhận diện lỗ hổng và cách thức mã
độc được thực thi trong DOM.
- Phân biệt các loại XSS: Nắm sự khác biệt giữa DOM XSS và các
loại XSS khác.
- Áp dụng phòng ngừa: Thực hành xử lý dữ liệu an toàn, tránh
dùng innerHTML, và thiết lập CSP.
- Áp dụng phòng ngừa: Thực hành xử lý dữ liệu an toàn, tránh
dùng innerHTML, và thiết lập CSP.
- Sử dụng công cụ kiểm thử: Học cách dùng Burp Suite để phát
hiện DOM XSS.
- Nâng cao ý thức bảo mật: Hiểu rõ nguy cơ và thực hành bảo mật
phía client trong phát triển web.
b. Thực hiện:
Comment câu lệnh <><img src=1 onerror=alert(1)>:
- Mở ứng dụng trong trình duyệt.
- Truy cập vào 1 trong các bài post
- comment câu lệnh <><img src=1 onerror=alert(1)> vào ô bình
luận
c. Kết quả:
Xuất hiện thông báo
8. 15. Reflected XSS into HTML context with all tags blocked except
custom ones
Thực hiện:
Bước 1: Truy cập máy chủ khai thác và dán đoạn mã sau, thay
thế YOUR-LAB-IDbằng ID phòng thí nghiệm của bạn
- Truy cập phòng thí nghiệm
- Đi đến máy chủ khai thác
- Copy và dán đoạn code vào phần body như hình
Bước 2: Nhấp vào lưu trữ và gửi mã khai thác cho nạn nhân
9. 17. Reflected XSS in canonical link tag
a. Mục tiêu:
- Hiểu cơ chế XSS phản ánh: Tìm hiểu cách tấn công XSS phản
ánh (Reflected XSS) hoạt động bằng cách chèn mã độc vào các
URL để thực thi mã JavaScript khi nạn nhân nhấp vào liên kết.
- Khai thác lỗ hổng XSS trong thẻ <a>: Học cách tận dụng thuộc
tính của thẻ liên kết <a>, như href, onclick, để chèn mã độc mà
trình duyệt sẽ thực thi khi liên kết được nhấp.
- Phân tích và phòng ngừa XSS: Hiểu các biện pháp phòng chống
XSS, bao gồm mã hóa đầu vào và xác thực dữ liệu người dùng để
ngăn chặn các đoạn mã nguy hiểm lọt vào liên kết.
- Tăng cường nhận thức về bảo mật phía client: Giúp người học
nhận thức được các rủi ro bảo mật từ XSS phản ánh, đặc biệt là khi
xử lý dữ liệu người dùng trong các liên kết.
b. Thực hiện:
Bước 1: Truy cập phòng thí nghiệm
Bước 2: Truy cập URL sau, thay thế YOUR-LAB-IDbằng ID
phòng thí nghiệm của bạn: https://YOUR-LAB-ID.web-security-
academy.net/?%27accesskey=%27x%27onclick=%27alert(1)
Bước 3: Để kích hoạt khai thác trên chính bạn, hãy nhấn một trong
các tổ hợp phím sau:
- Trên Windows:ALT+SHIFT+X
- Trên MacOS:CTRL+ALT+X
- Trên Linux:Alt+X
c. Kết quả:
Kết quả sẽ là một hộp thoại bật lên (pop-up):
10.19. Reflected XSS into a JavaScript string with angle brackets and
double quotes HTML-encoded and single quotes escaped
a. Mục tiêu:
Xác định các biện pháp bảo mật một phần: Lab này mô phỏng một
tình huống mà đầu vào người dùng được chèn vào một chuỗi
JavaScript, nhưng ứng dụng đã áp dụng một số biện pháp mã hóa
và thoát ký tự để ngăn chặn XSS:
- Dấu ngoặc góc (< và >) đã được mã hóa HTML thành &lt;
và &gt;, nhằm ngăn mã HTML chạy trực tiếp.
- Dấu ngoặc kép (") cũng được mã hóa HTML thành &quot;,
nhằm hạn chế việc phá vỡ chuỗi bằng cách đóng chuỗi sớm.
- Dấu nháy đơn (') đã được thoát thành \' để ngăn việc chèn
vào các chuỗi được bao bởi dấu nháy đơn.
b. Thực hiện:
Bước 1: Gửi chuỗi ký tự ngẫu nhiên và chặn yêu cầu
- Mở ứng dụng và nhập một chuỗi ký tự ngẫu nhiên, chẳng hạn
“abcd1234, vào ô tìm kiếm rồi gửi yêu cầu.
- Sử dụng Burp Suite để chặn yêu cầu này và gửi nó đến tab
Repeater bằng cách nhấp chuột phải và chọn Send to Repeater.
Bước 2: Quan sát phản hồi và thử nghiệm các payload
- Trong Burp Repeater, gửi lại yêu cầu và kiểm tra phản hồi để xem
chuỗi ký tự ngẫu nhiên “hieunghia12345” đã nhập có được phản
chiếu trong một chuỗi JavaScript không.
- Thử nghiệm với các payload:
+ Payload 1: Gửi chuỗi test'payload và quan sát phản hồi.
Bạn sẽ thấy rằng dấu nháy đơn ' bị thoát bằng ký tự \ (\'), ngăn
không cho bạn thoát ra khỏi chuỗi JavaScript
+ Payload 2: Tiếp theo, gửi chuỗi test\payload và quan sát
rằng dấu gạch chéo ngược \ không bị thoát, nghĩa là bạn có thể sử
dụng nó để thoát khỏi chuỗi JavaScript.
| 1/22

Preview text:

Nhóm 4: Thành viên: Lê Công Hùng - 22110151
Nguyễn Hiếu Nghĩa - 22110189 Trần Nhật Minh - 22110183
Chủ đề: Cross-site scripting (1,3,5,7,9,11,13,15,17,19)
1. 1. Reflected XSS into HTML context with nothing encoded a. Mục tiêu:
Mục tiêu chính của bài lab là giúp bạn hiểu cách tìm kiếm và khai
thác các lỗ hổng XSS phản chiếu cơ bản trong bối cảnh HTML khi
không có mã hóa nào được áp dụng cho dữ liệu đầu vào từ người dùng. b. Thực hiện:
- Sao chép và dán nội dung sau: “” vào hộp tìm kiếm - Nhấp vào "Tìm kiếm" c. Kết quả:
Kết quả sẽ là một hộp thoại bật lên (pop-up) với nội dung "1"
2. 3. DOM XSS in document.write sink using source location.search a. Mục tiêu:
Mục tiêu của bài lab là giúp bạn nhận ra cách location.search có
thể bị lợi dụng trong các cuộc tấn công DOM XSS, đồng thời hiểu
được tầm quan trọng của việc mã hóa và xử lý dữ liệu đầu vào để ngăn chặn XSS. b. Thực hiện:
- Nhập 1 chuỗi bất kì vào thanh tìm kiếm, ví dụ là abc123 sau đó nhấn Search:
- Vào phần kiểm trat rang web: - Tìm chuỗi vừa nhập: -
Đóng lại và nhập chuỗi “">” vào ô tìm kiếm: - Nhấn search c. Kết quả:
Xuất hiện hộp thoại cảnh báo:
3. 5. DOM XSS in jQuery anchor href attribute sink using location.search source a. Mục tiêu:
Mục tiêu là khai thác lỗ hổng DOM-based XSS bằng cách tận dụng
location.search để chèn mã độc vào thuộc tính href của một thẻ thông qua jQuery b. Thực hiện: - Chọn submit feedback:
- Trên trang Gửi phản hồi, hãy thay đổi tham số truy
vấn returnPaththành /chuỗi chữ số ngẫu nhiên theo sau, ví dụ abc123 sau đó nhấn enter
Mở phần kiểm tra và tìm chuỗi vừa nhập:
- Thay đổi returnPath thành” javascript:alert(document.cookie)” và nhấn enter:
- Nhấn back để thực hiện: c. Kết quả:
Xuất hiện hộp thoại cảnh báo đoạn payload vừa chèn
4. 7. Reflected XSS into attribute with angle brackets HTML-encoded a. Mục tiêu:
Ứng dụng có đầu vào người dùng được chèn vào thuộc tính HTML.
Các ký tự đặc biệt như dấu ngoặc góc < và > đã được mã hóa thành
< và >. Tuy nhiên, nếu chỉ mã hóa dấu ngoặc góc mà không
kiểm soát các ký tự khác, điều này có thể dẫn đến khả năng khai
thác XSS thông qua việc chèn mã độc vào các thuộc tính.
Tìm cách chèn mã JavaScript độc hại vào một thuộc tính HTML,
mặc dù dấu ngoặc góc đã được mã hóa. b. Thực hiện:
Bước 1: Nhập một chuỗi ngẫu nhiên vào ô tim kiếm
Bước 2: xem mã nguồn của trang bằng cách click chuột phải chọn
“inspect” quan sát ở ta thấy giá trị ta nhập được ánh xạ tới giá trị thuộc tính tương ứng
Bước 3: thay thế từ đã nhập ban đầu bằng "onmouseover="alert(1)
vào ô tìm kiếm và chờ kết quả c. Kết quả:
Khi hoàn thành, mục tiêu là kích hoạt một hàm JavaScript, chẳng
hạn như alert(1), khi thuộc tính đó được sử dụng trong HTML
5. 9. Reflected XSS into a JavaScript string with angle brackets HTML encoded a. Mục tiêu:
Khai thác lỗ hổng Reflected XSS khi dữ liệu người dùng được
chèn vào một chuỗi JavaScript và dấu ngoặc góc (< và >) đã được mã hóa HTML.
Tìm cách chèn mã JavaScript độc hại vào chuỗi JavaScript của ứng
dụng để thực thi một hàm alert(). b. Thực hiện:
Bước 1: Nhập một chuỗi ngẫu nhiên vào ô tim kiếm
Bước 2: Mở Burp Suite và bật Intercept trong tab Proxy.
- Quay lại trình duyệt của bạn, thực hiện lại tìm kiếm và để Burp chặn yêu cầu này.
- Kiểm tra yêu cầu bị chặn trong Burp và xác nhận rằng nó có chứa
tham số tìm kiếm với chuỗi ngẫu nhiên bạn đã nhập là abcd1234
Bước 3: Gửi yêu cầu bị chặn sang Burp Repeater
- Khi yêu cầu vẫn đang bị chặn, nhấp chuột phải vào yêu cầu và chọn Send to Repeater.
- Chuyển sang tab Repeater trong Burp Suite, nơi bạn có thể chỉnh
sửa và gửi lại yêu cầu, click vào nút “Send”
Bước 4: Thay chuỗi ngẫu nhiên bằng payload XSS
- Trong tab Repeater, tìm tham số chứa chuỗi tìm kiếm của bạn (ví dụ: search=abcd1234).
- Thay chuỗi ngẫu nhiên bằng payload: '-alert(1)-'.
- Nhấn Send trong tab Repeater để gửi yêu cầu đã chỉnh sửa.
Bước 5: Sao chép và dán URL để xác minh XSS
- Nếu ứng dụng phản chiếu payload vào ngữ cảnh JavaScript mà
không mã hóa đúng cách, hàm alert(1) sẽ được thực thi.
- Nhấp chuột phải vào phản hồi trong Repeater và chọn Copy URL.
- Dán URL đã sao chép vào thanh địa chỉ của trình duyệt và nhấn Enter để tải trang c. Kết quả:
Khi hoàn thành, sẽ có một hộp thông báo alert(1) xuất hiện, xác
nhận rằng bạn đã khai thác thành công lỗ hổng XSS.
6. 11. DOM XSS in AngularJS expression with angle brackets and
double quotes HTML-encoded a. Mục tiêu:
Trong bài lab này, ứng dụng đầu vào người dung được chèn vào
một biểu thức AngularJS .Các dấu <, >, và " đã được mã hóa
HTML (khiến chúng trở thành <, >, và "). Tuy nhiên,
nếu chỉ mã hóa HTML những ký tự này, kẻ tấn công vẫn có thể
khai thác lỗ hổng XSS bằng cách sử dụng các ký tự và cấu trúc
JavaScript khác không bị mã hóa.Qua bài lab này ta cũng biết cách
chèn một biểu thức AngularJS mà vẫn có thể thoát khỏi ngữ cảnh
hiện tại và chè mã đọc vào. b. Thực hiện:
Bước 1: Nhập một chuỗi ký tự ngẫu nhiên vào ô tìm kiếm
- Mở ứng dụng trong trình duyệt.
- Nhập một chuỗi ký tự ngẫu nhiên, chẳng hạn như abcd1234 vào ô
tìm kiếm rồi gửi yêu cầu tìm kiếm.
- Sau khi gửi, xem mã nguồn của trang (nhấp chuột phải vào trang
và chọn "Xem mã nguồn trang") để kiểm tra xem chuỗi đầu vào
của bạn có xuất hiện trong một directive ng-app của AngularJS
hoặc trong phần nào đó của trang được quản lý bởi AngularJS không.
Bước 2: Nhập biểu thức AngularJS vào ô tìm kiếm
- Thay chuỗi ngẫu nhiên trong ô tìm kiếm bằng biểu thức
AngularJS {{$on.constructor('alert(1)')()}}
- biểu thức AngularJS sẽ được xử lý và thực thi trong ngữ cảnh của
AngularJS, dẫn đến việc thực thi alert(1). c. Kết quả:
Khi hoàn thành, biểu thức phải có khả năng thực thi mã JavaScript
để mở một hộp thông báo (alert(1)) trong trình duyệt của người dùng.
7. 13. Lap Stored DOM XSS a. Mục tiêu:
- Hiểu và khai thác DOM XSS: Nhận diện lỗ hổng và cách thức mã
độc được thực thi trong DOM.
- Phân biệt các loại XSS: Nắm sự khác biệt giữa DOM XSS và các loại XSS khác.
- Áp dụng phòng ngừa: Thực hành xử lý dữ liệu an toàn, tránh
dùng innerHTML, và thiết lập CSP.
- Áp dụng phòng ngừa: Thực hành xử lý dữ liệu an toàn, tránh
dùng innerHTML, và thiết lập CSP.
- Sử dụng công cụ kiểm thử: Học cách dùng Burp Suite để phát hiện DOM XSS.
- Nâng cao ý thức bảo mật: Hiểu rõ nguy cơ và thực hành bảo mật
phía client trong phát triển web. b. Thực hiện:
Comment câu lệnh <>1:
- Mở ứng dụng trong trình duyệt.
- Truy cập vào 1 trong các bài post
- comment câu lệnh <>1 vào ô bình luận c. Kết quả: Xuất hiện thông báo
8. 15. Reflected XSS into HTML context with all tags blocked except custom ones Thực hiện:
Bước 1: Truy cập máy chủ khai thác và dán đoạn mã sau, thay
thế YOUR-LAB-IDbằng ID phòng thí nghiệm của bạn
- Truy cập phòng thí nghiệm
- Đi đến máy chủ khai thác
- Copy và dán đoạn code vào phần body như hình
Bước 2: Nhấp vào lưu trữ và gửi mã khai thác cho nạn nhân
9. 17. Reflected XSS in canonical link tag a. Mục tiêu:
- Hiểu cơ chế XSS phản ánh: Tìm hiểu cách tấn công XSS phản
ánh (Reflected XSS) hoạt động bằng cách chèn mã độc vào các
URL để thực thi mã JavaScript khi nạn nhân nhấp vào liên kết.
- Khai thác lỗ hổng XSS trong thẻ : Học cách tận dụng thuộc
tính của thẻ liên kết , như href, onclick, để chèn mã độc mà
trình duyệt sẽ thực thi khi liên kết được nhấp.
- Phân tích và phòng ngừa XSS: Hiểu các biện pháp phòng chống
XSS, bao gồm mã hóa đầu vào và xác thực dữ liệu người dùng để
ngăn chặn các đoạn mã nguy hiểm lọt vào liên kết.
- Tăng cường nhận thức về bảo mật phía client: Giúp người học
nhận thức được các rủi ro bảo mật từ XSS phản ánh, đặc biệt là khi
xử lý dữ liệu người dùng trong các liên kết. b. Thực hiện:
Bước 1: Truy cập phòng thí nghiệm
Bước 2: Truy cập URL sau, thay thế YOUR-LAB-IDbằng ID
phòng thí nghiệm của bạn: https://YOUR-LAB-ID.web-security-
academy.net/?%27accesskey=%27x%27onclick=%27alert(1)
Bước 3: Để kích hoạt khai thác trên chính bạn, hãy nhấn một trong các tổ hợp phím sau:
- Trên Windows:ALT+SHIFT+X - Trên MacOS:CTRL+ALT+X - Trên Linux:Alt+X c. Kết quả:
Kết quả sẽ là một hộp thoại bật lên (pop-up):
10.19. Reflected XSS into a JavaScript string with angle brackets and
double quotes HTML-encoded and single quotes escaped a. Mục tiêu:
Xác định các biện pháp bảo mật một phần: Lab này mô phỏng một
tình huống mà đầu vào người dùng được chèn vào một chuỗi
JavaScript, nhưng ứng dụng đã áp dụng một số biện pháp mã hóa
và thoát ký tự để ngăn chặn XSS:
- Dấu ngoặc góc (< và >) đã được mã hóa HTML thành <
và >, nhằm ngăn mã HTML chạy trực tiếp.
- Dấu ngoặc kép (") cũng được mã hóa HTML thành ",
nhằm hạn chế việc phá vỡ chuỗi bằng cách đóng chuỗi sớm.
- Dấu nháy đơn (') đã được thoát thành \' để ngăn việc chèn
vào các chuỗi được bao bởi dấu nháy đơn. b. Thực hiện:
Bước 1: Gửi chuỗi ký tự ngẫu nhiên và chặn yêu cầu
- Mở ứng dụng và nhập một chuỗi ký tự ngẫu nhiên, chẳng hạn
“abcd1234, vào ô tìm kiếm rồi gửi yêu cầu.
- Sử dụng Burp Suite để chặn yêu cầu này và gửi nó đến tab
Repeater bằng cách nhấp chuột phải và chọn Send to Repeater.
Bước 2: Quan sát phản hồi và thử nghiệm các payload
- Trong Burp Repeater, gửi lại yêu cầu và kiểm tra phản hồi để xem
chuỗi ký tự ngẫu nhiên “hieunghia12345” đã nhập có được phản
chiếu trong một chuỗi JavaScript không.
- Thử nghiệm với các payload:
+ Payload 1: Gửi chuỗi test'payload và quan sát phản hồi.
Bạn sẽ thấy rằng dấu nháy đơn ' bị thoát bằng ký tự \ (\'), ngăn
không cho bạn thoát ra khỏi chuỗi JavaScript
+ Payload 2: Tiếp theo, gửi chuỗi test\payload và quan sát
rằng dấu gạch chéo ngược \ không bị thoát, nghĩa là bạn có thể sử
dụng nó để thoát khỏi chuỗi JavaScript.