Shell升級,/bin/bash版本4.1到4.3,bash4.3
bash環境變數存在任意代碼執行漏洞:“通過CGI請求方式可以導致遠程代碼執行,進而導致伺服器被入侵,危害嚴重,且官方公布補丁也被繞過”,
【漏洞影響】:
1)bash受影響版本:3.0 ~ 4.3,小於3.0的bash版本也可能受影響,
2)入侵方式:結合CGI方式可以導致遠程代碼執行,入侵伺服器;
瞭解系統當前bash的版本
[root@image01 ~]# /bin/bash -versionGNU bash, version 4.1.2(1)-release (x86_64-redhat-linux-gnu)Copyright (C) 2009 Free Software Foundation, Inc.License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
bash:http://ftp.gnu.org/gnu/bash/
安裝升級bash
wget http://ftp.gnu.org/gnu/bash/bash-4.3.tar.gztar zxvf bash-4.3.tar.gzcd bash-4.3./configuremakemake install
因為bash預設是安裝在/usr/local/bin/目錄下,所以需要建立一個連結到 /bin/目錄下,安裝完畢後需要重啟生效!
mv /bin/bash /bin/bash.bak; ln -s /usr/local/bin/bash /bin/bash
[root@mail ~]# /bin/bash -versionGNU bash, version 4.3.0(1)-release (x86_64-unknown-linux-gnu)Copyright (C) 2011 Free Software Foundation, Inc.License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>This is free software; you are free to change and redistribute it.There is NO WARRANTY, to the extent permitted by law.
Linux Bash嚴重漏洞修複緊急通知(2014年9月25日更新)
日前Linux官方內建Bash中新發現一個非常嚴重安全性漏洞,駭客可以利用該Bash漏洞完全控制目標系統並發起攻擊,為了避免您Linux伺服器受影響,建議您儘快完成漏洞修補,修複方法如下:
漏洞檢測方法
可以使用如下命令來檢查系統存在此漏洞:
env -i X='() { (a)=>\' bash -c 'echo date'; cat echo
修複前輸出:當前系統時間
使用修補方案修複後
date
特別提示:該修複不會有任何影響,如果您的指令碼使用以上方式定義環境變數,修複後您的指令碼執行會報錯。輸出結果中包含date字串就修複成功了。
修補方案
centos:
yum clean allyum makecacheyum -y update bash
ubuntu:
apt-cache gencachesapt-get -y install --only-upgrade bash
debian 7.5 64bit && 32bit :
apt-cache gencachesapt-get -y install --only-upgrade bash
debian 6.0.x 64bit
wget http://mirrors.aliyun.com/debian/pool/main/b/bash/bash_4.1-3+deb6u2_amd64.deb && dpkg -i bash_4.1-3+deb6u2_amd64.deb
debian 6.0.x 32bit
wget http://mirrors.aliyun.com/debian/pool/main/b/bash/bash_4.1-3+deb6u2_i386.deb && dpkg -i bash_4.1-3+deb6u2_i386.deb
opensuse:
13.1 64bit wget http://mirrors.aliyun.com/fix_stuff/bash-4.2-68.4.1.x86_64.rpm && rpm -Uvh bash-4.2-68.4.1.x86_64.rpm 13.1 32bit wget http://mirrors.aliyun.com/fix_stuff/bash-4.2-68.4.1.i586.rpm && rpm -Uvh bash-4.2-68.4.1.i586.rpm
aliyun linux:
5.x 64bit wget http://mirrors.aliyun.com/centos/5/updates/x86_64/RPMS/bash-3.2-33.el5.1.x86_64.rpm && rpm -Uvh bash-3.2-33.el5.1.x86_64.rpm5.x 32bit wget http://mirrors.aliyun.com/centos/5/updates/i386/RPMS/bash-3.2-33.el5.1.i386.rpm && rpm -Uvh bash-3.2-33.el5.1.i386.rpm
linux下的/bin/bash被我不小心改了,現在有了個新的bash, 但是terminal開不了
nautilus(GNOME資源管理員)可以開啟嗎?
直接到/bin下面將csh複製為bash和sh再開啟試試?
Nautilus是圖形化工具,菜單裡肯定有,你用的什麼發行版?openSUSE?菜單中有的(檔案夾表徵圖)。
沒有root許可權,那你是怎麼改的bash?
通過cd進入後,可以先將你的硬碟mount到你的某個目錄。例如:
mount /dev/sda1 /mnt
(這裡假設你的硬碟根分區位於sda1。若mount後發現/mnt下沒有/下的目錄,可嘗試sda2,sda3等等)
再嘗試在/mnt/bin下面修改。注意不要隨意刪除檔案。
你可以先log out,然後以root帳戶登入。
怎運行shell命令?第一行為何是# !/bin/sh?
因為shell程式是解釋執行的,所以不需要編譯裝配成目標程式,按照shell編程的慣例,以bash為例,程式的第一行一般為“# !/bin/bash”,其中#表示該行是注釋,歎號“!”告訴shell運行歎號之後的命令並用檔案的其餘部分作為輸入,也就是運行/bin/bash並讓/bin/bash去執行shell程式的內容。執行shell程式的方法有三種:1、sh shell程式檔案名稱 這種方法的命令格式為:bash shell程式檔案名稱這實際上是調用一個新的bash命令解釋程式,而把shell程式檔案名稱作為參數傳遞給它。新啟動的shell將去讀指定的檔案,執行檔案中列出的命令,當所有的命令都執行完結束。該方法的優點是可以利用shell調試功能。2、sh<shell程式檔案名稱 格式為:bash<shell 程式檔案名稱這種方式就是利用輸入重新導向,使shell命令解釋程式的輸入取自指定的程式檔案。3、用chmod命令使shell程式成為可執行檔 一個檔案能否運行取決於該檔案的內容本身可執行且該檔案具有執行權。對於shell程式,當用編輯器產生一個檔案時,系統賦予的許可許可權都是644(rw-r-r--),因此,當使用者需要運行這個檔案時,只需要直接鍵入檔案名稱即可。在這三種運行shell程式的方法中,最好按下面的方式選擇:當剛建立一個shell程式,對它的正確性還沒有把握時,應當使用第一種方式進行調試。當一個shell程式已經調試好時,應使用第三種方式把它固定下來,以後只要鍵入相應的檔案名稱即可,並可被另一個程式所調用。