WEBサーバーと、そのWEBサーバーで稼働しているアプリケーションに対して、すでに公表されているセキュリティホールや、セキュリティ上で問題のある設定を辞書ベースでスキャンするツール。
root@kali:~# nikto -h 192.168.56.105 - Nikto v2.1.6 --------------------------------------------------------------------------- + Target IP: 192.168.56.105 + Target Hostname: 192.168.56.105 + Target Port: 80 + Start Time: 2019-09-01 06:48:18 (GMT9) --------------------------------------------------------------------------- + Server: Apache/2.2.8 (Ubuntu) DAV/2 + Retrieved x-powered-by header: PHP/5.2.4-2ubuntu5.10 ( ↑ PHP/5.2.4 が使われている) + The anti-clickjacking X-Frame-Options header is not present. ( ↑ アンチクリックジャッキング X-Frame-Option header が設定されていない) + The X-XSS-Protection header is not defined. This header can hint to the user agent to protect against some forms of XSS ( ↑ クロスサイトスクリプティング-Protection header が設定されていない) + The X-Content-Type-Options header is not set. This could allow the user agent to render the content of the site in a different fashion to the MIME type ( ↑ X-Content-Type-Options header が設定されていない) + Apache/2.2.8 appears to be outdated (current is at least Apache/2.4.37). Apache 2.2.34 is the EOL for the 2.x branch. ( ↑ Apache/2.2.8 は時代遅れである) + Uncommon header 'tcn' found, with contents: list + Apache mod_negotiation is enabled with MultiViews, which allows attackers to easily brute force file names. See http://www.wisec.it/sectou.php?id=4698ebdc59d15. The following alternatives for 'index' were found: index.php + Web Server returns a valid response with junk HTTP methods, this may cause false positives. + OSVDB-877: HTTP TRACE method is active, suggesting the host is vulnerable to XST ( ↑ HTTP TRACE method が有効である) + /phpinfo.php: Output from the phpinfo() function was found. ( ↑ phpinfo.php が閲覧できる) + OSVDB-3268: /doc/: Directory indexing found. + OSVDB-48: /doc/: The /doc/ directory is browsable. This may be /usr/doc. ( ↑ doc ディレクトリーが閲覧できる) + OSVDB-12184: /?=PHPB8B5F2A0-3C92-11d3-A3A9-4C7B08C10000: PHP reveals potentially sensitive information via certain HTTP requests that contain specific QUERY strings. + OSVDB-12184: /?=PHPE9568F36-D428-11d2-A769-00AA001ACF42: PHP reveals potentially sensitive information via certain HTTP requests that contain specific QUERY strings. + OSVDB-12184: /?=PHPE9568F34-D428-11d2-A769-00AA001ACF42: PHP reveals potentially sensitive information via certain HTTP requests that contain specific QUERY strings. + OSVDB-12184: /?=PHPE9568F35-D428-11d2-A769-00AA001ACF42: PHP reveals potentially sensitive information via certain HTTP requests that contain specific QUERY strings. + OSVDB-3092: /phpMyAdmin/changelog.php: phpMyAdmin is for managing MySQL databases, and should be protected or limited to authorized hosts. + Server may leak inodes via ETags, header found with file /phpMyAdmin/ChangeLog, inode: 92462, size: 40540, mtime: Wed Dec 10 02:24:00 2008 + OSVDB-3092: /phpMyAdmin/ChangeLog: phpMyAdmin is for managing MySQL databases, and should be protected or limited to authorized hosts. + OSVDB-3268: /test/: Directory indexing found. + OSVDB-3092: /test/: This might be interesting... + OSVDB-3233: /phpinfo.php: PHP is installed, and a test script which runs phpinfo() was found. This gives a lot of system information. + OSVDB-3268: /icons/: Directory indexing found. + OSVDB-3233: /icons/README: Apache default file found. + /phpMyAdmin/: phpMyAdmin directory found + OSVDB-3092: /phpMyAdmin/Documentation.html: phpMyAdmin is for managing MySQL databases, and should be protected or limited to authorized hosts. + OSVDB-3092: /phpMyAdmin/README: phpMyAdmin is for managing MySQL databases, and should be protected or limited to authorized hosts. + 8726 requests: 0 error(s) and 27 item(s) reported on remote host + End Time: 2019-09-01 06:48:53 (GMT9) (35 seconds) --------------------------------------------------------------------------- + 1 host(s) tested
PHP の脆弱性に関する注意喚起
php-cgi のリクエスト処理に関する脆弱性
遠隔の第三者が PHP スクリプトのソースコードを閲覧したり、Web サーバの権 限で任意のコードを実行したりする可能性がある確認方法 末尾に「?-s」(ソースコードを表示させるオプション) を付与した URL を Web ブラウザで閲覧した際に、ソースコードが表示された 場合は、本脆弱性の対象になる
http://example.com/index.php?-s
『クリックジャッキング』に関するレポートに関するレポート
https://www.ipa.go.jp/files/000026479.pdf
X-XSS-Protection - HTTP | MDN
HTTP の X-XSS-Protection レスポンスヘッダーは Internet Explorer, Chrome, Safari の機能で、反射したクロスサイトスクリプティング (XSS) 攻撃を検出したときに、ページの読み込みを停止するためのものです。
X-Content-Type-Options - HTTP | MDN
セキュリティを強化する7つの便利なHTTPヘッダ
https://devcentral.f5.com/s/articles/7http
脆弱性を修正する
後で戻せるように Metaspolitable2 のスナップショットを撮っておく
Apache の設定ファイルを修正する
msfadmin@metasploitable:~$ sudo -s [sudo] password for msfadmin: # cd /etc/apache2/ # ls # cp -p apache2.conf apache2.conf.org # vim apache2.conf ServerTokens Full → ServerTokens Prod ServerSignature On → ServerSignature Off TraceEnable Off ← その下に1行追加 最終行に <IfModule mod_headers.c> Header always append X-FRAME-OPTIONS "DENY" </IfModule>
core - Apache HTTP サーバ バージョン 2.4
ServerTokens ディレクティブ
クライアントに送り返す Server 応答ヘッダ内に、サーバの一般的な OS 種別や、 コンパイルされて組み込まれているモジュールの情報を 含めるかどうかを指定します。
最小の設定が Prod (ProductOnly)
https://httpd.apache.org/docs/2.4/ja/mod/core.html#serversignature
ServerSignature ディレクティブ
サーバが生成するドキュメント (エラーメッセージ、mod_proxy における FTP のディレクトリリスト、 mod_info の出力、等々) の最下行に付与するフッタの設定を行ないます。 https://httpd.apache.org/docs/2.4/ja/mod/core.html#traceenable
TraceEnable ディレクティブ
デフォルトの TraceEnable on は、リクエストボディを受け入れないような、RFC2616 に準拠した TRACE リクエストを受け付けます。 TraceEnable off と設定すると、コアサーバと mod_proxy は 405 (メソッド不許可) エラーをクライアントに返します。
https://httpd.apache.org/docs/2.4/ja/mod/core.html#ifmodule
IfModule ディレクティブ
モジュールの存在するかしないかに応じて処理される ディレクティブを囲む https://devcentral.f5.com/s/articles/7http
X-Frame-Options / Frame-Options
X-Frame-Options HTTPレスポンスヘッダとは、外部サイトからの、HTMLのiframeタグの読み込み許可範囲を設定できるもの。設定出来る値は以下の3つです。
DENY
問答無用で全てのiframeタグが無効となる
Apache2 に ModHeaders を追加する(無効化は a2dismod)
# a2enmod headers Module headers installed; run /etc/init.d/apache2 force-reload to enable.
# cd /etc/php5/cgi/ # ls # cp -p php.ini php.ini.org # vi php.ini expose_php = ON → expose_php = Off
# /etc/init.d/apache2 restart * Restarting web server apache2 httpd (no pid file) not running
https://www.php.net/manual/ja/ini.core.php#ini.expose-php
PHP がサーバーにインストールされていることを全世界に晒し、PHP のバージョンも HTTP ヘッダに含めます (X-Powered-By: PHP/5.3.7 など)
再度 nikto でスキャン
+ Server: Apache/2.2.8 (Ubuntu) DAV/2 ↓ + Server: Apache + Retrieved x-powered-by header: PHP/5.2.4-2ubuntu5.10 ↓ 消えた + The anti-clickjacking X-Frame-Options header is not present. ↓ 消えた + OSVDB-877: HTTP TRACE method is active, suggesting the host is vulnerable to XST ↓ 消えた
スナップショットを修正前のに戻しておくこと