Sau một năm blog không được quan tâm mình xin trở lại về một bài cũng về vấn đề cũ: "VÉ MÁY BAY".
Dạo quanh một vài trang trước đây cũng dính lỗ hổng này thì hiện tại đã được fix hết chỉ còn lại của easybooking.vn.
Sau quá trình đặt thử một vài chiếc vé và phân tích logic thì phát hiện được một số vấn đề sau:
1. Trong quá trình đặt vé và hoàn thiện có session nhưng session không có tác dụng.
- Với đường link: http://easybooking.vn/FlightBook/Finish?sessionId=KHz99kKkHUq357-sbcwwpQ&code=10034511, ta thu được kết quả:
- Với đường link: http://easybooking.vn/FlightBook/Finish?sessionId=KHz99kKkHUq357-sbcwwpQ&code=10034510, ta thu được kết quả:
2. Chú ý trong đường link đặt hàng có những thành phần: mã đơn hàng và email. Quay trở lại trang tra cứu vé, sau khi nhập mã đơn hàng và email, ta thu được toàn bộ nội dung đặt vé:
Time line:
- 1 ngày đẹp trời năm 2017: phát hiện lỗi.
- 14:00 07/10/2018: rảnh rỗi, check lại lỗi các site.
- 18:00 07/10/2018: báo cho trực bên easybooking.vn.
- 19:14 07/10/2018: kỹ thuật viên easybooking.vn gọi hỏi cụ thể lỗi.
- 10:00 08/10/2018: bên easybooking.vn đã được sửa.
- viết bài cảnh báo.
P.s: Một trường đại học lớn với rất nhiều các hoa hậu cũng đã từng dính lỗ hổng này. :v
Thứ Tư, 10 tháng 10, 2018
Chủ Nhật, 7 tháng 10, 2018
Hành trình với PASGO - Phần 1
Chào mọi người hôm nay mình xin trình bày về lỗ hổng bảo mật liên quan đến phần xác thực người dùng và một số vấn đề râu ria khác. Chả là target này là của công ty bạn mình - một công ty tổng hợp bàn ăn và đặt bàn online, lượng khách hàng cũng khá lớn nó bao gồm cả nền tảng web và mobile app. Vì khá có hứng thú với chuyện ăn uống nên mình đặt quyết tâm target này trong 2 tuần.
1. Wireshark
Sau khi thử với website pasgo.vn không tìm được api của nó mình tiến hành thử với app android của pasgo cùng genymotion + wireshark (cách cài đặt các bạn có thể google nhé, ngoài ra còn có các công cụ để view khác như charles proxy ). Tiến hành đăng nhập và khởi động wireshark, bên wireshark mình bắt đầu thấy các request từ app, lọc theo http thu được các request dưới dạng đầy đủ từ login, tìm kiếm.
![]() |
Wireshark 1 |
Sở dĩ thấy được là do khi gọi services các gói tin không được mã hóa nên ta thấy được các gói tin dưới dạng http đồng thời với đó là các thông tin dưới dạng clear-text. Các services ở đây mình thấy được như: login, getDanhmuc, ... đều có rõ request và response của nó. Tiếp đó mình đi vào nội dung từng request. Rõ ràng ở đó mọi thông tin đều ở dạng clear-text (rất nguy hiểm phải không nào, khi khách hàng dùng mạng LAN truy cập vào app sẽ bị ăn cắp thông tin tài khoản một cách dễ dàng), các bạn có thể thử với Ettercap. Đây là cũng là một lý do khuyên các bạn không nên truy cập các trang web có thông tin quan trọng khi sử dụng mạng công cộng.
![]() |
Wireshark 2 |
Và ta đã có được đường dẫn các services của trang web.
2. Vấn đề Authentication của services
Việc đầu tiên là mình xem yếu tố xác thực của các services yêu cầu quyền người dùng. Công cụ test services như thường lệ là Postman, các thông số của request thì cứ nhìn bên wireshark là ra thôi. Sau khi thử các chức năng chính có yêu cầu quyền người dùng mình thấy các request này chỉ cần tham số là nguoidungId, bắt đầu rồi đây, ... tham số mà lập trình viên sử dụng ở đây là chuỗi 16 ký tự được sinh ra từ hàm sinh id trong C#. Chỉ cần nguoidungId thôi à, thế nếu mình dùng Id người khác để mượn quyền rồi đặt bàn đổi thông tin thì sao nhỉ. Vấn đề bây giờ là lấy nguoidungId không thể đoán được vì là hàm sinh từ server (chắc lập trình viên cũng chủ quan vì suy nghĩ này).
Lần theo các chức năng để xuất hiện các người dùng khác trong phần bình luận, kết quả trả về từ server có bao gồm cả Id của họ ^^. Lúc này mình thử sử dụng Id đó xem thông tin cá nhân và thực hiện thao tác khác thì quả thật mình đang sử dụng app trên danh nghĩa người đó rồi.
![]() |
Postman 1 |
Thấy được lỗ hổng mình có email report cho bộ phận IT của pasgo và rất mừng bên đó phản hồi rất nhanh và nhiệt tình:
09:09, 25 thg 5, 2018: Email thông báo về lỗ hổng
09:28, 25 thg 5, 2018: Nhận được phản hồi từ pasgo và lỗ hổng đã được khắc phục ngay lập tức (bằng cách thêm token), rất chuyên nghiệp.
...tiếp tục trao đổi một số vấn đề khác.
Trên đây là bài viết của mình về vấn đề mã hóa request và xác thực người dùng. Mong các bạn ủng hộ và đón xem những phần tiếp theo.
Đăng ký:
Nhận xét (Atom)