Vulnhub打靶记录:momentum

相关信息


kali:10.0.0.9/24

靶机:10.0.0.16/24

靶机介绍:Momentum: 1 ~ VulnHub

靶机下载:https://download.vulnhub.com/momentum/Momentum.ova

目标:2flag + root权限

难度:中

未提及的相关知识点,命令和代码等等可以查看我其他三个blog:

文字思路


全流程思路:

  • 主机发现 端口扫描
  • 信息搜集 WEB路径爆破
  • xss漏洞:这个漏洞在渗透的过程中有大量可以尝试的地方,不要遗漏
  • JS脚本分析:这其实是个非常非常常规的操作,但是却异常的关键不能够省略 AES解密
  • Redis认证漏洞:由默认安装redis时自动时在 0.0.0.0:6379上打开的免密登陆引起的漏洞

下意识的操作

  1. 查看网页的js代码
  2. 一定是通过passwd文件来全面的了解靶机上的每一个用户,从而找出突破点,直接访问 /home里面的用户会遗漏一下系统用户。

主要的知识点

  1. js加解密模块的使用
  2. 跨站脚本xss漏洞的发现
  3. redis数据库漏洞的利用和相关操作

具体流程


信息搜集

  1. 主机发现,端口扫描,版本确认。仅仅开放 22,80端口,并没有太多有用的信息发现。

    Snipaste_2023-07-25_11-15-13
  2. 访问web页面,在id这个url参数中可以进行mysql,xss等漏洞的尝试。

    Snipaste_2023-07-25_11-15-54

    Snipaste_2023-07-25_11-16-50

  3. 当键入 <script>alert(document.cookie)</script>这个跨站脚本的时候,成功的进行了xss的注入,获取如下cookie信息:

    cookie=U2FsdGVkX193yTOKOucUbHeDp1Wxd5r7YkoM8daRtj0rjABqGuQ6Mx28N1VbBSZt
    
    Snipaste_2023-07-25_11-19-21
  4. 尝试进行base64解密发现为乱码,但通过salt这个词就知道这个加密的密码文破解难度大,基本可以不用尝试进行暴力破解了。Snipaste_2023-07-25_11-20-39

  5. web上源码等基本测试也是没有太多的发现,下一步进行路径爬取,发现manual,js目录。

    dirsearch -u http://10.0.0.16
    
    Snipaste_2023-07-29_14-36-20
    • /js:在这个文件中发现了一个加密的函数,先包含了一个 crypto-js文件,然后是使用了AESencrypted进行解密,SecretPassphraseMomentum这个目前还不太确定它代表的具体含义。

      Snipaste_2023-07-29_14-37-01

    • /manual:并没有帮助突破边界的发现。

  6. 根据函数中的 cryptojs关键字进行搜索发现了他就是一个帮助js实现加解密的框架,以下为其的gitee托管网站:crypto-js: CryptoJS (crypto.js) 为 JavaScript 提供了各种各样的加密算法 (gitee.com)

    Snipaste_2023-07-29_14-44-30

    通过readme的使用教程大致可以知道 SecretPassphraseMomentum就是saltciphertext是一个已经被加密的对象。可以使用:decrypt,toString两个方法将加盐的密文解密并转换为字符串。

  7. CryptoJS Example (codepen.io),这个网站可以直接编写使用cryptojs这个js库免去我们搭建环境的麻烦,直接对照官网的示例就可以写出解密到的代码,解出刚刚的加密代码为:auxerre : auxerre-alienum##

    Snipaste_2023-07-29_14-51-54

突破边界/信息搜集

  1. 使用 auxerre : auxerre-alienum##成功的登陆靶机,使用内核相关的漏洞无法完成提权,靶机上也不存在sudo命令,只能暂且的搜获第一个flag

    Snipaste_2023-07-29_14-57-00

  2. 通过passwd文件发现靶机上存在redis用户,表明极有可能存在redis这个非关系型数据库。

    Snipaste_2023-07-29_15-01-40

  3. 通过 ss -pantu; ps -aux | grep redis两个命令不难发现靶机上以redis身份在127.0.0.1:6379端口上运行这redis。尝试免密进行登陆发现靶机确实没有进行任何的redis防护,直接进入。键入info查看redis具体的情况。

    redis介绍

    Snipaste_2023-07-29_17-30-57

  4. 使用 KEY *获取redis中所有的键:rootpass,明显是个非常具有提示性的键。

    直接GET rootpass获取键的值:m0mentum-al1enum##

    Snipaste_2023-07-29_18-18-01

提权

  1. 直接 root : m0mentum-al1enum##就可以成功root登陆,拿下第二个flag完成打靶。

    Snipaste_2023-07-29_18-20-54

相关工具/命令


工具

js的cryptojs库的环境网站

通过这个网站就可免去搭建js环境直接尝试进行crytojs模块的加解密操作:CryptoJS Example (codepen.io)

相关知识


重要

redis数据库

  1. what? 返回

    ​ Redis是一种内存数据库,也被称为键值存储数据库。它是一个开源的、高性能的非关系型数据库(NoSQL),用于存储和检索数据。Redis支持各种数据结构,如字符串、哈希表、列表、集合和有序集合。这些数据结构可以通过键(key)来访问和操作。

    ​ Redis的主要特点是其快速访问速度和高吞吐量,这是因为它将数据存储在内存中,而不是在磁盘上。由于内存的快速读写速度,Redis非常适合用作缓存层或临时数据存储。此外,Redis还提供持久化功能,可以将数据定期保存到磁盘上,以防止数据丢失。

    ​ 由于其灵活性和高效性,Redis被广泛用于各种应用场景,包括缓存、会话存储、实时分析、排行榜、消息队列等。

    redis这个数据默认安装是会打开 0.0.0.0:6379这个端口,同时不需要密码就可以登陆实现高权限操作。大多数使用redis的服务器都会存在这个漏洞

  2. how to use

    1. 启动Redis服务器:

      redis-server
      
    2. 连接到Redis服务器:

      redis-cli
      
    3. 存储键值对:

      SET key value
      
    4. 获取键的值:

      GET key
      
    5. 删除键:

      DEL key
      
    6. 检查键是否存在:

      EXISTS key
      
    7. 获取所有键:

      KEYS pattern		# KEY *
      

      这个命令用于获取满足指定模式(pattern)的所有键。但是在生产环境中,不推荐在大规模数据库上使用此命令,因为它会阻塞服务器一段时间,影响性能。

posted @ 2023-08-04 15:54  C_CHL  阅读(67)  评论(0编辑  收藏  举报