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ぷんくっきんぐ」