Showing posts with label Lập trình. Show all posts
Showing posts with label Lập trình. Show all posts

Saturday, February 18, 2017

Tôi đã tìm ra XSS được BHD Cinema như thế nào

*Lưu ý: Mọi ảnh chụp màn hình đều được viết vào thời điểm hiện tại
Hôm nay tôi sẽ viết về lỗ hổng XSS của BHD Cinema. Vụ này khiến tôi nhớ đến vụ hack Lotte Cinema cách đây không lâu. Chuyện là như thế này. Hôm mùng 4 Tết, tôi đang đi tìm một bộ phim nào đó hay hay để đi xem với bạn. Lên Google search xem rạp gì hay không nào.
Hmmm rạp BHD ngay trên Vincom Phạm Ngọc Thạch tiện đường cho chúng tôi quá ngay dưới là Starbuck. Vào thử chọn phim nào
Web được cái design đẹp đấy vào đăng kí rồi chọn phim thôi
Thôi kệ đã. Bây giờ cái chính là vào đăng kí đặt vé đã không hết chỗ ngon bây giờ ^^
Vào đăng kí nhập hết thông tin thì mình nhận được thông báo
Số đã được đăng kí? Từ khi nào ý nhỉ ? Mình sực nhớ ra trước đây cũng đã định order vé rạp nhưng xong thôi do không đi được. Bỏ qua chuyện cá nhân :v Xem có phim gì hay đã. Thói quen của mình là xóa link đi để vào trang chủ

Cái gì đây thế này :v Môt ý tưởng lóe lên :v Thử thay sau error= nào
Quả không sai :v Error báo về cũng khác


Vậy không còn nghi ngờ gì nữa trang này đã bị dính XSS :v Để chắc chắn thử lại với alert nhé :v




Vậy ra hẳn XSS rồi :v
Mình đã kiểm tra mức độ thiệt hại thì thấy do đặt vé qua 123phim nên thiệt hại về tài sản của user gần như không có(123phim mình đã có kiểm tra và thấy HTTPS của nó theo kiểu giả cầy :) ) Vậy là một số người xấu có thể lợi dụng lỗ hổng này để cài virus, lừa đảo, chôm Cookie(:v Có acc này cũng chẳng làm gì ngoài xem mấy cái lịch sử vé phim)

Timelines report lỗi:
Tối mùng 3 Tết: Đã phát hiện ra lỗ hổng báo mật XSS khá nghiêm trọng(Do lộ liễu) trên bhdstar.vn ngay sau đó đã post bài lên J2TeaM Community
Ngày mùng 4 Tết: Đã gọi điện lên BHD trong HCM báo cáo bug. Tổng đài viên nói chuyện một cách thiếu lịch sự -> Coi đây là trò đùa -> Báo sẽ gọi lại ngay sau khi kiểm tra xong cũng không kiểm tra lại
Ngày 2/2 lịch dương: Admin rep inb trên fanpage
Ngày 5/2: Lai report lại :) Và bảo sẽ fix đến giờ chưa fix

Friday, February 10, 2017

Hướng dẫn tạo tài khoản c9.io

Để chuẩn bị số tiếp theo trong chuyên mục viết bot chat facebook bằng javascript mình đã chuẩn bị một video hướng dẫn tạo tài khoản c9.io để tránh mất thời gian cũng như là hướng dẫn các bạn tạo 1 IDE không chỉ để viết bot mà còn để lập trình những các khác một các free

                                  Các bạn đừng quên like video cho mình nhé :)

Lưu ý:  Phải sử dụng mail thật(Không sử dụng 10 Minutes Mail)

Thursday, February 9, 2017

HƯỚNG DẪN VIẾT CHATBOT CHO FACEBOOK: Phần I  - Giới thiệu về cơ chế hoạt động & Các khái niệm 


