Monday, November 14, 2016

Lo ngại thói quen dùng chung mật khẩu cho nhiều tài khoản dịch vụ mạng, ngân hàng Vietcombank vừa lên tiếng cảnh báo khách hàng của mình có tài khoản trên Vietnamworks.com - vừa bị tấn công hồi đầu tháng 11/2016.
Theo Vietcombank, mặc dù đại diện Vietnamworks.com đã khẳng định tài khoản người dùng hoàn toàn bình yên vô sự nhưng do một số khách hàng vẫn có thói quen sử dụng tên truy cập và mật khẩu chung cho nhiều dịch vụ khác nhau nên việc Vietnamworks.com bị tấn công mạng và có khả năng gây lộ thông tin là một nguy cơ tiềm ẩn.
Do đó, ngân hàng này khuyến cáo những khách hàng Vietcombank đồng thời đang là thành viên của websiteVietnamworks.com cần chủ động kiểm tra và lập tức thay đổi mật khẩu truy cập dịch vụ ngân hàng trực tuyến nếu sử dụng chung thông tin truy cập. Không bao giờ sử dụng thông tin truy cập dịch vụ ngân hàng trực tuyến làm thông tin truy cập các hệ thống /website khác.
"Gần đây đã có một vụ việc về an ninh mạng của một vài trang web con liên quan đến VietnamWorks. VietnamWorks xin xác nhận một lần nữa rằng cơ sở dữ liệu của 4 triệu người dùng đều an toàn. Để giúp bạn an tâm hơn về tài khoản của mình, chúng tôi khuyến khích các bạn thay đổi mật khẩu tài khoản VietnamWorks" - Thông báo trên Website Vietnamworks.com.
Đặc biệt, người dùng tuyệt đối không nên tiết lộ tên đăng nhập, mật khẩu truy cập/mã PIN của bất kỳ dịch vụ ngân hàng điện tử, mã xác thực OTP, số thẻ, số tài khoản của mình cho bất cứ ai qua bất kỳ kênh nào như điện thoại, email, mạng xã hội, ứng dụng, website…
Ngoài ra để đảm bảo an toàn, người dùng nên thường xuyên thay đổi mật khẩu truy cập dịch vụ ngân hàng trực tuyến (tối thiểu định kỳ 3 tháng/lần, theo khuyến cáo của ngân hàng).
Lưu ý đặt mật khẩu phải có đủ độ dài (từ trên 7 ký tự), có sự kết hợp giữa chữ hoa với chữ thường, chữ số; không sử dụng mật khẩu có chứa thông tin mang tính cá nhân mà người khác dễ dàng suy đoán như ngày tháng năm sinh, số điện thoại, biển số xe, tên bản thân, tên của người thân như vợ chồng/con, hay dãy số liên tục đơn giản như 1234567…

Làm một developer “có tâm”, chúng ta không chỉ phải đảm bảo code chạy được, mà còn phải bảo đảm về bảo mật (với các hệ thống quan trọng). Có nhiều lúc, lỗi bảo mật đến từ chính sự ẩu tả của developer. Hôm nay mình sẽ lôi trang web của Lotte Cinema ra làm mẫu để giải thích cho các bạn.
Lưu ý: Bài viết mang tính chất học thuật, bình luận về kĩ thuật. Mình không ủng hộ, cũng không chịu trách nhiệm nếu bạn mang kiến thức đề cập trong bài ra làm chuyện trái pháp luật! Thân.

Giới thiệu

Tại sao mình lại chọn Lotte Cinema? Đơn giản là cách đây mấy tháng, khi nhắc đến mật khẩu, mình đã nêu ra một lỗ hổng bảo mật khủng khiếp của Lotte Cinema: Lưu mật khẩu dưới dạng text.
Đến nay, lỗ hổng này vẫn chưa được sửa, điều này chứng tỏ hai chuyện: Đội ngũ lập trình web lotte cinema thiếu kiến thức cơ bảnvề lập trình và cũng không thèm quan tâm gì đến việc bảo trì sửa lỗi. Điều này đồng nghĩa với việc website sẽ có nhiều lỗ hổng để khai thác.
Với logic đó, mình bắt đầu tìm lỗ hỗng của lotte với tâm thế học hỏi. Thật không ngờ, mình tìm được không chỉ một, mà đến tận vài lỗ hổng… cực kì chết người, có thể làm toàn bộ hệ thống ngừng hoạt động.

Bắt đầu “câu cá”

Đầu tiên, hãy nhìn góc trên bên trái trình duyệt. Một website không có https, đồng nghĩa với việc toàn bộ thông tin bạn điền vào (username, password) hoàn toàn có thể bị hacker trộm nếu bạn dùng chung đường dây mạng/chung wifi với hacker đó (Xem thêm về sniffing). Đó là lý do các trang ngân hàng, facebook, gmail, thanh toán điện từ đều đòi hỏi phải dùng https.
11
Tiếp theo, ta bắt đầu với việc kiểm tra cookie. Các bạn tải addon EditThisCookie về để làm việc nhé. Thử đăng nhập và xem lotte cinema lưu gì trong cookie nào.
2
Các bạn không nhìn lầm đâu, chính là username của các bạn đấy? Thôi, chúng ta cứ cầu trời là họ lưu username để nhắc bạn khi bạn cần đăng nhập lại thui hạ. Thử đổi sang giá trị khác rồi refresh trang xem nào.
CÁI LỀ GÌ THỐN!!! Mình bị chuyển sang nick khác mất rồi. Thật không thể tin nổi. Một lỗi bảo mật to như bánh xe bò đã bị lộ chỉ sau 5p nghiên cứu. 1-0 cho Lotte Cinema. (Lỗi này có tên gọi là impersonation).

