Momentum靶场练习---中
0x00部署
Momentum靶机:下载地址
宿主机:kali2022
目标:获取root拿到flag文件
0x01信息收集
1.主机发现
$ sudo arp-scan -l
//因为靶机与宿主机在同一网段,所以用二级扫描来发现靶机ip
2.端口扫描
//使用namp命令,-p-指定ip,查看哪些端口开放
$ sudo nmap -p- 靶机ip
$ sudo nmap -sC -sV -O -p22,80 靶机ip
//-sC常见漏洞脚本扫描
//-sV开放端口服务/版本号
//-O操作系统探测
比较好想到的是,这里只有两个开放端口进行利用,所以流程就是在80端口找一些隐藏路径得到能登录ssh的信息进行提权。
3.信息收集(漏洞扫描)
$sudo nmap --script=vuln -p21,80 靶机ip
4.路径爬取
对80端口进行一下路径爬取,寻找隐藏信息
$ dirsearch -u http://ip //没什么特别的结果,继续
$ dirsearch -u http://ip -f -e php,txt,html //指定扩展名
$ dirsearch -u http://ip -w /usr/share/seclists/Discovery/Web-Content/common.txt
//指定字典进行爆破
$ gobuster dir -r -u http://192.168.56.107/site/ -x txt,html,php -w /usr/share/seclists/Discovery/Web-Content/common.txt
使用dirsearch爬取的路径结果:
使用gobuster的路径结果:
5.JS脚本分析
访问js页面,发现有一个main.js:
在js页面中获得一个js的代码:
function viewDetails(str) {
//这里提供了一个href的地址,这个地址包含一个id参数
window.location.href = "opus-details.php?id="+str;
}
/*
//搜索一下crypto-js,javascript进行加解密的库,查阅一下AES加解密的方法的使用
var CryptoJS = require("crypto-js");
//进行AES解密(密文,密钥)
var decrypted = CryptoJS.AES.decrypt(encrypted, "SecretPassphraseMomentum");
console.log(decrypted.toString(CryptoJS.enc.Utf8));
*/
6.XSS漏洞
根据这段代码window.location.href = "opus-details.php?id="+str;
,试一下url,尝试一些注入,发现id的内容会显示在页面上,可以推测这里存在反射型xss:
获取一下页面cookie,返回值很像base64编码
根据返回信息猜测是一段base64编码,解密一下试试
U2FsdGVkX193yTOKOucUbHeDp1Wxd5r7YkoM8daRtj0rjABqGuQ6Mx28N1VbBSZt
得到一串加盐的加密字符,依照上边的js代码中的密文–》破解
7.AES解密
这里使用一个工具在线解密:CryptoJSExample
解密之后得到字符:auxerre-alienum##
当前没有什么可利用的地方,得到一串字符串,可以联想到ssh连接的账号密码
进行ssh连接,这里多次尝试才发现auxerre是用户名,整个字符串是密码:
得到了第一个flag
没有什么可利用的查看一下靶机的用户权限,发现这里有redis服务。
8.Redis认证漏洞(非授权漏洞)
-
Redis是一种基于内存的非关系型数据库,默认无身份认证的配置,使其成为了近年来众多安全事件的罪魁祸首。利用该漏洞不但可以读写文件,更有可能直接执行操作系统命令,或严重的信息泄漏,并最终导致权限提升。
-
基于内存的非关系型数据库,和传统关系型数据库(以表的形式存放数据)不一样,以键值对的方式存放数据:键的名称及赋值
-
非授权漏洞:默认启动服务会侦听6379端口
$ 0.0.0.0 6379 AUTH
$ ss -pantu //查看开放端口服务,默认开启在127.0.0.1导致通过外网是不能连接的,需要登录当前靶机账号本地连接
$ ps -aux |grep redis //查看进程启动账号--》root加载库的方式实现操作系统命令的执行--》拿到root权限
//redis账号就没有shell的权限
$ redis-cli //连接redis数据库客户端程序
> info //查看信息(数据库、),若能启用说明没有身份认证
//# keyspace中存放的键的信息
> KEYS * //查看键的名称-->rootpass
>GET rootpass //查看键的内容--》类似之前找到的账户名
>exit
$su //切换root用户
发现是redis用户启动的服务
0x02权限提升
存在一个存储的键
得到与之前相似的账号字符串,退出redis再su试一下。
利用redis可以读取关键文件/写webshell/调用第三方的程序,加载模块
0x03总结
学习如何使用redis的未授权漏洞进行权限的提升,以及在线破解工具对于AES加密的破解方法。