HƯỚNG DẪN VIẾT CHATBOT CHO FACEBOOK: Phần I  - Giới thiệu về cơ chế hoạt động & Các khái niệm 
Vào tháng 4 năm 2016, Facebook đã giới thiệt Facebook Messenger Flatform cho phép ta có thể viết được 1 chatbot tự động trả lời các user. Mình thích táy máy nghịch ngợm thì trong khi gần đâu cũng có máy mò ra một số source code rồi viết thêm để hoàn thiện 1 con chatbot demo cho các bạn. Nếu các bạn muốn thử hay test tại: m.me/noobislife nhé :3 Còn không hay xem ảnh ở dưới nhé  


Có 2 điều mình muốn nói: Thứ nhất: Đây là chuyên mục Lập Trình để chúng ta học hỏi và nghịch ngợm. Thứ 2 là các bạn hoàn toàn có thể làm bằng Chatfuel một cách đơn giản mà không có vấn đề gì hơn nữa chatfuel có thể nhiều RestAPI(Sẽ nói ở dưới) hơn và nhiều chức năng hơn nhưng ở đây mình muốn hướng dẫn các bạn tự làm :) Tự tay dev 1 con bot 
Tuy đa phần các developer nếu tự viết bot(Không xài Chatfuel nhé) thì sẽ dung Ruby để code nhưng mình không chuyên Ruby(Thực ra ở Google DevFest 2016) đã có 1 buổi hướng dẫn xài Ruby nhưng mình không viết được Ruby các bạn thông cảm nhé :D Tuy mình viết được Python nhưng nhiều trước có thử thì bị lỗi do vậy mình đã lên github search các repo có sẵn và tham khảo và hơn nữa nhiều người xài sẽ có người fix hộ những bug khó :D. Tuy nhiên theo lí thuyết, nếu bạn nắm được bản chất bản có thể dung php, java hay cả C#,… đều được. 
Ở Series này mình sẽ hướng dẫn các bạn từ nắm cơ chế, vấn đề đến lúc hoàn thiện 1 coiậnn bot tự trò chuyện bằng những gì nhập vào và đồng thời sử dụng Simsimi :D 
Vậy chúng ta cùng đi vào chủ đề chính nhé. Để hiểu rõ cách thức hoạt động của Bot bạn cần nắm rõ 2 khái niệm sau: Webhook và RestAPI. Về bản chất thì cả 2 được tao ra nhầm 1 mục đích đó là: Làm sao để 2 chương trình tuy viết bằng 2 ngôn ngữ khác nhau, tách biệt nhau mà vẫn có thể giao tiếp với nhau được. 
Webhook là gì? 
Các bạn biết Slack chứ? Slack tích hợp nhiềiậu tính năng là nhờ webhook đó. Giả sử bạn commit lên Git, git sẽ gửi 1 POST request lên webhook của Slack. Từ đó Slack sẽ đọc webhook và xử lí chúng => Build code và lưu trữ 
:D Nếu chưa hiểu thì đến ví dụ tiếp theo. Tưởng tượng bạn là một cậu học sinh đẹp trai ở Việt Nam vừa đi sang Mĩ du học chẳng hạn mà bạn lại cực ngu tiếng Anh(Ví dụ thôi Đừng g :D). Lớp đó có vài bạn gái thấy vẻ đẹp trai của bạn và muốn làm quen với bạn nhưng xấu hổ chẳng hạn. Bạn biết điều đó nhưng nói ra sợ ngại :D Vậy là bạn thả thính các bạn nữ ví dụ up tus thả thính chẳng hạn :D Bạn nào đi chơi với mình thì ném vào nhà mình lịch hẹn thời gian nhé :D Sau khi nhặt được mẩu giấy thì bạn liền lên Google Translate dịch :D Hiểu ra ý bạn liền sửa soạn quần áo để chuẩn bị đi chơi. Vậy có thể hiểu bạn éo biết cái gì về tiếng Anh và cô bạn gái người Mĩ là 2 chương trình khác nhau về ngôn ngữ còn cái cửa nhà bạn cái Webhook. Vậy tóm váy lại, Webhook là thứ để 2 chương trình giao tiếp với nhau(Còn thực tế mình cho Google Translate để cho thấy rõ nhân vật nói đến ngu tiếng anh thôi). Theo lí thuyết, thì webhook là 1 HTTP callback. Trong code nếu bạn truyền vào callback vào 1 hàm mang ý nghĩa “Tao đưa mày cái hàm này, khi nào gọi hàm đó thì báo tao”. Webhook thì như thế nó cũng tương tự nhưng nó thông qua HTTP POST. Ví dụ có thể hiểu như sau:


