0
0
Lập trình
Sơn Tùng Lê
Sơn Tùng Lê103931498422911686980

Sử dụng ZoomEye tìm máy chủ Jupyter không xác thực

Đăng vào 4 tháng trước

• 7 phút đọc

Tìm hiểu cách sử dụng ZoomEye để tìm máy chủ Jupyter không xác thực

1. Tóm tắt

Trong quá trình sử dụng Jupyter Notebook và JupyterLab, nhiều người dùng thiếu nhận thức về bảo mật và không kích hoạt chức năng xác thực, dẫn đến việc bất kỳ ai cũng có thể truy cập trực tiếp vào máy chủ Jupyter của họ và xem mã lệnh cùng tài liệu trên máy chủ.

Chúng tôi sử dụng công cụ tìm kiếm không gian mạng ZoomEye để tìm những máy chủ Jupyter trên Internet mà không kích hoạt xác thực thông qua các từ khóa tìm kiếm cụ thể. Việc mã và tài liệu bị rò rỉ trên các máy chủ này, nếu bị kẻ xấu khai thác, có thể dẫn đến mất mát dữ liệu và tài sản.

Chúng tôi khuyến nghị tất cả người dùng Jupyter tuân theo các khuyến nghị bảo mật chính thức khi khởi động dịch vụ Jupyter, và thiết lập đăng nhập thông qua token hoặc mật khẩu.

2. Tổng quan

ZoomEye [1] là một công cụ tìm kiếm không gian mạng. Thông qua việc triển khai các nút phát hiện trên toàn cầu, nó thực hiện việc phát hiện sâu rộng các tài sản được công khai trên Internet, xây dựng bản đồ tình hình an ninh mạng, và cung cấp dữ liệu tài sản cơ bản cho nghiên cứu bảo mật.

Jupyter Notebook [2] là một chương trình chạy dưới dạng trang web. Bạn có thể trực tiếp viết và chạy mã trên trang web, và kết quả chạy của mã cũng sẽ được hiển thị ngay dưới khối mã. Nếu cần viết tài liệu hướng dẫn trong quá trình lập trình, bạn có thể viết trực tiếp trên cùng một trang, rất thuận tiện cho việc giải thích [3]. Đây là một trong những công cụ quen thuộc và phổ biến nhất cho các nhà khoa học dữ liệu.

JupyterLab [4] là một môi trường phát triển tương tác, là thế hệ tiếp theo của Jupyter Notebook. Bạn có thể sử dụng nó để viết Notebook, vận hành terminal, chỉnh sửa văn bản MarkDown, mở chế độ tương tác, xem tệp csv và hình ảnh, v.v. Nói chung, JupyterLab là một môi trường phát triển chính thống hơn cho các nhà phát triển trong giai đoạn tiếp theo [5].

Trong bài viết này, chúng tôi sẽ mô tả cách sử dụng ZoomEye để tìm kiếm các máy chủ Jupyter không có xác thực và truy cập vào mã và tài liệu của chúng thông qua trình duyệt web.

3. Cài đặt và khởi động Jupyter

3.1 Jupyter Notebook

Trong phần này, chúng tôi sẽ giới thiệu cách cài đặt, khởi động bình thường, khởi động Jupyter Notebook mà không cần xác thực, và ảnh hưởng của việc truy cập web tương ứng.

Để biết phương pháp cài đặt Jupyter Notebook, hãy tham khảo trang web chính thức của nó [6]. Bạn chỉ cần nhập một lệnh trên dòng lệnh, rất đơn giản và tiện lợi.

Copy
pip install notebook

Cách khởi động bình thường Jupyter Notebook là nhập một lệnh. Theo mặc định, một dịch vụ web được mở trên cổng 8888 của localhost, và một giá trị token cho xác thực người dùng được tạo ra.

Copy
jupyter notebook

Tại thời điểm này, khi bạn nhập http://localhost:8888 vào trình duyệt web để truy cập Jupyter Notebook, trang sẽ yêu cầu bạn nhập mật khẩu hoặc token.

Chúng ta sẽ nhập giá trị token nhận được khi lệnh được khởi động trên trang để vượt qua xác thực và sử dụng các chức năng của Jupyter Notebook.

Một số người dùng cần truy cập dịch vụ Jupyter Notebook của họ qua Internet, và để tránh rắc rối khi nhập mật khẩu hoặc token, họ sẽ sử dụng lệnh sau để công khai dịch vụ Jupyter Notebook đến IP Internet mà không kích hoạt xác thực.

Copy
jupyter notebook --ip="*" --NotebookApp.token="" --NotebookApp.password=""

Tại thời điểm này, bất kỳ người dùng nào biết IP Internet của dịch vụ Jupyter Notebook có thể nhập http://*.*.*.*:8888 vào trình duyệt web để truy cập dịch vụ Jupyter Notebook mà không cần xác thực. Họ có thể xem mã và tệp trên máy chủ. Lưu ý rằng trong trường hợp này, tiêu đề của trang sẽ đọc: "Trang chính - Chọn hoặc tạo một notebook".

3.2 JupyterLab

Trong phần này, chúng tôi sẽ giới thiệu cách cài đặt, khởi động JupyterLab bình thường, khởi động JupyterLab mà không cần xác thực, và ảnh hưởng của việc truy cập web tương ứng.

Để biết phương pháp cài đặt JupyterLab, hãy tham khảo trang web chính thức của nó [7]. Bạn chỉ cần nhập một lệnh trên dòng lệnh, rất đơn giản và tiện lợi.

Copy
pip install jupyterlab

Cách khởi động bình thường JupyterLab là nhập một lệnh. Theo mặc định, một dịch vụ web được mở trên cổng 8888 của localhost, và một giá trị token cho xác thực người dùng được tạo ra.

