Chúng tôi đã hack GitHub trong một tháng

Feb 11 2023
Giới thiệu Sau một thời gian dài gián đoạn, chúng tôi đã trở lại với một bài viết mới. Mặc dù chúng tôi thường không tham gia vào các chương trình tiền thưởng lỗi do các cam kết khác, nhưng chúng tôi đã chấp nhận thử thách hack GitHub trong một tháng và rất vui được chia sẻ những phát hiện của mình.

Giới thiệu

Sau một thời gian dài gián đoạn, chúng tôi đã trở lại với một bài viết mới. Mặc dù chúng tôi thường không tham gia vào các chương trình tiền thưởng lỗi do các cam kết khác, nhưng chúng tôi đã chấp nhận thử thách hack GitHub trong một tháng và rất vui được chia sẻ những phát hiện của mình. Mọi chuyện bắt đầu khi Shivam Singh (Mr. Rajput Hacker) liên hệ với tôi vào tháng 11 và khuyến khích tôi dùng thử tiền thưởng lỗi. Chúng tôi quyết định tập trung vào npmjs.com, một công ty con của GitHub. Mặc dù GitHub là một tập đoàn lớn và chương trình tiền thưởng lỗi được công khai trên HackerOne, chúng tôi cảm thấy rằng nó đáng để thử.

trinh sát

Trong quá trình theo đuổi việc tìm kiếm các lỗ hổng trong npmjs.com, Th3Pr0xyB0y (Vansh Devgan) và Mr Rajput Hacker (Shivam Singh) đã bắt đầu bằng cách tiến hành một hoạt động do thám. Chúng tôi đã sử dụng sản phẩm nội bộ của mình, X (một phần của bộ CyberXplore), để thu thập càng nhiều thông tin càng tốt, bao gồm địa chỉ IP, cổng mở, ảnh chụp màn hình và điểm cuối. Với sức mạnh của điện toán đám mây, quá trình trinh sát diễn ra nhanh chóng và hiệu quả.

Tuy nhiên, khi xem xét thông tin thu thập được, chúng tôi nhận thấy rằng có giới hạn phạm vi tấn công vào mục tiêu, npmjs.com và npmjs.org. Sản phẩm nội bộ của chúng tôi, X , đã làm cho quá trình thăm dò trở nên dễ dàng và chúng tôi rất vui mừng được thông báo rằng bản beta riêng tư sẽ sớm ra mắt công chúng .

Tập trung vào logic kinh doanh

Ông Rajput Hacker và tôi quyết định chỉ tập trung vào các lỗi logic nghiệp vụ trong ứng dụng. Trước khi bắt đầu tìm kiếm, chúng tôi đảm bảo hiểu rõ về ứng dụng. Điều này liên quan đến việc sử dụng tối thiểu Burp Suite và tập trung vào việc hiểu các quy trình và chức năng cốt lõi của ứng dụng. Mục tiêu của chúng tôi là tìm ra bất kỳ điểm yếu nào trong logic kinh doanh có khả năng bị khai thác. Bằng cách giới hạn bộ công cụ của chúng tôi và tập trung vào việc tìm hiểu ứng dụng, chúng tôi nhằm mục đích phát hiện ra bất kỳ lỗ hổng duy nhất hoặc bị bỏ qua nào. Vì npmjs.com là một ứng dụng tương đối nhỏ, nên việc tìm hiểu và ghi chú của chúng tôi chỉ mất chưa đầy hai giờ để hoàn thành.

Lỗ hổng được phát hiện

Mặc dù chúng tôi đã đề cập về 9 lỗ hổng được báo cáo, chúng tôi sẽ viết về 3 trong số chúng ở đây hôm nay được đưa ra dưới đây:

  1. Bỏ qua xác minh đăng nhập trên npmjs.com
  2. Tiếp quản tài khoản trước trên npmjs.com
  3. Vấn đề kiểm soát truy cập trên giáo dục.github.com

Sự miêu tả -

Trong khi xem qua phần xác thực của npmjs.com và các chức năng phổ biến như cập nhật địa chỉ email và chức năng cập nhật hồ sơ, chúng tôi đã phát hiện ra một hành vi kỳ lạ về một ứng dụng mà chúng tôi chú ý, đó là định dạng của liên kết xác minh email, liên kết đặt lại mật khẩu và liên kết đã gửi để cập nhật địa chỉ email.