Cô bạn: Anh ơi em muốn đi chơi.
Bạn: Webhook của anh là: http://cua.com. Khi nào muốn cứ đi em gửi POST Request (ném tờ giấy) lên http://cua.com. Trong request nhớ ghi thời gian và địa điểm nhé.
Cô bạn: OK !
 
Nó cũng đơn giản dễ hiểu thôi. Có vấn đề gì bạn cứ inbox facebook cho mình, mình sẽ giải đáp :D Link fb mình để bên dưới 
RestAPI là gì? 
Quay lại cô bạn gái Mĩ ngoan hiền dễ thương. Sau khi nhặt được mẩu giấy bạn sướng rơn lên nhưng không biết làm sao báo lại cho cô. Cô thì không biết tiếng Việt, bạn thì cũng không rành lắm tiếng Anh. May mắn thay là trong lớp bạn có 1 thằng bạn biết 1 thứ tiếng trung gian giả sử tiếng Thái đi :D. Bạn nhờ thằng bạn đó báo lại cho cô bạn kia địa điểm. Cuộc hẹn thành công tốt đẹp, 2 người đi xem phim ăn uống rồi lôi nhau vào nơi yên tĩnh để nghỉ ngơi :D. Vậy thì ở đây ví dụ bạn viết bằng C++ còn nàng viết bằng Java, thằng bạn kia chính là RestAPI của cô gái, sử dụng tiếp Thái(có thể hiểu là HTTP đi) để giúp 2 bạn giao tiếp. Nhờ RestAPI mà 2 chương trình khác nhau ngôn ngữ có thể giao tiếp và truy cập cơ sở . Cũng đã có khá nhiều bài viết về REST nên mình không nhắc lại, bạn nào muốn tìm hiểu có thể google thêm nhé: RestAPI. Hiện tại, các ứng dụng nổi tiếng như Facebook, Youtube, Twitter đều có REST API. Thông qua các Rest API này, ta có thể viết app hay web để truy cập dữ liệu Facebook, Youtube, …  mà không cần quan tâm đến ngôn ngữ sử dụng. (Ví dụ như Facebook chủ yếu viết = php hay ngôn ngữ gì cũng được nhưng bạn viết bot bằng javascript hay ruby cũng thế chúng vẫn connect được với nhau đó thôi) 
Cơ chế hoạt động của Facebook Bot 
Cơ chế hoạt động của Facebook Bot cũng khá đơn giản, không khác em gái mình miêu tả phía trên là mấy. 

Đầu tiên, ta đưa 1 địa chỉ webhook (cửa nhà bạn) cho Facebook. Khi có người gửi tin nhắn đến bot, facebook POST thông báo (ném tờ giấy) đến webhook của chúng ta để ta tiếp tục xử lý. 
Sau khi xử lý xong, nếu muốn reply lại người dùng, ta gửi tin cho RestAPI (thằng bạn bạn) của Facebook. Nhận được tin, bot sẽ trả lời lại cho người dùng. 
Nắm vững cơ chế hoạt động trên, bạn có thể viết 1 con bot Facebook bằng bất cứ ngôn ngữ nào bằng cách thực hiện 2 bước sau: 
  1. Viết Webhook và đưa nó cho Facebook. 
  1. Xử lý nội dung nhận được từ Webhook, gửi lại reply cho Rest API của Facebook. 
Ở bài viết sau, mình sẽ hướng dẫn các bạn cách tạo trang fanpage, tạo ứng dụng và bắt đầu viết code nhé. Các bạn nhớ đón xem. 

 Facebook của mình: https://facebook.com/minhnh0302
Email: nghminh163@outlook.com