首页 > 其他分享 >打靶记录16——Momentum

打靶记录16——Momentum

时间:2024-09-07 17:51:34浏览次数:9  
标签:AES 16 redis 解密 打靶 js CryptoJS Momentum crypto

靶机:

https://download.vulnhub.com/momentum/Momentum.ova

下载后使用 VirtualBox 打开

难度:中

目标:取得 root 权限 + 2 Flag

攻击方法:

  • 主机发现
  • 端口扫描
  • 信息收集
  • Web 路径爆破
  • XSS 漏洞
  • JS 脚本分析
  • AES 解密
  • Redis 认证漏洞

主机发现

sudo arp-scan -l

端口扫描和服务发现

nmap -p- 192.168.0.104扫描全端口

nmap -p22,80 -sV -sC 192.168.0.104

发现 SSH 的版本是 OpenSSH 7.9

HTTP 是 Apache httpd 2.4.38

访问 80 端口的 Web 服务

发现 id 参数,测试SQL注入只是把值原原本本的返回到页面中

那么可能存在 XSS 漏洞,尝试输入 payload

获得 cookie

cookie=U2FsdGVkX193yTOKOucUbHeDp1Wxd5r7YkoM8daRtj0rjABqGuQ6Mx28N1VbBSZt解码Base64,发现Salted,意思是加盐了,应该是使用了某种加密算法

目录扫描

dirsearch -u "http://192.168.0.102/"

main.js 里的文件,重点关注里面的注释,是一段加密解密的代码

function viewDetails(str) {

  window.location.href = "opus-details.php?id="+str;
}

/*
var CryptoJS = require("crypto-js");
var decrypted = CryptoJS.AES.decrypt(encrypted, "SecretPassphraseMomentum");
console.log(decrypted.toString(CryptoJS.enc.Utf8));
*/


让我们逐行解释一下代码:

var CryptoJS = require("crypto-js");
  • 功能:这行代码将 crypto-js 库引入到当前的 JavaScript 文件中。
  • 解释:require 是 Node.js 中用于引入模块的函数,crypto-js 是一个常用的加密解密库,支持多种加密算法,包括 AES、SHA、MD5 等。
var decrypted = CryptoJS.AES.decrypt(encrypted, "SecretPassphraseMomentum");
  • 功能:这行代码解密一个加密的消息。
  • 解释:
    • CryptoJS.AES.decryptcrypto-js 库中用于 AES 解密的函数。
    • encrypted 是要解密的加密文本(假设它已定义,并且是一个有效的加密字符串)。
    • "SecretPassphraseMomentum" 是用于解密的密钥(passphrase)。这个密钥必须与加密时使用的密钥完全相同。
    • 解密函数返回的是一个 CryptoJS.lib.CipherParams 对象,它包含解密后的数据,但还未转换成可读的字符串。
console.log(decrypted.toString(CryptoJS.enc.Utf8));
  • 功能:这行代码将解密后的数据转换为 UTF-8 编码的字符串,并输出到控制台。
  • 解释:
    • .toString(CryptoJS.enc.Utf8) 方法将 CryptoJS.lib.CipherParams 对象转换为一个 UTF-8 编码的字符串。
    • CryptoJS.enc.Utf8crypto-js 库中用于处理 UTF-8 编码的编码器。

总结

这段代码的总体功能是:

  1. 引入 crypto-js 库。
  2. 使用 AES 算法解密一个加密的消息,使用指定的密钥。
  3. 将解密后的数据转换为 UTF-8 字符串,并输出结果。

那么我们得到如下信息:

密文:U2FsdGVkX193yTOKOucUbHeDp1Wxd5r7YkoM8daRtj0rjABqGuQ6Mx28N1VbBSZt
密钥:SecretPassphraseMomentum
加密算法:AES

百度搜索:cryptojs在线解密,获得一个网址:https://www.sojson.com/encrypt.html#google_vignette

填入密文和密钥即可解密成功,获得明文:auxerre-alienum##

前面又看到目标靶机开放了 22 端口,那么这个明文是不是就是登录的账号密码呢?

账号:auxerre

密码:auxerre-alienum##

成功登录目标靶机

获得第一个 flag

信息收集

uname -a 查看内核版本

searchsploit 4.19 查找有没有已知的内核漏洞的提权代码

这些都是失败的,没有一个可以成功提权的

lsb_release -a 查看操作系统

继续信息收集,发现了一个 redis 账号

redis 是一个非关系型数据库,它的安全性不好,有非授权的漏洞,它会默认监听 0.0.0.0 的 6379 端口,并且不需要进行认证

Redis 认证漏洞

ss -pantu 查看开放的所有端口,发现 6379 确实是开启的,但是靶机的管理员把监听地址设置成了 127.0.0.1 ,导致我们没有办法从外网直接来连接这个端口,但是我们已经通过 SSH 登录进来了,可以直接连 redis 数据库了

redis-cli 执行命令连进去,info 可以看见很多信息,说明不需要身份认证

发现 db0 这个库,然后还有一个 key

