Linux 関連ノウハウ
Virtualbox + ParrotOS
ParrotOS で Wfuzz を使う
Virtualbox + ParrotOS
ParrotOS で Wfuzz を使う
ParrotOS で Wfuzzを実行すると「Pycurl is not compiled against Openssl. 」エラーがでる。この対策として、pip3 で pycurl をインストールしようとするも「error: externally-managed-environment」エラーで行き詰まる。
以下、pythonの仮想環境を使って「wfuzz」を実行した記録。
スポンサー リンク
1. 問題点
ParrotOS で Wfuzzを実行すると次のエラーがでる。
wfuzz --version
エラーメッセージの内容。
/usr/lib/python3/dist-packages/wfuzz/__init__.py:34: UserWarning:Pycurl is not compiled against Openssl. Wfuzz might not work correctly when fuzzing SSL sites. Check Wfuzz's documentation for more information.
3.1.0
Pycurl は Openssl に対してコンパイルされていません。
この対策として、pip3 で pycurl をインストールしようとするも、エラーで行き詰まる。
pip3 で pycurl のインストール。
sudo pip3 install pycurl
エラーメッセージの内容。
error: externally-managed-environment
× This environment is externally managed
╰─> To install Python packages system-wide, try apt install
python3-xyz, where xyz is the package you are trying to
install.
If you wish to install a non-Debian-packaged Python package,
create a virtual environment using python3 -m venv path/to/venv.
Then use path/to/venv/bin/python and path/to/venv/bin/pip. Make
sure you have python3-full installed.
If you wish to install a non-Debian packaged Python application,
it may be easiest to use pipx install xyz, which will manage a
virtual environment for you. Make sure you have pipx installed.
See /usr/share/doc/python3.11/README.venv for more information.
note: If you believe this is a mistake, please contact your Python installation or OS distribution provider. You can override this, at the risk of breaking your Python installation or OS, by passing --break-system-packages.
hint: See PEP 668 for the detailed specification.
error: externally-managed-environment
externally-managed-environment エラー
Pythonのパッケージ管理システムが仮想環境以外の環境(例えば、システム全体のPythonインストール)でパッケージをインストールしようとする場合に発生することがあります。
特に、pipを使用してパッケージをインストールする際にこのエラーが表示される場合、Pythonの新しいバージョンや環境管理ツール(例:pipenv、poetry)によって制限されている可能性があります。
エラーメッセージに記載されているサジェスチョン。
Debianパッケージ以外のPythonパッケージをインストールしたい場合、 python3 -m venv path/to/venv を使って仮想環境を作る。
そしてpath/to/venv/bin/pythonとpath/to/venv/bin/pipを使います。
そして python3-fullがインストールされていることを確認してください。
そしてpath/to/venv/bin/pythonとpath/to/venv/bin/pipを使います。
そして python3-fullがインストールされていることを確認してください。
2. 解決策
python仮想環境を使う。
python仮想環境とは
Python を使って開発や実験を行うときは、用途に応じて専用の実行環境を作成し、切り替えて使用するのが一般的です。こういった、一時的に作成する実行環境を、「仮想環境」 と言います。
仮想環境は、次のような目的で使われます。
①.システム全体で使うPython環境に影響を与えずにモジュールの追加・入れ替えをしたい。
②.異なるバージョンの Python を使いわけたり、同じモジュールの、複数のバージョンを使い分けたい。
手順 1: 仮想環境の作成。
python3 -m venv pyvenv
pyvenvは仮想環境の名前で、任意の名前を指定できる。
手順 2: 仮想環境の有効化。
source pyvenv/bin/activate
手順 3: 環境変数の設定。
export PYCURL_SSL_LIBRARY=openssl
pycurlを再インストールする前に、適切なSSLライブラリを使用するように環境変数を設定する。
手順 4: 仮想環境内でのpycurlのインストール。
pip install pycurl --compile --global-option="--with-openssl"
~中略~
手順 5: pipを使用してwfuzzをインストールする。
pip install wfuzz
手順 6: 仮想環境内でwfuzzを実行し、エラーが解消されたか確認する。
wfuzz --version
エラーが解消された。
仮想環境モードを終了する。
deactivate
仮想環境モードに切り替える。
source pyvenv/bin/activate
3. wfuzzの実行
Wfuzzの基本的な構文。
wfuzz [options] -w [wordlist] [URL]
例:URLの特定部分をワードリストで置き換えながらリクエストを送信する。
wfuzz -w /path/to/wordlist.txt http://target/FUZZ
ディレクトリトラバーサルの例。
wfuzz -c -z file,/usr/share/wfuzz/wordlist/general/common.txt --hc 404 http://target/FUZZ
-c: カラー表示を有効にする。
-z file: 入力ファイルとして指定したワードリストを使用する。
--hc 404: ステータスコード404を除外する。
-z file: 入力ファイルとして指定したワードリストを使用する。
--hc 404: ステータスコード404を除外する。
wfuzzを、Gobusterと同じワードリストを使用して実行。
wfuzz -c -z file,/usr/share/wordlists/dirb/common.txt --hc 404 http://192.168.56.106:80/FUZZ
ワードリスト「/usr/share/wordlists/dirb/common.txt」と「/usr/share/wfuzz/wordlist/general/common.txt」の違い(wp~辺り)。
以上。
(2024.05.20)
スポンサー リンク