Vulnhub打靶记录:momentum
相关信息
kali:10.0.0.9/24
靶机:10.0.0.16/24
靶机下载:https://download.vulnhub.com/momentum/Momentum.ova
目标:2个 flag + root权限
难度:中
未提及的相关知识点,命令和代码等等可以查看我其他三个blog:
-
渗透相关知识补充 - CC-HL - 博客园 (cnblogs.com)
当然我也只是记录了我认为有必要的。
文字思路
全流程思路:
- 主机发现 端口扫描
- 信息搜集
WEB路径爆破 xss漏洞:这个漏洞在渗透的过程中有大量可以尝试的地方,不要遗漏JS脚本分析:这其实是个非常非常常规的操作,但是却异常的关键不能够省略 AES解密Redis认证漏洞:由默认安装redis时自动时在0.0.0.0:6379上打开的免密登陆引起的漏洞
下意识的操作
- 查看网页的
js代码 - 一定是通过
passwd文件来全面的了解靶机上的每一个用户,从而找出突破点,直接访问/home里面的用户会遗漏一下系统用户。
主要的知识点
js加解密模块的使用- 跨站脚本
xss漏洞的发现 redis数据库漏洞的利用和相关操作
具体流程
信息搜集
-
主机发现,端口扫描,版本确认。仅仅开放
22,80端口,并没有太多有用的信息发现。
-
访问
web页面,在id这个url参数中可以进行mysql,xss等漏洞的尝试。

-
当键入
<script>alert(document.cookie)</script>这个跨站脚本的时候,成功的进行了xss的注入,获取如下cookie信息:cookie=U2FsdGVkX193yTOKOucUbHeDp1Wxd5r7YkoM8daRtj0rjABqGuQ6Mx28N1VbBSZt
-
尝试进行
base64解密发现为乱码,但通过salt这个词就知道这个加密的密码文破解难度大,基本可以不用尝试进行暴力破解了。
-
web上源码等基本测试也是没有太多的发现,下一步进行路径爬取,发现manual,js目录。dirsearch -u http://10.0.0.16
-
/js:在这个文件中发现了一个加密的函数,先包含了一个crypto-js文件,然后是使用了AES的encrypted进行解密,SecretPassphraseMomentum这个目前还不太确定它代表的具体含义。
-
/manual:并没有帮助突破边界的发现。
-
-
根据函数中的
cryptojs关键字进行搜索发现了他就是一个帮助js实现加解密的框架,以下为其的gitee托管网站:crypto-js: CryptoJS (crypto.js) 为 JavaScript 提供了各种各样的加密算法 (gitee.com)
通过
readme的使用教程大致可以知道SecretPassphraseMomentum就是salt,ciphertext是一个已经被加密的对象。可以使用:decrypt,toString两个方法将加盐的密文解密并转换为字符串。 -
CryptoJS Example (codepen.io),这个网站可以直接编写使用
cryptojs这个js库免去我们搭建环境的麻烦,直接对照官网的示例就可以写出解密到的代码,解出刚刚的加密代码为:auxerre : auxerre-alienum##
突破边界/信息搜集
-
使用
auxerre : auxerre-alienum##成功的登陆靶机,使用内核相关的漏洞无法完成提权,靶机上也不存在sudo命令,只能暂且的搜获第一个flag。
-
通过
passwd文件发现靶机上存在redis用户,表明极有可能存在redis这个非关系型数据库。
-
通过
ss -pantu; ps -aux | grep redis两个命令不难发现靶机上以redis身份在127.0.0.1:6379端口上运行这redis。尝试免密进行登陆发现靶机确实没有进行任何的redis防护,直接进入。键入info查看redis具体的情况。
-
使用
KEY *获取redis中所有的键:rootpass,明显是个非常具有提示性的键。直接
GET rootpass获取键的值:m0mentum-al1enum##。
提权
-
直接
root : m0mentum-al1enum##就可以成功root登陆,拿下第二个flag完成打靶。
相关工具/命令
工具
js的cryptojs库的环境网站
通过这个网站就可免去搭建js环境直接尝试进行crytojs模块的加解密操作:CryptoJS Example (codepen.io)
相关知识
重要
redis数据库
-
what? 返回
Redis是一种内存数据库,也被称为键值存储数据库。它是一个开源的、高性能的非关系型数据库(NoSQL),用于存储和检索数据。Redis支持各种数据结构,如字符串、哈希表、列表、集合和有序集合。这些数据结构可以通过键(key)来访问和操作。
Redis的主要特点是其快速访问速度和高吞吐量,这是因为它将数据存储在内存中,而不是在磁盘上。由于内存的快速读写速度,Redis非常适合用作缓存层或临时数据存储。此外,Redis还提供持久化功能,可以将数据定期保存到磁盘上,以防止数据丢失。
由于其灵活性和高效性,Redis被广泛用于各种应用场景,包括缓存、会话存储、实时分析、排行榜、消息队列等。
redis这个数据默认安装是会打开0.0.0.0:6379这个端口,同时不需要密码就可以登陆实现高权限操作。大多数使用redis的服务器都会存在这个漏洞 -
how to use
-
启动Redis服务器:
redis-server -
连接到Redis服务器:
redis-cli -
存储键值对:
SET key value -
获取键的值:
GET key -
删除键:
DEL key -
检查键是否存在:
EXISTS key -
获取所有键:
KEYS pattern # KEY *这个命令用于获取满足指定模式(pattern)的所有键。但是在生产环境中,不推荐在大规模数据库上使用此命令,因为它会阻塞服务器一段时间,影响性能。
-

浙公网安备 33010602011771号