Chuyển đến nội dung chính

Kỹ thuật tấn công Rosetta Flash

Giới thiệu

Rosetta Flash là 1 trong những kĩ thuật tấn công Web hay nhất năm 2014. Xếp thứ 4 trong Top 10 Web Attack Techniques of 2014 theo đánh giá của nhóm Whitehat Sec, chỉ xếp sau Heartbleed, Shellshock và Poodle.

Kỹ thuật Rosetta Flash được phát triển bởi Michel Spagnoulo, 1 chuyên gia an toàn thông tin của Google. Trong một bài viết gần đây, tôi đã đề cập đến SOP, chính sách này ngăn cản việc lấy thông tin từ một domain khác. Rosetta Flash cho phép tạo ra một file Flash chứa mã thực thi nguy hiểm, lợi dụng JSONP để bypass SOP và thực hiện 1 cuộc tấn công CSRF đến trang web có lỗ hổng. Rosseta Flash ảnh hưởng đến nhiều trang Web lớn như Youtube, Yahoo, Twitter, Instagram, eBay và cả Google. Facebook và Github may mắn nằm ngoài danh sách này.

Điều kiện để thực hiện thành công là máy tính nạn nhân phải cài đặt Flash player phiên bản dưới 11.2.202.394 đối với Linux và dưới 14.0.0.145 đối với Windows, OS X.

Michel Spagnoulo cũng phát triển 1 tool có tên là Rosetta Flash để thực hiện kỹ thuật này.

Một số kiến thức liên quan

1. JSONP

Mặc dù SOP sinh ra để đảm bảo an toàn cho ứng dụng web tuy nhiên chính sách này cũng có những hạn chế. Đối với các hệ thống lớn, như Google, luôn có nhiều domain khác nhau và đôi khi cần trao đổi thông tin giữa các domain. SOP mặc định sẽ gây khó dễ cho điều này. Và để “lách luật”, chúng ta có một cách là sử dụng JSONP.

JSONP thực chất là 1 kĩ thuật lấy dữ liệu JSON bằng cách gắn nhãn (padding) cho chuỗi JSON được trả về từ JSONP endpoint bằng 1 hàm callback. Hàm callback được định nghĩa trên JSONP client và sẽ thao tác với chuỗi JSON này.

VD 1 cách triển khai JSONP đơn giản:

JSONP endpoint: jsonp_example.com/json.php


Name:  t1.jpg Views: 97 Size:  46,9 KB

Trên JSONP client: jsonp_client.com

Name:  t2.jpg Views: 96 Size:  38,3 KB

Dữ liệu trả về:[CODE=php] JsonpHandle({“1”:“This”, “2”:“is”, “3”:“JSONP”, “4”:“example”})[/CODE]

Đoạn string này nằm trong thẻ script, trình duyệt sẽ hiểu nó là mã Javascript và thực thi hàm JsonpHandle.

Để tăng khả năng an ninh, các trang web lớn có hạn chế đối với hàm callback. Theo đó, tên hàm callback chỉ bao gồm các kí tự [a-zA-z0-9_\.] (VD: Google). Mục đích của việc này là chặn việc thực thi code Javascript 1 cách tùy ý.
2. Flash policy

Flash từ lâu đã được coi là một ứng dụng có tính bảo mật không cao. Đơn cử là việc Apple không hỗ trợ Flash trên một số thiết bị của họ như iPhone, iPad.
Flash có một chính sách tuân thủ SOP, quy định việc một ứng dụng Flash nằm trên domain A không được gửi request đến domain B, trừ khi domain B có chứa file crossdomain.xml với cấu hình phù hợp. Việc cho phép gửi request hay không được thực hiện bởi Flash player.
Kỹ thuật Rosetta Flash
1. Kịch bản tấn công
Trong 1 cuộc tấn công Rosetta Flash, hacker sẽ lừa nạn nhân click vào 1 website được điều khiển bởi hacker, trang này có chứa 1 đoạn mã Flash độc hại có khả năng bypass Flash policy và gửi request tùy ý đến website bị lỗi với session của nạn nhân, sau đó có thể chuyển dữ liệu nhạy cảm về một website do hacker kiểm soát. Như vậy đây là 1 cuộc tấn công CSRF.
Name:  11.jpg Views: 98 Size:  41,0 KB