Copy
jupyter-lab

Tại thời điểm này, khi bạn nhập http://localhost:8888 vào trình duyệt web để truy cập Jupyter Lab, trang sẽ yêu cầu bạn nhập mật khẩu hoặc token.

Chúng ta sẽ nhập giá trị token nhận được khi lệnh được khởi động trên trang để vượt qua xác thực và sử dụng các chức năng của JupyterLab.

Một số người dùng cần truy cập dịch vụ JupyterLab của họ qua Internet, và để tránh rắc rối khi nhập mật khẩu hoặc token, họ sẽ công khai dịch vụ JupyterLab đến IP Internet thông qua lệnh sau mà không kích hoạt xác thực.

Copy
jupyter-lab --ip="*" --NotebookApp.token="" --NotebookApp.password=""

Tại thời điểm này, bất kỳ người dùng nào biết IP Internet của dịch vụ JupyterLab có thể nhập http://...:8888 vào trình duyệt web để truy cập dịch vụ JupyterLab mà không cần xác thực, và có thể trực tiếp xem mã và tài liệu trên máy chủ. Lưu ý rằng nội dung của tiêu đề trang trong trường hợp này là: “JupyterLab”.

4. Tìm máy chủ Jupyter không có xác thực

Như đã đề cập trong phần trước, tiêu đề của dịch vụ Jupyter Notebook không cần xác thực là “Trang chính — Chọn hoặc tạo một notebook”, và tiêu đề của dịch vụ JupyterLab không cần xác thực là “JupyterLab”.

Chúng tôi đã sử dụng các từ khóa sau để tìm kiếm trên ZoomEye, và tìm thấy địa chỉ IP máy chủ Jupyter Notebook có thể được xem và sử dụng trực tiếp mà không cần xác thực, với tổng cộng 1362 kết quả.

Copy
title="Home Page - Select or create a notebook"

Chúng tôi đã sử dụng các từ khóa sau để tìm kiếm trên ZoomEye, và tìm thấy địa chỉ IP máy chủ JupyterLab có thể được xem và sử dụng trực tiếp mà không cần xác thực, với tổng cộng 2071 kết quả.

Copy
title="JupyterLab"

5. Nguy cơ khi sử dụng Jupyter không xác thực

Khi người dùng xây dựng dịch vụ Jupyter mà không kích hoạt xác thực, mặc dù điều này thuận tiện cho việc sử dụng hàng ngày và không cần nhập mật khẩu; nếu thông tin nhạy cảm như tên/mật khẩu, khóa bí mật API bị kẻ xấu lợi dụng, có thể dẫn đến rò rỉ dữ liệu và mất mát tài sản.

Ví dụ 1:

Như được minh họa dưới đây, mã trong máy chủ Jupyter bị rò rỉ: khóa và bí mật của người dùng API của sàn giao dịch tiền điện tử bitFlyer, tên người dùng và mật khẩu của hộp thư Gmail.

Kẻ xấu có thể sử dụng khóa và bí mật của API sàn giao dịch bitFlyer để tạo giao dịch và hủy giao dịch trên sàn, điều này có thể dẫn đến mất mát tài sản; sử dụng tên người dùng và mật khẩu của hộp thư Gmail để đăng nhập vào hộp thư Gmail, điều này có thể dẫn đến rò rỉ dữ liệu riêng tư.

  1. Rò rỉ khóa và bí mật của API sàn giao dịch bitFlyer
  2. Rò rỉ tên người dùng và mật khẩu Gmail

Ví dụ 2:

Như được minh họa dưới đây, mã trong máy chủ Jupyter bị rò rỉ: ACCESS KEY ID và SECRET ACCESS KEY của tài khoản Amazon AWS.

Kẻ xấu có thể sử dụng ACCESS KEY ID và SECRET ACCESS KEY của tài khoản Amazon AWS để lấy quyền truy cập vào tài khoản Amazon AWS, tải tệp lên không gian lưu trữ đám mây Amazon S3, thậm chí tạo ra các máy chủ đám mây mới trong Amazon AWS.

  1. Rò rỉ ACCESS KEY ID của tài khoản Amazon AWS
  2. Rò rỉ SECRET ACCESS KEY của tài khoản Amazon AWS

6. Kết luận

Khi sử dụng Jupyter, hãy cố gắng không công khai dịch vụ web của nó trên Internet, mà hãy mở chúng để sử dụng trong mạng nội bộ để tránh bị truy cập bởi những người không liên quan.

Nếu cần công khai dịch vụ web của Jupyter ra Internet, bạn phải thiết lập đăng nhập bằng token hoặc mật khẩu thay vì tắt xác thực vì sự tiện lợi. Để biết thêm chi tiết, vui lòng tham khảo blog khuyến nghị bảo mật chính thức của Jupyter: Vui lòng không tắt xác thực trên máy chủ Jupyter [8].

7. Tài liệu tham khảo

[1] Công cụ tìm kiếm không gian mạng ZoomEye
https://www.zoomeye.ai

[2] Jupyter Notebook
https://jupyter.org

[3] Giới thiệu, cài đặt và hướng dẫn sử dụng Jupyter Notebook
https://zhuanlan.zhihu.com/p/33105153

[4] JupyterLab
https://jupyter.org

[5] Giới thiệu về JupyterLab và các thao tác thường gặp
https://support.huaweicloud.com/engineers-modelarts/modelarts_23_0209.html

[6] Phương pháp cài đặt Jupyter Notebook
https://jupyter.org/install

[7] Phương pháp cài đặt JupyterLab
https://jupyter.org/install

[8] Vui lòng không tắt xác thực trên máy chủ Jupyter
https://blog.jupyter.org/please-dont-disable-authentication-in-jupyter-servers-dd197206e7f6

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào