Rickdiculously Easy
? ? ? ? 光聽名字就知道是入門級別的機(jī)器了页畦。這個(gè)機(jī)器跟一部動(dòng)畫有關(guān),如果你有看過的話就更好玩了蚀乔,我沒有看過持寄,所以可能作者的有些point我get不到∥人保總結(jié)就是一臺新手向的CTF機(jī)器缎谷。
What will cover:
? ? ? ? CTF , SSH , Command Injection Execution , Online password attack , wordlist generation (using crunch) , Bash CGI Code Review , Shellshock ?
Start:
? ? ? ? ? Nmap 輸出大概是這樣:
? ? ? ? 果然是新手向的靶機(jī),輕輕一躍就能摘到果實(shí)灶似。
? ? ? ? 引起我興趣的是60000居然寫的是個(gè)shell ??
? ? ? ? 還確實(shí)是個(gè)shell 不過出不去列林,拿了個(gè)flag。到這里收獲大概是這樣:
port - 13337
????????FLAG:{TheyFoundMyBackDoorMorty}-10Points
port - 60000
????????FLAG{Flip the pickle Morty!} - 10 Points
? ? ? ? 轉(zhuǎn)去看別的酪惭。22 和 22222 都是SSH希痴,會(huì)不會(huì)有什么問題呢? 但check 過下版本春感,沒覺得哪里不妥砌创,嘗試分別以登錄,發(fā)現(xiàn)22似乎不能用密碼登錄鲫懒。
? ??nmap -p 22 -sV --script ssh-auth-methods --script-args="ssh.user=root" 192.168.10.131
? ? ? ? 如果是這樣的話那就是要找密鑰的節(jié)奏啊嫩实。再看看22222:
nmap -p 22222 -sV --script ssh-auth-methods --script-args="ssh.user=root" 192.168.10.131
? ? ? ? 22222沒問題,可以用密碼窥岩。
? ? ? ? 再去看看別的:9090:
? ? ? ? flag直接送甲献!9090是一個(gè)叫Cockpit的監(jiān)控工具,但這里貌似是壞的谦秧,沒法登錄竟纳。
? ? ? ? FTP是可以匿名登錄的,又輕松拿到一個(gè):
? ? ? ? 但是不可寫疚鲤,沒啥用锥累。OK 至此拿到4個(gè)flag:
? ? ? ? 接下來將是最有趣的80了。
? ? ? ? 打開就是carton人物集歇。在robots.txt找到兩個(gè)路徑:
? ? ? ? 看到第一個(gè)眼前一亮桶略,但打開卻是個(gè)under construction,第二看到就想到命令執(zhí)行了,burp開一下:
? ? ? ? 通過這個(gè)命令執(zhí)行我可以瀏覽passwd但cat很顯然是被做了手腳际歼,用less可以替代惶翻,拿到passwd之后檢查出這幾個(gè)賬戶:
? ? ? ? 通過命令執(zhí)行還可以瀏覽到web目錄的結(jié)構(gòu):
? ? ? ? 還可以獲取apache的配置文件
? ? ? ? 之后我一心想通過這個(gè)命令執(zhí)行pop shell但多翻嘗試都無果,包括直接拼接命令鹅心、urlencode命令吕粗、web目錄似乎不可寫,所以echo寫webshell和wget下載webshell都行不通旭愧。嘗試echo 寫tcpshell到/var/www再執(zhí)行颅筋,發(fā)現(xiàn)雖然目錄可寫,但寫入不成功输枯。用nc測試回連本地端口發(fā)現(xiàn)沒反應(yīng)议泵,防火墻做了策略(后面證實(shí)并沒有),于是結(jié)合22端口的密鑰登錄設(shè)想會(huì)不會(huì)有帳號配置有密鑰桃熄,嘗試本地SSH登錄:
ssh Morty@localhost id
ssh RickSanchez@localhost id
? ? ? ? 但均沒有反應(yīng)先口。。瞳收。碉京。。缎讼。
????????糾結(jié)了很久收夸,后面發(fā)現(xiàn)在passwords目錄下藏了一個(gè)密碼:? ? ? ??
? ? ? ? 結(jié)合passwd中提取出來的賬戶名整理出username.txt然后用hydra爆破一下:
hydra -L ./username.txt -p winter ssh://192.168.10.131:22222
? ? ? ? 有戲坑匠。Summer登上后拿到Summer的Flag血崭,發(fā)現(xiàn)home下大概是這樣:
? ? Morty的目錄下拿到一個(gè)密碼,解壓文件后拿到一個(gè)flag
? ? ? ? 其實(shí)如果前面有一直整理所有獲得的flag你會(huì)發(fā)現(xiàn)這個(gè)flag有點(diǎn)特別厘灼。夹纫。。设凹。舰讹。。
? ? ? ? safe文件執(zhí)行一下似乎是個(gè)解密的東西闪朱,一開始我找字符串月匣,但是沒有收獲,我甚至還使用nc將其下載到本地機(jī)器上做了一下分析奋姿,然后往ctf的方向想是不是文件夾的名稱但也不是,收集了很久整理了幾個(gè)詞都不對称诗,其實(shí)就是用上一個(gè)flag來解。解密后發(fā)現(xiàn)有一個(gè)關(guān)于RickSanchez用戶密碼的提示计维,提到了一支band鲫惶,但我沒有看過動(dòng)畫所以只能google了实抡,然后生成字典:
crunch 7 7 -t ,%Flesh >> rick.pass
crunch 7 7 -t Flesh,% >> rick.pass
crunch 7 7 -t %,Flesh >> rick.pass
crunch 7 7 -t Flesh%, >> rick.pass
crunch 10 10 -t ,%Curtains >> rick.pass
crunch 10 10 -t Curtains,% >> rick.pass
crunch 10 10 -t %,Curtains >> rick.pass
crunch 10 10 -t Curtains%, >> rick.pass
? ? ? ? band隊(duì)叫做:Flesh?Curtains 好了拿去爆破一下:
????good 很順利就拿到了
? ? ? 然后可以拿到root. 總結(jié)一下拿到的所有的flag:
Bash CGI Code Review:
? ? 這次很關(guān)鍵的一個(gè)突破口在于vulnerable的cgi去看看:? ? ? ? ? ??
? ? ? ?就是一個(gè)form表單采用GET方法鸟废,QUERY_STRING部分就是請求的url中?后面跟的參數(shù)
curl -s -vv localhost/cgi-bin/tracertool.cgi?ip=127.0.0.1
? ? ? ? 比如這個(gè)例子盒延,QUERY_STRING就是ip=127.0.0.1 而對QUERY_STRING處理后得到IP添寺,這個(gè)處理并不嚴(yán)格而導(dǎo)致了命令拼接,簡單做個(gè)修復(fù)可以在IP后面在做一個(gè)關(guān)鍵字的截?cái)嗵幚恚?/p>
for bad in ';' '&' '|';do IP=`echo $IP|cut -d $bad -f 1`;done
? ? ? ? 其實(shí)還可以考慮Shellsock但這個(gè)bash的版本不受影響而且過濾了;以后也不一定能exp.回顧一下前面無法popshell的原因很有可能是命令產(chǎn)生了歧義吧博脑。再繼續(xù)的話還可以在寫寫通過命令注入讀到apache配置文件分析但在這里不是很有必要票罐。
Review
? ? ? ? 事后反省之所以urlencode失效原因應(yīng)該是因?yàn)檫@只是一個(gè)bashCGI,其次web中能操作的只是apache用戶疗杉,這個(gè)帳號的權(quán)限能否建立連接也是一個(gè)問題蚕礼,第三點(diǎn)就是web中tcpshell常見的斷連,一回連上來就會(huì)馬上斷掉朝聋。
? ? ??
?????OK 今天就到這里