share facebook facebook2 twitter menu hatena pocket slack

2014.10.24 FRI

ばっしゅの3ぷんくっきんぐ

sebastian

WRITTEN BYsebastian

Shellshockで世間はかなり大騒ぎですね
今日は、battle programmer Se`bash`tianことbpSです。
本日は脆弱性対応とついでにBashのhistoryを/var/log/messageに吐くようにしてみましょう

ちゃらっらちゃちゃちゃちゃん〜〜〜♪

ざいりょう

rpm系をガンガン使いますので必要なpackageをyumりましょう

yum -y install rpm-build texinfo bison ncurses-devel autoconf gettext gcc make

はい、じゃホームにrpmbuild用にホーム指定の設定書いてきますね

echo '%_topdir %(echo $HOME)/rpmbuild' > ~/.rpmmacros

したごしらえ

はい、bashの最新ソース取ってきて展開します

rpm -Uvh http://vault.centos.org/6.5/updates/Source/SPackages/bash-4.1.2-15.el6_5.2.src.rpm

ここに既に展開済みの物が御座います

ls -la ~/rpmbuild

何やらrpmbuildが出来て、その下にSOURCEとSPECSが出来てますね

ちょうり

じゃ、書き換えます

vi ~/rpmbuild/SPECS/bash.spec

162行目辺りに下のmakeがありますね

make "CFLAGS=$CFLAGS -fwrapv" "CPPFLAGS=-D_GNU_SOURCE -DRECYCLES_PIDS `getconf LFS_CFLAGS`"

ここに -DSYSLOG_HISTORYを加えましょう

make "CFLAGS=$CFLAGS -fwrapv" "CPPFLAGS=-D_GNU_SOURCE -DRECYCLES_PIDS `getconf LFS_CFLAGS` -DSYSLOG_HISTORY"

しあげ

はい、 じゃしあげです
rpmbuildでrpm作り直しましょう

rpmbuild -ba ~/rpmbuild/SPECS/bash.spec

5分位で焼き上がります
焼きあがると~/rpmbuild/RPMSの下にrpmファイルができていますね?
後はrpm -Uvh bash-4.1.2-15.el6.2.x86_64.rpmでinstallしましょう

あじみ

ちゃんと脆弱性対応できているか確認しましょう

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

# env x='() { (a)=>' bash -c "echo echo vulnerable"; cat echo
echo vulnerable
cat: echo: そのようなファイルやディレクトリはありません

# bash -c 'true <

# (for x in {1..200} ; do echo "for x$x in ; do :"; done; for x in {1..200} ; do echo done ; done) | bash || echo "vulnerable"

# x='() { echo vulnerable; }' bash -c x
bash: x: コマンドが見つかりません

はい、問題無いですね
vulnerableとか出てませんね?

じゃ、次はhistoryがlogに行っているか確認しましょう

# tail -f /var/log/messages
-bash: HISTORY: PID=23957 UID=0 env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
-bash: HISTORY: PID=23957 UID=0 env x='() { (a)=>' bash -c "echo echo vulnerable"; cat echo
-bash: HISTORY: PID=23957 UID=0 bash -c 'true <

-bash: HISTORY: PID=23957 UID=0 (for x in {1..200} ; do echo "for x$x in ; do :"; done; for x in {1..200} ; do echo done ; done) | bash || echo "vulnerable"
-bash: HISTORY: PID=23957 UID=0 x='() { echo vulnerable; }' bash -c x
-bash: HISTORY: PID=23957 UID=0 tail -f /var/log/messages

はい、ちゃんとさっきのcommandがlogに出てますね

では、本日はここまで〜〜

元記事はこちらです。
ばっしゅの3ぷんくっきんぐ

sebastian

sebastian