Trên domain vuln.com có chứa 2 site:
· jsonp.php: JSONP endpoint
· secret.php: trang cá nhân của người dùng mà hacker muốn lấy dữ liệu


Cụ thể, hacker sẽ:
· Gửi 1 request đến JSONP endpoint, với hàm callback là đoạn code Flash do hacker tạo sẵn. Dữ liệu trả về cho trình duyệt có dạng: <flash>(<Jsonp data>)
· Đoạn dữ liệu này sẽ được trình duyệt sẽ hiểu là 1 file Flash và được chuyển cho Flash player để thực thi.
· Flash Player của nạn nhân hiểu code Flash được lấy về từ domain vuln.com và gửi request cũng đến domain vuln.com, nó sẽ không check crossdomain.xml trên vuln.com và cho phép gửi request.
Flash Player nhận dữ liệu trả về từ vuln.com/secret.php, POST dữ liệu này về trang attacker.com/log.php. Ở domain attacker.com, hacker sẽ cấu hình crossdomain.xml để Flash player của nạn nhân cho phép gửi request đến.


Sau khi thực hiện request đến website bị dính lỗ hổng với session của nạn nhân, hacker có thể:
Lấy được nội dung trang web đó với quyền truy cập của nạn nhân.
· Thực hiện những hành vi không mong muốn như chuyển tiền, đổi mật khẩu …


2. Chi tiết kỹ thuật
Như đã nêu trên, các website có tính bảo mật cao sẽ giới hạn kí tự trong tên hàm callback truyền cho JSONP endpoint. Thông thường tên hàm callback sẽ chỉ được chứa những kí tự [a-zA-Z0-9_\.]. Vì vậy ta cần tạo ra 1 file Flash hợp lệ chỉ chứa những kí tự này.
File Flash thường có 3 dạng:
· Uncompressed
· Zlib-compressed
· LZMA-compressed
Tương ứng với 3 định dạng: không nén, nén với zlib hoặc nén với LZMA. Ở đây ta sẽ tạo ra file Flash nén zlib từ file Flash không nén. Mục tiêu là chuyển tất cả các byte về các kí tự hợp lệ.
File Flash nén zlib có 4 trường:
- Signature: Luôn luôn là CWS => hợp lệ
- Version
- File length
- Zlib data


May mắn cho chúng ta là Flash Player sẽ bỏ qua những trường không hợp lệ. Vì thế ta có thể đặt cho những trường này các giá trị [a-zA-Z0-9] và file Flash vẫn sẽ được thực thi.


3. POC
Phần này chúng ta sẽ giả lập 1 cuộc tấn công Rosetta Flash. Ở đây vulnerable.com là domain bị dính lỗ hổng, attacker.com là domain do hacker kiểm soát.
Ta sẽ tạo ra một file Flash có nhiệm vụ “GET” đến vuln.com rồi “POST” tất cả nội dung về attacker.com. Dữ liệu này được lưu trong biến x

Name:  t3.jpg Views: 97 Size:  50,2 KB

Sau khi compile code Actionscript trên ra một file Flash ở dạng không nén, dùng tool Rosetta Flash để tạo ra file Flash hợp lệ, ta gắn vào thẻ <object> như dưới đây:

Name:  t4.jpg Views: 96 Size:  301,0 KB
Thẻ param dùng để đọc những biến đầu vào cho file Flash. Ở đây có 2 biến:
- url: Trang web chứa dữ liệu nhạy cảm cùng domain với trang JSONP endpoint.
- exfiltrate: Trang web do hacker kiểm soát, dùng để lưu dữ liệu nhảy cảm lấy từ url.


