CGI
情報
CGIスクリプトはperlスクリプトであり、したがって、.cgi スクリプトを実行できるサーバーを侵害した場合、perl逆シェル (/usr/share/webshells/perl/perl-reverse-shell.pl
) をアップロードし、.pl 拡張子を .cgi に変更し、実行権限 (chmod +x
) を与え、ウェブブラウザから逆シェルにアクセスして実行できます。 CGI脆弱性をテストするためには、nikto -C all
(およびすべてのプラグイン) を使用することが推奨されています。
ShellShock
ShellShock は、Unixベースのオペレーティングシステムで広く使用されている Bash コマンドラインシェルに影響を与える 脆弱性 です。これは、Bashがアプリケーションによって渡されたコマンドを実行する能力を標的としています。この脆弱性は、環境変数の操作にあり、環境変数はプロセスがコンピュータ上で実行される方法に影響を与える動的な名前付き値です。攻撃者は、環境変数に 悪意のあるコード を添付して、その変数を受信すると実行されるようにすることで、この脆弱性を悪用できます。これにより、攻撃者はシステムを潜在的に危険にさらすことができます。
この脆弱性を悪用すると、ページがエラーをスローする可能性があります。
この脆弱性を 見つける には、古いApacheバージョンと cgi_mod(cgiフォルダを使用)を使用しているか、nikto を使用していることに気付くことができます。
テスト
ほとんどのテストは、何かをエコーして、その文字列がWebレスポンスで返されることを期待しています。ページが脆弱であると思われる場合は、すべてのcgiページを検索してテストしてください。
Nmap
Curl(反射、ブラインド、アウト・オブ・バンド)
悪用
プロキシ (MitM to Web server requests)
CGIは、httpリクエスト内の各ヘッダーに対して環境変数を作成します。例えば、"host:web.com" は "HTTP_HOST"="web.com" として作成されます。
WebサーバーがHTTP_PROXY変数を使用する可能性があるため、"Proxy: <IP_attacker>:<PORT>" を含む ヘッダー を送信してみてください。もしサーバーがセッション中にリクエストを行った場合、サーバーが行った各リクエストをキャプチャすることができます。
古いPHP + CGI = RCE (CVE-2012-1823, CVE-2012-2311)
基本的に、cgiがアクティブであり、phpが "古い" (<5.3.12 / < 5.4.2) 場合、コードを実行できます。 この脆弱性を悪用するには、パラメーターを送信せずにWebサーバーのいくつかのPHPファイルにアクセスする必要があります(特に "=" 文字を送信しないでください)。 その後、この脆弱性をテストするために、例えば /index.php?-s
にアクセスすることができ、アプリケーションのソースコードがレスポンスに表示されます。
その後、RCE を取得するために、この特別なクエリを送信できます: /?-d allow_url_include=1 -d auto_prepend_file=php://input
そして、**リクエストの本文に実行されるべき PHPコード を送信します。 例:
脆弱性と可能なエクスプロイトに関する詳細: https://www.zero-day.cz/database/337/, cve-2012-1823, cve-2012-2311, CTF Writeup Example.
Last updated