Cách mà tui đã “lạc” vào hệ thống mail marketing của một ngân hàng Việt Nam!

a couple of months ago

TL;DR: Mình tìm thấy lỗi bảo mật trong hệ thống email marketing của một ngân hàng tại Việt Nam.

Cũng kha khá thời gian kể từ bài viết trước. Thanh niên rảnh rỗi ngày xưa xin chia sẻ các bạn cách mà mình dùng để truy cập vào hệ thống mail của một ngân hàng, tạm gọi là Zbank nhé.

Dông dài cái, vì công việc nên dạo rồi mình có mở tài khoản tại Zbank. Và cũng hơi fail khi khai báo thông tin với email cá nhân (mải dòm bé tư vấn dễ thương quá nên hông để ý luôn), và câu chuyện bắt đầu từ đây.

Không bao lâu sau đó mình thường xuyên nhận mail khuyến mãi từ Zbank, không vấn đề gì cho đến khi mình nhấn unsubcribe theo link gửi từ email đó. Đời không như mơ, mail vẫn báo về tiếp 🙁 . Không biết thế nào mà tiện tay check luôn xem có gì hay ho không.

Từ cái link unsubcribe: http://mailserver.zbank.com/unsubscribe.php?M=147622898&C=XXX, nhận thấy có thể email khách hàng được quản lý tại mailserver.zbank.com. Truy cập thì browser redirect tới page login luôn. Hê hê, hơi ngạc nhiên. Nhưng không có username/password thì làm được gì 🙁 . Cơ mà với việc có link đăng nhập thì tỉ lệ thành công đã tăng lên chút ít.

Sau khi thử vài cách bypass login, check sql injection từ các link thu thập được mà không có kết quả, mình chuyển sang hướng khác. Analytics source để tìm lỗi, kiểm tra source có sử dụng thư viện nào khác không (check included javascript,…)

Để check hệ thống đang xài mã nguồn nào, có nhiều cách, đây là những cách mình thường dùng:

  • View-source: Nhiều lúc trong source của webpage sẽ có thông tin về chính nó như tên, version, tag định danh..
  • Tìm trên google: sử dụng những keyword bạn có từ url, analytics từ source, ví dụ như ở đây là “/unsubscribe.php?M=”, …

Từ những gì thu thập được thì mình biết hệ thống sử dụng mã nguồn “Interspire Email Marketer”, version thì chưa xác định được.

Làm gì tiếp theo? Nếu bạn từng đọc bài này https://devco.re/blog/2016/04/21/how-I-hacked-facebook-and-found-someones-backdoor-script-eng-ver (nếu chưa thì nên đọc, có nhiều thứ để học hỏi lắm), thì đó là những thứ mình làm sau đó. Cố gắng tìm source của mã nguồn này, vì đây là mã nguồn có phí, những gì mình thấy là 1 bản clone trên github từ 4 năm trước.

Bộ source có vẻ hơi outdate, nhưng nhờ vậy mình có link để kiểm tra version hiện tại của Zbank, thêm được chút ít manh mối rồi. Để khỏi tốn công thì trước khi analytics source, phải check xem mã nguồn này có CVE nào không. May mắn là một exploit với score 10 đập vào mắt 😐 ảnh hưởng đến cả version hiện tại của Zbank.

Ngon rồi, source hiện tại bị ảnh hưởng bởi bug này. Nghiên cứu mấy cái document liên quan thì sau một hồi lọ mọ, mình cũng có được exploit, và sử đụng nó để thực hiện “đột nhập” vào hệ thống.

Điểm yếu bị khai khác là cách thức kiểm tra cookie với user đã đăng nhập hay chưa. Nó dễ dàng bị khai khác chỉ bằng cách chỉnh sửa vài giá trị. Chi tiết cách thức thì bạn nào hứng thú có thể đọc báo cáo ở đây (https://security.infoteam.ch/en/blog/posts/narrative-of-an-incident-response-from-compromise-to-the-publication-of-the-weakness.html)

Vậy là gameover với màn hình quản lý trước mặt, coi như “trên tay” vài triệu email với thông tin khách hàng. Nhanh chóng tìm cách liên lạc với Zbank để thông báo lỗi thôi 😀

Danh sách mail với đầy đủ info của Zbank

Danh sách mail với đầy đủ info của Zbank

Trong thời gian chờ đợi, tiếp tục kiểm tra xem có thể thu thập được gì nữa không. Té ra vẫn còn vài thứ hay ho.

Bảng setting với php cronjob, mysql account với quyền root 🙁 . Với việc lợi dụng những thông tin này, tầm ảnh hưởng của bug có thể được nâng lên thành RCE (điều khiển server).

Những thông tin này sau đó cũng được mình gửi chi tiết đến bộ phận bảo mật của Zbank. Cám ơn bộ phận bảo mật đã phản ứng tích cực và thực hiện fix lỗi rất nhanh.

Kinh nghiệm rút ra từ case này:

Với attacker (như mình):

  • Thử check error ở tất cả các field (xss, sql injection, bypass login..)
  • Cố gắng thu thập thông tin về target càng nhiều càng tốt.
  • Tìm exploit từ những thư viện, mã nguồn mà hệ thống sử dụng.

Với doanh nghiệp:

  • Có lộ trình kiểm tra thông tin lỗi với những source sử dụng trên hệ thống, nhất là với những doanh nghiệp lớn.
  • Ngăn chặn truy cập trực tiếp đến những resource quản lý từ internet.
  • Không sử dụng tài khoản với quyền cao nhất đối với những service hệ thống, vì có thể bị lợi dụng để thực hiện tấn công leo thang.

Ngoài Zbank thì mình cũng tìm thấy vài ngân hàng khác có sử dụng source này, và cũng outdate, tuy nhiên vì không có POC rõ ràng (access đến trang login bị chặn), nên mình không có cơ sở để báo lỗi. Mình cũng suggest là nên thực hiện vá lỗi ngay.

Sẵn tiện, bạn nào có contac liên lạc của MobiFone, Vnexpress cho mình xin với. Có vài bug khá nghiêm trọng, mình đã thử tìm cách liên lạc nhưng không khả quan.

Ps: Mình có cái group để thảo luận về bảo mật, bạn nào hứng thú thì join với mình nhé

https://www.facebook.com/groups/183948712438690/

Facebook mình: /Kut0n

A&C

About the Author

A&C

Thanh niên ham chơi hơn ham học, thích bay nhảy hơn đi mần, tinh thần giao lưu kết bạn nhưng ngại tiếp xúc. Mong manh khó vỡ, ảo tưởng sức mạnh >:)

Follow A&C:

Leave a Comment:

All fields with “*” are required

Leave a Comment:

All fields with “*” are required