Hacker sẽ lừa nạn nhân click vào trang web có nội dung như trên và tất cả nội dung của vuln.com/secret.php với quyền truy cập của nạn nhân sẽ được chuyển đến attacker.com/log.php. Như vậy hacker đã lấy được dữ liệu nhạy cảm.

Nhận xét

Bài đăng phổ biến từ blog này

Free 2000 Drok Tìm Kiếm Website lỗi SQLi

index.php?id= trainers.php?id= buy.php?category= article.php?ID= play_old.php?id= declaration_more.php?decl_id= pageid= games.php?id= page.php?file= newsDetail.php?id= gallery.php?id= show.php?id= staff_id= newsitem.php?num= readnews.php?id= top10.php?cat= historialeer.php?num= reagir.php?num= Stray-Questions-View.php?num= forum_bds.php?num= game.php?id= view_product.php?id= newsone.php?id= sw_comment.php?id= news.php?id= avd_start.php?avd= event.php?id= product-item.php?id= sql.php?id= news_view.php?id= select_biblio.php?id= humor.php?id= aboutbook.php?id= ogl_inet.php?ogl_id= fiche_spectacle.php?id= communique_detail.php?id= sem.php3?id= kategorie.php4?id= faq2.php?id= show_an.php?id= preview.php?id= loadpsb.php?id= opinions.php?id= spr.php?id= pages.php?id= announce.php?id= clanek.php4?id= participant.php?id= download.php?id= main.php?id= review.php?id= chappies.php?id= read.php?id= prod_detail.php?id= viewphoto.php?id= person.php?id= productinfo.php?id= showimg.php?id= view.php?id=

Foxit Phantom 2.2.4.0225 full key- đọc, chỉnh sửa và in file PDF

Foxit Phantom là phần mềm cực nhẹ, cực chuyên nghiệp trong việc đọc, chỉnh sửa và in file PDF. Bạn có thể tùy chỉnh mọi thứ trong file PDF giống như word vậy. Mình sẽ share với các bạn bản cài đặt mới nhất 2.2.4.0225 và đặc biệt là có file key cho các bạn dùng, các bạn ko phải lo đến vấn đề tìm crack nữa. Link download :  http://www.mediafire.com/?6u2vnjvfcsvorca  https://drive.google.com/file/d/1ZLtZ1Uqd9Z4oU-LCVcbGMITTEnw_W-kH/view?usp=sharing https://www.fshare.vn/file/T9JNEO1QDDH1

Công cụTheo dõi Cách cập nhật giá cryptocurrency thực trên Google Sheets để quản lý danh mục đầu tư

Xin chào anh em, hôm nay mình xin giới thiệu với anh em một cách để cập nhật giá cryptocurrency theo thời gian thực trên Google Sheet. Mình biết nhiều anh em cũng như mình đang quản lý danh mục đầu tư bằng Google Sheet và gặp phải khó khăn lớn nhất là phải nhập tay giá của từng đồng crypto theo thời gian thực, và mỗi lần muốn cập nhật danh mục thì lại phải nhập tay lại từ đầu. Trong bài viết ngày hôm nay mình sẽ giải quyết khó khăn đó cho anh em. Có thể nhiều anh em chỉ quản lý danh mục trên trang Blockfolio hoặc app Coin stats, tuy nhiên các trang hay app thường chỉ thống kê chính xác giá trị danh mục, còn lời lỗ thường sai. Mình thì thích tính lời lỗ chính xác nên hay dùng Google Sheet hơn, nay có thể cập nhật giá crypto ngay lập tức thì mọi thứ trở nên thật sung sướng. Lưu ý là mỗi lần mở file Google Sheet lên thì dữ liệu sẽ được tự động cập nhật, nhưng lúc đang xem thì giá sẽ không nhảy, F5 cũng không được (do API). Anh em cứ làm theo như mình hướng dẫn thì sẽ cập nhật giá