Đi câu cá với target="_blank"

Giới thiệu

Đi câu cá hay mấy anh Tây hay gọi Phishing có nghĩa là lừa đảo nhằm đánh cắp tài khoản, mật khẩu, thẻ tín dụng của người dùng. Bài viết này sẽ giới thiệu các bạn cách câu cá với thuộc tính target="_blank" của trình duyệt.

Cách thức

Nếu bạn dùng thuộc tính target="_blank" trên một liên kết mà không kèm thuộc tính rel="noopener noreferrer" để mở một trang web không thuộc quyền kiểm soát của bạn. Trang vừa mở sẽ truy cập được toàn bộ window object của bạn thông qua window.opener

Đoạn mã dưới đây sẽ minh họa điều đó

if (window.opener) {
  window.opener.location = "https://khoanguyen.me/phishing-target-blank/landing.html?referrer="+document.referrer
}

Đâu có gì nghiêm trọng phải không nào? Hãy thử tưởng tượng https://khoanguyen.me/phishing là một trang mồi của mấy anh câu cá với giao diện đăng nhập như trang của bạn, người dùng sẽ bị mất mật khẩu một cách dễ dàng.

Ví dụ

  1. Vào fanpage Khoa Nguyen dot me
  2. Bấm Like giúp mình (câu like rẻ tiền)
  3. Bấm vào liên kết khoanguyen.me. Một thẻ/ cửa sổ trình duyệt mới sẽ mở ra
  4. Chú ý thẻ ban đầu (Facebook.com) đã được chuyển tới trang này

Khắc phục

Cách khắc phục là chèn thuộc tính rel="noopener noreferrer" vào tất cả các liên kết có thuộc tính target="_blank". Hoặc ít nhất là vào những liên kết do người dùng chèn vào.

Và trên hết, nếu bạn phát hiện trang web nào có lỗ hổng này, hãy báo ngay cho quản trị của các trang web đó để khắc phục


P/S: Bài viết này được đăng tải lần đầu trên blog của mình


P/S 2: DNH cũng dính cái này. Nhấp vào link này để kiếm tra (khoanguyen.me)

6 Likes

Uhmm, hổng hiểu lắm.

Dòng này nghĩa là sao?

Tức nếu anh có tab trên browser đang mở Facebook và tab này ở vị trí đầu tiên, nó sẽ đc chuyển tới trang chỉ định sẵn :smile:

1 Like

sao e dùng firefox không bị sao nhỉ?

thêm cái target="_blank" cho mấy cái link <a href="..." target="_blank" ... nghĩa là khi bấm chuột trái vào link đó sẽ hiện ra tab mới, bình thường bấm chuột trái vô link là nó hiện ra trong tab hiện tại.

Javascript hay HTML gì đó có 1 cái biến rất ư là “bự”, là window. Trong biến bự này có biến window.opener cho biết tab nào mở ra tab hiện tại. Thông thường nó là null, tức là người dùng bấm link từ thanh địa chỉ hay bookmark gì đó, ko có opener nào cả. Với các link target="_blank" thì tab mới mở ra biết tab cũ, tức là window.opener của tab mới “trỏ” vào tab cũ. Vấn đề xảy ra ở đây, nếu tab mới mình cho chạy script như trên:

if (window.opener) {
  window.opener.location = "https://..."
}

thì tab cũ sẽ load trang https://... đó. Nếu mình tạo trang https://... có nội dung y hệt trang facebook login, thông báo người dùng cần login lại vì cookies hết đát => lấy được mật khẩu của nạn nhân.

link của Khoa đổi trang facebook cũ thành link tới "https://khoanguyen.me/phishing-target-blank/landing.html?referrer="+document.referrer đó

cái này bị người ta chửi nè https://redd.it/4zikpx

How the fuck is the default behavoiur of “_blank” links not “noopener” by default? Atleast if they’re not the same domain.

This is insane.

:joy::joy::joy:

1 Like

Để tí check. :wink: Khoa nhớ là làm được

mình cũng xài FF đây, bị đổi trang cũ mà. Có xài Noscript hay add-on gì chặn script trang lạ ko? Hay là nhìn trang mới rồi chả thấy xảy ra cái gì :joy: Cái trang bị dính là ở tab cũ đấy, ko phải ở tab mới mở ra.

nhấn chuột giữa vô link là nó hiện ra tab mới, ko bị vướng cái opener này thì phải. Với lại nhìn thanh địa chỉ là biết thật giả liền (ai cực kì cẩn thận mới để ý). Chỉ khi xài di động nó ẩn thanh địa chỉ đi thì mới chết.

Cũng FF (49.0.1) luôn và ko đc. Nhưng chrome được liền. :?

1 Like

Mình dùng Safari trên iphone và cũng ko bị gì.
Trong tương lai chắc bọn browser sẽ tự động chặn hoặc hạn chế nên chắc cũng ko đáng lo ;).

Edit: vào mấy trang porn lâu lâu cũng bị vài cái ad popup với redirect thế này. Chắc kiếm ra tiền nên bọn browser sẽ ko chặn đâu :((

4 Likes

Mình vừa test trên FF 49.0 thì vấn được nhé. Có khi máy bạn cái thêm extensions, anti-phishing gì đó cũng có thể.

@Huy_Hoang_Pham safari coi phiên bản chỗ nào anh ? Em đang dùng iPad iOS 10 và vẫn bị lỗi này.

Nói chung là em test hết với mấy trình duyệt máy tính với di động mà em có thể tiếp xúc được trước khi viết bài này mà

A dùng iOS 8, vào đây bấm vào link vẫn ko thấy gì :wink:

FF e chỉ cài Firebug thôi chứ ko cài gì thêm :?

1 Like

làm cái gif cho sinh động nè, cho ai may mắn ko thấy nó hoạt động như thế nào :joy:

5 Likes

lạ thật, qua Windows e dùng Chrome với FF test đc hết.

1 Like

Bạn dùng phần mềm gì để tạo file gif vây? Cho phép mình lấy hình của bạn bỏ vào bài viết nhé

1 Like

Có lẽ trường hợp Phishing kiểu này khó mà lừa được mình (vì một lần vô tình mình đã bị lừa bởi chính mình) bởi vì mình không login từ bất cứ form đăng nhập nào thể hiện trên trình duyệt.

Mình chỉ login khi lần đầu mở trình duyệt lên vào gõ trực tiếp địa chỉ trang web cần vào, cần login. Một khi trang nào má session expired mà muốn login lại, mình đóng trình duyệt lại và rm -rf /thư-mục-chứa-trinh-duyệt và rồi lại tar lại một thư mục chứa trình duyệt từ một file .tar.gz được download từ Firefox có kiểm tra hash sum để tránh trường hợp trình duyệt “nhiễm bẩn” mất kiểm soát.

Troll chủ topic tí: bạn làm cách nào để câu được cá (là mình) khi mình dùng http://lynx.browser.org để duyệt web? :smiley:
http://imgur.com/a/4wGL0

3 Likes

ShareX free trên Steam đó. Lấy thoải mái :stuck_out_tongue:

2 Likes

Hơi off topic nhưng có tool nào tương tự cho Mac ko bạn hiền ơi :joy:

mình ko xài Mac nên ko biết :kissing:

Em bó tay với thím. Thế thím có viết luôn một con shell script để tự động hóa luôn không?

lol. Trình duyệt nó không chạy Javascript thì làm sao em dụ thím đây.

Mấy anh tây trên Twitter hay dùng em này http://recordit.co/

Awesome!

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?