Liên kết được định dạng như https://npmjs.com/verify/{some_random_token_here} cho tất cả các chức năng có thể là đặt lại mật khẩu, liên kết xác minh email hoặc bất kỳ liên kết XYZ nào trên trang web này cho bất kỳ mục đích nào. Tiếp theo, chúng tôi quan sát thấy mỗi khi bạn đăng nhập vào ứng dụng, nó sẽ gửi mã xác minh đến địa chỉ email đã đăng ký của bạn và bạn phải nhập mã đó như một phần của tính năng xác minh đăng nhập (loại mã 2FA/MFA trên email) để đăng nhập thành công vào tài khoản . sau đó chúng tôi đã cố gắng bỏ qua chức năng này và đã bỏ qua nó thành công vì chúng tôi đã sử dụng hoàn toàn một ứng dụng trong 2 giờ qua, chúng tôi biết từng chức năng nên chúng tôi có thể liên hệ và bỏ qua đọc các bước bên dưới để sao chép để xem cách chúng tôi đã làm nó.

Trong quá trình kiểm tra quy trình xác thực và các chức năng phổ biến của npmjs.com, chẳng hạn như cập nhật địa chỉ email và hồ sơ, chúng tôi đã phát hiện ra một hành vi đặc biệt ở định dạng liên kết xác minh email, dán Hacked GitHub trong một tháng: Đây là những gì chúng tôi tìm thấy liên kết đặt lại thanh kiếm, và các liên kết được gửi để cập nhật địa chỉ email. Các liên kết này được định dạng là https://npmjs.com/verify/{random_token} và được sử dụng cho tất cả các chức năng, bao gồm đặt lại mật khẩu, xác minh email và các chức năng khác.

Chúng tôi cũng nhận thấy rằng mỗi khi người dùng đăng nhập vào ứng dụng, một mã xác minh sẽ được gửi đến địa chỉ email đã đăng ký. Mã xác minh này được yêu cầu để hoàn tất quá trình đăng nhập, hoạt động như một hình thức xác thực hai yếu tố. Điều thứ hai chúng tôi nhận thấy Khi cập nhật địa chỉ email trên npmjs, quá trình cập nhật sẽ diễn ra mà không yêu cầu xác nhận mật khẩu. Một email sẽ được gửi đến cả địa chỉ email cũ và mới. Email được gửi đến địa chỉ cũ sẽ thông báo cho người nhận rằng nếu thay đổi không phải do họ thực hiện, họ có thể nhấp vào liên kết (https://npmjs.com/verify/{some_random_token_here}) để hoàn nguyên thay đổi và tạo địa chỉ cũ của họ cái hiện tại. Email được gửi đến địa chỉ mới sẽ chứa một liên kết để xác minh email mới và liên kết nó với tài khoản vừa được cập nhật.

Chúng tôi đã gặp sự cố đáng ngạc nhiên khi cố gắng đăng nhập vào tài khoản sau khi cập nhật địa chỉ email trong trang hồ sơ. Mặc dù không xác nhận hoặc nhấp vào bất kỳ liên kết nào trong email cũ hoặc email mới, hệ thống vẫn hiển thị thông báo cho biết mã xác minh đã được gửi đến địa chỉ mới, chưa được xác minh. Điều này dường như cho thấy rằng chúng tôi sẽ không thể đăng nhập. Tuy nhiên, khi kiểm tra kỹ hơn, chúng tôi phát hiện ra một email được gửi đến địa chỉ cũ của chúng tôi, yêu cầu chúng tôi hoàn nguyên thay đổi để tránh bị khóa tài khoản. Khi nhấp vào liên kết được cung cấp ( https://npmjs.com/verify/{random_token}) để hoàn nguyên email, chúng tôi được chuyển đến trang đăng nhập. Thật ngạc nhiên, khi chúng tôi nhập thông tin đăng nhập của mình, hệ thống không yêu cầu mã xác minh và thay vào đó cho phép chúng tôi đăng nhập và hoàn nguyên thay đổi email.

Tuy nhiên, sau khi điều tra thêm, chúng tôi đã có thể bỏ qua thành công chức năng này. Sự hiểu biết sâu sắc của chúng tôi về ứng dụng, thu được từ việc dành hai giờ để tự làm quen với các tính năng của ứng dụng, cho phép chúng tôi liên kết các chức năng khác nhau và tìm ra cách bỏ qua. Các bước để tạo lại bỏ qua có thể được tìm thấy dưới đây.

Bấm vào đây hoặc truy cậphttps://blog.cyberxplore.com/we-hacked-github-for-a-month-heres-what-we-found/Để đọc toàn bộ blog đầy đủ được đăng tại blog CyberXplore .

Đừng quên theo dõi các nhà nghiên cứu bảo mật của chúng tôi –

Cảm Ơn Mọi Người Đã Đọc Đừng Quên Để Lại Một Vỗ Tay Nếu Bạn Thích Nó.

Theo chúng tôi -

Twitter → @ MrRajputHacker @ Th3Pr0xyB0y

Instagram → @ MrRajputHacker @ vanshdevgan

Linkedin → MrRajputHacker @ th3pr0xyb0y

Trung bình → @ mrrajputhacker @ th3pr0xyb0y