redis 这个非关系型的数据库是通过键值对的形式来存储数据的,不像 Mysql 这种关系型数据库是通过表来存放结构化的数据

keys * 命令查找所有键。

Get rootpass 获取键 rootpass 的值。

获得 m0mentum-al1enum##

结合 rootpass 这个键名,尝试登录 root 账号,我直接 su 成 root 账号,然后输入密码,成功登录!

cat root.txt 获取第2个 flag

学习笔记

  • 利用 redis 这种非授权的身份认证的漏洞,其实我们可以在目标靶机上做很多攻击的手段
  • 比如可以通过读取关键文件,从而帮助自己去实现提权
  • 或者也可以通过 redis 向目标靶机里面去直接写入一个 Webshell,从而拿到一个权限
  • 又或者调用一些第三方的外部的模块,通过模块的加载,利用 redis 进程权限比较松散的这种配置漏洞,也可以通过加载模块的方式,实现操作系统指令的直接执行

标签:AES,16,redis,解密,打靶,js,CryptoJS,Momentum,crypto
From: https://www.cnblogs.com/Fab1an/p/18401975

相关文章

  • Linux命令分享 三 (ubuntu 16.04)
    1、‘>’'>>'输出重定向用法:命令参数>文件ls>a.txt‘>’将一个命令的结果不输出到屏幕上,输出到文件中,如果文件不存在就创建文件,如果存在就覆盖文件。ls>>a.txt‘>>’如果文件不存在就创建文件,如果存在就追加在文件后面。2、echo回显字符你在echo后面输入......
  • 线性dp:LeetCode516 .最长回文子序列
    LeetCode516.最长回文子序列题目叙述:力扣题目链接(opensnewwindow)给你一个字符串s,找出其中最长的回文子序列,并返回该序列的长度。子序列定义为:不改变剩余字符顺序的情况下,删除某些字符或者不删除任何字符形成的一个序列。示例1:输入:s="bbbab"输出:4解释:一个可能的......
  • 【OCPP】ocpp1.6协议第5.16 Set Charging Profile章节的介绍及翻译
    目录5.16设置充电配置SetChargingProfile-概述主要内容1.概要2.操作流程3.参数说明4.配置示例实际应用结论5.16设置充电配置SetChargingProfile-原文译文5.16.1在订单开始时设置一个chargingprofile5.16.2在RemoteStartTransaction请求中设置一个charging......
  • Gitlab-ce upgrade 16.0.1 to 17.3.1【Gitlab-ce 16.0.1 升级 17.3.1】
    文章目录背景gitlab-ce16.0.1升级17.3.1失败gitlab-ce16.0.1升级16.11.8失败gitlab-ce16.0.1升级16.7.9失败gitlab-ce16.0.1升级16.3.8成功gitlab-ce16.3.8升级16.11.8失败gitlab-ce16.3.8升级16.7.9成功gitlab-ce16.7.9升级16.11.8成功gitlab-ce16.......
  • 【内网渗透】最保姆级的春秋云镜Exchange打靶笔记
    目录flag1flag2flag3 flag4flag1fscan扫外网访问8000端口->官方网站 Java代码审计之华夏ERPCMSv2.3|Drunkbaby'sBlogadmin/123456弱口令打/user/list?search=的jdbc+fj反序列化vps搭一个MySQL_Fake_Serverpayload:/user/list?search=%7b%20%22%6e%6......
  • ios16.2版本以上mui的picker选择器显示异常的修复方案
    问题描述muipickerios16.2系统及以上,选择器滚动错误错乱,显示异常但是可以正常选择用多个ios手机测试了,凡是升级到16.2及以上的均会产生这个的问题。使用官方的示例,放到升级到16.2的ios手机上测试,问题同样存在https://www.dcloud.io/hellomui/examples/picker.html(这是官方案例,......
  • 【读书笔记-《30天自制操作系统》-16】Day17
    本篇内容开始进入一个新的主题——命令行,这是一个操作系统很基本的功能。本篇中首先实现命令行窗口的显示,做到能切换到窗口以及实现向窗口输入内容。接下来在之前键盘输入的基础上,增加对符号以及大小写字母的输入。最后再加入对其他锁定键的支持。1.创建命令行窗口与窗口......
  • 洛谷刷题之P1168
    中位数题目描述给定一个长度为NNN的非负整数序列AAA,对于前奇数......
  • react16之前的虚拟dom数据结构简单简介
    在react16之前的版本中,虚拟dom节点的数据结构看起来大致如下constVitrualDom={type:'div',props:{class:'title'},children:[{type:'span',children:'HelloConardLi'},{type:'ul',......
  • HJ16 购物单
    题目:https://www.nowcoder.com/practice/f9c6f980eeec43ef85be20755ddbeaf4?tpId=37&tqId=21239&rp=1&ru=/exam/oj/ta&qru=/exam/oj/ta&sourceUrl=%2Fexam%2Foj%2Fta%3FtpId%3D37&difficulty=undefined&judgeStatus=undefined&tags=&title......