wfuzzを実行すると Pycurl is not compiled against Openssl. エラーがでる

Linux 関連ノウハウ
Virtualbox + ParrotOS
ParrotOS で Wfuzz を使う
 
ParrotOS で Wfuzzを実行すると「Pycurl is not compiled against Openssl. 」エラーがでる。この対策として、pip3 で pycurl をインストールしようとするも「error: externally-managed-environment」エラーで行き詰まる。
 
wfuzzを実行すると Pycurl is not compiled against Openssl. エラーがでる
 
以下、pythonの仮想環境を使って「wfuzz」を実行した記録。
 
 

 

スポンサー リンク

 

 
 
 目 次
 
 
 
1. 問題点
 
ParrotOS で Wfuzzを実行すると次のエラーがでる。
wfuzz --version
 
wfuzzを実行すると Pycurl is not compiled against Openssl. エラーがでる
 
エラーメッセージの内容。
 /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
 
エラーメッセージの内容。
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がインストールされていることを確認してください。
 
 
 
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ライブラリを使用するように環境変数を設定する。
 
pycurlを再インストールする前に、適切なSSLライブラリを使用するように環境変数を設定する
 
※:ネットワーク設定を「NAT」に変更しておく。
ネットワーク設定を「NAT」に変更しておく
 
手順 4: 仮想環境内でのpycurlのインストール。
pip install pycurl --compile --global-option="--with-openssl"
 
仮想環境内でのpycurlのインストール
 
~中略~
 
仮想環境内でのpycurlのインストール
 
手順 5: pipを使用してwfuzzをインストールする。
pip install wfuzz
 
pipを使用してwfuzzをインストールする
 
手順 6: 仮想環境内でwfuzzを実行し、エラーが解消されたか確認する。
wfuzz --version
 
仮想環境内でwfuzzを実行し、エラーが解消されたか確認する
 
エラーが解消された。
 
 
仮想環境モードを終了する。
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を除外する。
 
 
wfuzzを、Gobusterと同じワードリストを使用して実行。
wfuzz -c -z file,/usr/share/wordlists/dirb/common.txt --hc 404 http://192.168.56.106:80/FUZZ
 
Gobusterと同じワードリストを使用して実行
 
Wfuzz と Gobuster の実行結果の比較。(双方に違いはない)Wfuzz と Gobuster の実行結果の比較
 
参考:Wfuzzの「/usr/share/wfuzz/wordlist/general/common.txt」を使用した場合、何もヒットしない。
Wfuzzの「/usr/share/wfuzz/wordlist/general/common.txt」を使用した場合、何もヒットしない
 
ワードリスト「/usr/share/wordlists/dirb/common.txt」と「/usr/share/wfuzz/wordlist/general/common.txt」の違い(wp~辺り)。
ワードリスト「/usr/share/wordlists/dirb/common.txt」と「/usr/share/wfuzz/wordlist/general/common.txt」の違い(wp~辺り)
 

 

以上。
(2024.05.20)

 

 

スポンサー リンク

 

             

 

 

 

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください