チームの Web セキュリティ チャレンジ用にセットアップしているサーバーに、Heartbleed の脆弱性のある OpenSSL バージョンをコンパイルしてインストールしたいと思います (明らかな理由により、Ubuntu のリポジトリからはインストールできないため)。
私は、提供された手順( を実行し./config
、 とmake
を実行make install
)を使用して、ソースからOpenSSL 1.0.1fをダウンロードしてコンパイルし、公開されているHeartbleed POCを実行しようとしました。GitHubから私の PC からは、ハートビート応答が受信されていないため、サーバーが脆弱ではない可能性が高いとスクリプトから通知されます。
実行するとopenssl version
次の出力が生成されます。OpenSSL 1.0.1f 2014年1月6日もちろん SSL 証明書をインストールし、サーバー上で SSL アクセスが機能します。
OpenSSL は Apache 2.4.7 で動作するようにインストールされています。
誰か助けてくれませんか?
答え1
ここでは 2 つのことが起こっている可能性があります。
単純な「./configure; make; make install」では、デフォルトで共有ライブラリが に配置されます
/usr/local/lib
。ただし、システムによってインストールされたライブラリは に配置され/usr/lib
、ライブラリ検索パスの先頭にきます。OpenSSL のシステムによってインストールされたバージョンを削除しない限り、脆弱なバージョンは見つかりません。システム ライブラリを上書きする場合でも、Apache を再起動するまで変更は反映されません。削除されたファイルは、それらのファイルハンドルを開いているすべてのプログラムがそれらのファイルハンドルを閉じるまでアクセス可能なままになります (ディスク上のスペースを占有します)。
答え2
使用されているサーバーソフトウェアは何ですか?
OpenSSL バイナリが脆弱であるにもかかわらず、OS パッケージからインストールされた Web サーバーは、脆弱ではないライブラリ バージョンを使用している可能性があります。
脆弱なリスナーを実行する最も簡単な方法はopenssl s_server
、完全な Web サーバーを脆弱にする必要がある場合、脆弱な OpenSSL に対してコンパイルする必要がある可能性が高いことです。