Câu nhầm … “cá mập”

Nhờ đổi cookie, mình đã hack được vào tài khoản người khác. Ok ngon, có thông tin người dùng luôn! Giờ mình thử đổi thông tin xem nào, được luôn. Thử đặt vé xem nào, cũng được nốt!
4
Có thể dụ dỗ Lotte Cinema gửi mật khẩu cho mình không nhỉ? Thử xem nào, đổi email của user này sang sang email mình, sau đó báo mất mật khẩu. Vào email xem sao?
5
Ồ, nhận được mật khẩu hiện tại luôn, mail của Lotte nhanh thật! Vì một user thường tái sử dụng mật khẩu ở nhiều trang, mình có thể thử dùng username và mật khẩu này ở một số trang khác để mò account. Thấy chết người chưa??
Thử đổi mật khẩu hiện tại xem, được luôn. Giờ mình đã có thể đăng nhập với mật khẩu mới đổi. Đây là lỗi thứ 2: Khi thay đổi mật khẩu, bắt buộc người dùng phải đổi mật khẩu cũ. Tỉ số giờ đã là 2-0 cho Lotte Cinema.

Bonus thêm “cá voi”

Hai lỗi trên đã đủ làm tơi tả toàn bộ hệ thống. Chỉ cần viết một con bot nho nhỏ, lần lượt thay giá trị membername trong cookie (từ a tới zzzzzzz) là có thể lấy gần như toàn bộ thông tin khách hàng, hoặc đổi toàn bộ password làm người dùng không đăng nhập được. (Các bạn khác dùng username dài quá thì chịu).
Thế nhưng mọi chuyện chưa dừng ở đây. Mình tiếp tục thử nghiệm điền tiên vào khung “Họ tên”. Lotte tiếp tục lòi ra lỗi XSS (Tấn công bằng cách chèn script vào trang chính).
6
Khá may mắn Lotte là đã cắt chuỗi thành 30 kí tự nên không thể điền JavaScript dài. Tuy nhiên, điều này vẫn không thể làm khó được mình khi viết file javascript ở nơi khác, sau đó embed script vào (Up file js lên dropbox rồi lấy shortlink là xong).
8
Lỗi XSS này chỉ hiện ra ở mỗi trang của user nên không thể dùng để deface website. Tuy nhiên, mình vẫn có thể hiện pop-up giả mạongười dùng tải virus như hình dưới. Dùng JS, mình có thể lấy số thẻ, số CMND để người dùng tin tưởng rằng message là của lotte (Một phần do bọn lotte chỉ dùng alert để code cho nhanh nữa).
12
Kết hợp với con bot đã nói phía trên, mình hoàn toàn có thể dụ dỗ rất nhiều người dùng Lotte tải virus khi họ đăng nhập vào hệ thống. Không còn lời nào để nói, 3-0 cho Lotte Cinema!

Kết luận

Những lỗi bảo mật mình chỉ ra không có gì cao siêu! Do mình không phải dân chuyên về bảo mật nên những kĩ thuật tấn công của mình cũng chỉ dừng ở mức vô cùng cơ bản. Vấn đề của Lotte Cinema là ở chỗ họ “không biết tí gì về bảo mật”, dẫn đến chuyện hệ thống bảo mật quá kém.
Như các bạn đã thấy, hành vi này là sự thiếu tôn trọng khách hàng và còn có thể gây nguy hại cho người dùng. Tuy nhiên, có vẻ Lotte Cinema đã rất khôn ngoan trong khâu pháp lý khi rũ bỏ mọi trách nhiệm trong phần “Thỏa Thuận”. Tuy thua 3-0 nhưng vẫn không phải chịu trách nhiệm gì, hoan hô Lotte Cinema.
12
2
Vì lý do đạo đức, mình đã gửi nội dung bài viết cho những người có trách nhiệm trên Lotte Cinema một khoảng thời gian khá lâu trước khi công bố. Tuy vậy, họ vẫn làm ngơ và không thèm quan tâm. RIP các bạn và các khách hàng của Lotte Cinema😀.
Dù vậy, mình vẫn khuyên các bạn không nên thử phá hoại hệ thống. Mình không muốn ngày mai lên Mương 14 lại thấy tin: [Hacker trẻ tuổi bị Lotte Cinema bắt. “Tất cả là do em lỡ xem Tôi đi code dạo”] đâu.
Lời khuyên cuối cùng: các bạn vẫn có thể xem phim ở Lotte, nhưng đừng điền bất kì thông tin cá nhân gì vào cái hệ thống trời đánh của nó nhé! Thân chào.
Các bạn có thể xem video tóm tắt bài viết ở đây. Nhớ like và subscribe trong link này nhé: https://www.youtube.com/c/toidicodedaoblog?sub_confirmation=1. Mình đang cần 100 sub để xin Custom URL cho Channel Tôi Đi Code dạo.

Update (30/08/2016): Sau khi bài viết được công bố rộng rãi trên MXH thì bên chịu trách nhiệm xây dựng website cho Lotte Cinema đã liên hệ trực tiếp với mình mình. Đến ngày 1/9/2016 thì các lỗi bảo mật trong bài đã tạm được fix rồi nhé.
123