红队打靶:FourAndSix2.01打靶思路详解(vulnhub)

news2024/11/15 1:21:55

目录

写在开头

第一步:主机发现与端口扫描

第二步:NFS渗透

第三步:7z压缩包的密码破解

第四步:ssh私钥登录

第五步:less+vi提权

总结与思考

写在开头

 本篇博客根据大佬红队笔记的视频进行打靶,详述了打靶的每一步思路,并非复现writeup,读者耐心看完,定会有所收获。本靶机并非常规的web渗透类型的靶机,难度不高,但涉及了像许多先前暂未触及的知识,考验了密码暴力破解的工具与操作。同时该靶机是一台openBSD操作系统的靶机,该操作系统通常用于防火墙或网络设备,与常规的ubuntu/debian/centOS等Linux有着明显的命令差异。本文涉及到的知识点包括nfs文件挂载、join破解.7z加密文件、私钥哈希、7z2john/ssh2john工具的使用、less+vim组合利用提权等。完整打靶思路详见:

「红队笔记」靶机精讲:FourandSix2.01 - 小巧精悍,干净利落的靶机,暴力破解x2,更有less+vi提权。_哔哩哔哩_bilibili

  本文针对的靶机源于vulnhub,详情见:

FourAndSix: 2.01 ~ VulnHub

  下载链接见:

 https://download.vulnhub.com/fourandsix/FourAndSix2.ova

 本靶机的目标是拿到root权限,并查看/root目录下的flag。下载成功后用vmware打开,将网络链接设置为NAT模式。靶机打开之后如下: 

第一步:主机发现与端口扫描

 依旧常规思路,命令不细讲了,详情可见:

渗透测试:主机发现和端口扫描的思路方法总结(nmap+ping命令+nc.traditional+伪设备连接)

使用的命令如下:

nmap -sn 10.10.10.0/24
nmap --min-rate 10000 -p- 10.10.10.143
nmap -sT -sV -O -sC -p22,111,2049 10.10.10.143
nmap -sU --min-rate 10000 -p- 10.10.10.143
nmap --script=vuln -p22,111,2049 10.10.10.143

 发现靶机的ip是10.10.10.143,开放了3个端口,分别是22的ssh端口,111的rpc端口,2049的nfs共享文件端口:

 具体扫描这几个端口的服务、操作系统信息如下:

 可发现操作系统是OpenBSD,这并不是很常见的linux操作系统,主要用于网络和防火墙设备中。其他漏洞扫描没发现有用信息,同时UDP扫描显示2049的UDP端口也开放。

第二步:NFS渗透

 nfs全称为Network File Share网络共享文件模式,开启这个服务的系统可以指定某个目录作为nfs的服务地址,作为共享文件夹。我们可以首先使用showmount工具查看靶机是否有共享文件夹:

showmount -e 10.10.10.143

 -e表示exports,即靶机向外共享的到处列表,可以看到共享目录是/home/user/storage(这样也表明靶机很可能有一个名为user的用户),同时(everyone)表明任何人都可使用此共享目录。因此我们可以创建一个目录tmp,尝试能否将这个共享的目录/home/user/storage映射到我们创建的目录:

mkdir tmp 
mount -t nfs 10.10.10.143:/home/user/storage tmp

 mount用于挂载目录,-t是type的意思,指定为nfs共享文件模式,由上图可见该映射成功了,我们只要进入tmp目录应该就能看到靶机/home/user/storage目录的内容,如下:

 果然,我们看到了/home/user/storage目录下的文件backup.7z,拿到backup.7z后,把这个文件复制到上级目录(避免在挂载目录处理留下痕迹),看起来是个7z的压缩包,我们先用file查看具体的文件类型,并用binwalk看看有啥捆绑:

第三步:7z压缩包的密码破解

 由上图可知,就是个单纯的7z压缩文件,也没有捆绑文件,因此尝试直接用7z工具解压,-x参数表示解压缩:

7z -x backup.7z

 直接运行解压命令提示要输入密码,咱也不知道密码是啥,随便输一个,报错信息如下:

 说明内容有8张图片和两个文件,两个文件看名称像是ssh登录的私钥和公钥。此时说实话有点思路卡住了,理论上我们是需要解压这个7z压缩包的,但密码咱有不知道在哪里找。干脆就用john爆破吧。由于john爆破只能针对hash文件,因此我们先用7z2john生成7z压缩包的哈希,名称为backup7z_hash(随便起名):

7z2john backup.7z > backup7z_hash

 如上图所示,backup7z_hash文件生成成功。


查询一下,如果读者像我一样倒霉,运行7z2john的命令后出现如下报错: 

提示表明在运行7z2john脚本时,缺少了Compress::Raw::Lzma Perl模块。要解决这个问题,需要安装该模块。只要运行以下两个命令安装即可:

sudo apt update
sudo apt install libcompress-raw-lzma-perl

 然后删掉错误生成的backup7z_hash,再次运行7z2john backup.7z > backup7z_hash应该就不会有报错了。查询结束。


生成7z的hash后,使用字典rockyou.txt进行压缩包的密码暴力破解,指定形式为7z格式:

john --format=7z --wordlist=/usr/share/wordlists/rockyou.txt backup7z_hash

 得到压缩包的密码是chocolate,看来作者应该很爱吃巧克力呀。然后我们用这个密码成功解压了所有文件:

包括八张hello kitty的图片: 

以及两个疑似ssh公钥和私钥的文件:

 看到hello kitty的文件,首先先用file查看是否是真的单纯的图片文件:

 好像就是单纯的图片文件,我们再试试用binwalk看看有没有捆绑,发现也没有

 那有没有可能是图片隐写啥的,说不定图片里面有备注,我们尝试用exiftool查看图片:

 查看了8张图片,也没发现有啥备注信息。那么就查看id_rsa的公钥和私钥吧。

第四步:ssh私钥登录

 查看不带.pub的文件id_rsa,这可能是私钥:

 看起来确实是openssh的私钥,再看看公钥:

 那我们就直接尝试用私钥登录user用户吧:

ssh -i id_rsa user@10.10.10.143 

 

  -i表示用私钥登录,结果显示私钥id_rsa本身还有passphrase,也就是说私钥被加密了,还要用密码对私钥进行解密,输错或者直接回车的话,会转变为密码登录ssh,咱也不知道密码。看来此处应该又要破解id_rsa私钥的密码了。与破解压缩包的思路类似,先将私钥生成john对应的hash文件,这里命名为id_rsa_hash:

ssh2john id_rsa > id_rsa_hash 

成功生成了id_rsa_hash,然后用john破解,密码字典指定为rockyou.txt,这里不太了解ssh私钥hash的格式是啥,就干脆不用--format指定,让john自己识别:

john id_rsa_hash --wordlist=/usr/share/wordlists/rockyou.txt 

 拿到了私钥的passphrase是12345678,然后我们重新用私钥登录,输入passphrase即可成功登录user的shell:

 可以看到操作系统是OpenBSD6.4,同时当前用户属于两个组:user和wheel。

第五步:less+vi提权

 在常规的linux系统中,我们拿到初始shell后往往会运行sudo -l查看有什么特殊的信息,但OpenBSD的语法与之不同,无法直接sudo -l。我们先尝试寻找有什么s位的文件,尝试能否采用suid的方法提权,具有s位的文件表明该文件在运行时能够以其属主权限运行,我们可以借此进行提取,首先在根目录/按照权限-perm搜索具有s权限的文件f:

find / -perm -u=s -type f 2>/dev/null

 这里要重点关注doas这个指令,该指令类似于sudo,即以高权限运行指令需要添加的命令。由于doas指令是具有s位的,因此使用doas可以以高权限运行指令。我们要查找的就是有哪些指令可以免密doas运行(即类似于ubuntu/debian的Linux运行sudo -l 后有哪些免密sudo的指令),这就需要查找doas的配置信息了。我们直接用find搜索doas的相关文件:

find / -name doas* -type f 2>/dev/null

查找结果如下:

看起来doas.conf就是doas的配置文件,我们查看:

 非常关键的信息!这个文件告诉我们,less和authlog指令是可以用doas免密以root权限运行的!那我们就运行试试:

doas /usr/bin/less /var/log/authlog

 运行发现再用less读取authlog:

 那么要如何提权呢?此处我们是使用less命令对authlog进行查看,且此时less命令是具有root权限的。但less只能读文件,不能执行系统命令。我们知道在less中按字母v是可以启动vi编辑器的,而vi编辑器中输入冒号:后即可输入交互的指令,又由于less具有root权限,在less中启动的vi编辑器应该也具有root权限,那么我们按v进入vi编辑器后,输入:!sh应该就能够以root身份启动shell了

按v之后进入vi编辑模式:

 再输入:!/sh即可提权,感叹号!用于表示执行系统命令:

 可看到提示符已经变为了井号#,提权成功!

 进入/root目录读取flag:

 至此打靶完成!

总结与思考

 这个靶机不同于常规的web渗透类型靶机,且操作系统类型也不太常规,是一个值得练习的靶机。靶机考察了NFS网络共享文件相关的内容,同时也考察了暴力破解密码的知识,使用john进行密码暴力破解之前先要用对应的工具生成hash。最后的提权操作也很有代表性,提权的思路和原理相当于常规linux靶机的sudo提权。最后总结以下渗透打靶过程:

1.主机发现和端口扫描:常规思路,发现ssh,rpc,nfs,考虑从nfs入手。

2.NFS渗透,发现文件backup.7z,看起来像备份文件,解压发现需要密码。

3.压缩包的密码破解:先用7z2john生成哈希,再用字典rockyou.txt爆破,成功得到密码。解压后发现八张hello kitty的图片和疑似ssh登录的公钥和私钥。

4.ssh私钥登录:尝试使用私钥登录,发现私钥被加密,需要passphrase,用ssh2john生成hash,再用字典rockyou.txt爆破,成功得到passphrase,ssh登录了user账户。

5.less+vi提权:进入user账户后一番搜索无果,尝试寻找s位的文件,发现doas,相当于sudo指令,查找doas指令的配置,发现可以用less免密操作authlog文件,在less中启动vi输入系统命令即可提权。

 读者一定要理解提权的原理与逻辑。核心就是借用了less可以免密以root运行的权限,在less中启动了编辑器vi,使得vi也具有root权限,而vi可以执行系统命令,启动shell,实现提权。


这里再来个插叙(来自红队笔记大佬的描述),难道压缩包中的8张HelloKitty图片就完全没用吗?

回到最开始直接解压backup.7z的报错:

 如果你单纯看这个报错,猜测一个密码,你会猜什么呢?8张图片,每张图片都是依次是hello(n),那么这是不是提示存在一个密码,就是12345678呢?如果早一点想到这里,或许就免了对passphrase的破解过程。不过这个脑洞还是略大了一些,我感觉哪怕存在应该也是仅限靶机~。

 插叙结束!


 到此这个靶机就讲解完毕了。打完这个靶机感觉还是挺有收获的。靶机不难,总结不易,也有很多自己的思考,希望读者能够点赞关注多多支持!学渗透还是要实操呀。如果读者有什么打靶的问题也欢迎评论区留言指出,我一定知无不言! 

 

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

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

相关文章

基于Caffe的静默活体检测识别分析系统

周末的时候看到一个好玩的项目就想着实际拿来使用一下,这个项目主要是做的是开源的跟人脸活体检测相关的内容,这里主要采用的是静默活体检测的方式。 人脸静默活体检测是一种用于验证人脸是真实、活体的技术,而不需要进行任何口头指令或特定…

13.7 CentOS 7 环境下大量创建帐号的方法

13.7.1 一些帐号相关的检查工具 pwck pwck 这个指令在检查 /etc/passwd 这个帐号配置文件内的信息,与实际的主文件夹是否存在等信息, 还可以比对 /etc/passwd /etc/shadow 的信息是否一致,另外,如果 /etc/passwd 内的数据字段错…

Linux 给用户 赋某个文件夹操作的权限(实现三权分立)

Linux 给用户 赋某个文件夹操作的权限 这里用的ubuntu16.04 一、配置网站管理员 linux文件或目录的权限分为,读、写、可执行三种权限。文件访问的用户类别分为,文件创建者、与文件创建者同组的用户、其他用户三类。 添加用户 useradd -d /var/www/htm…

解密低价正规渠道的来源:影视会员肯德基点餐直充api接口

话费充值 接口已经整合移动、联通、电信三网话费充值渠道。话费可以说是全民所需,对于平台引流,增强平台日活跃度可以提供不小的帮助。 肯德基在线点餐 接口整合了各大城市的肯德基门店,支持门店选择,在线点餐 提前点餐领取&a…

linux系统编程重点复习--线程同步

目录 复习目标: 1 互斥锁 1.1互斥锁的使用步骤 1.2 练习 1.3 死锁 2 读写锁 3 条件变量 4 信号量 复习目标: 熟练掌握互斥量的使用说出什么叫死锁以及解决方案熟练掌握读写锁的使用熟练掌握条件变量的使用理解条件变量实现的生产消费者模型理解…

Java基础篇_1.2——保留关键字、基本数据类型、基本数据类型之间的转换

​​​​​​​目录 一、保留关键字 二、Java的基本数据类型 三、引用数据类型 四、基本数据类型间的转换 隐含强制类型转换 一、保留关键字 Java该语言是用 Unicode 字符集编写的。 Java关键字是预先定义的具有特别意义的标识符,也被称为Java保留字&#xff0…

在k8s集群内搭建Prometheus监控平台

基本架构 Prometheus由SoundCloud发布,是一套由go语言开发的开源的监控&报警&时间序列数据库的组合。 Prometheus的基本原理是通过HTTP协议周期性抓取被监控组件的状态,任意组件只要提供对应的HTTP接口就可以接入监控。不需要任何SDK或者其他的…

YOLOv8教程系列:三、使用YOLOv8模型进行自定义数据集半自动标注

YOLOv8半自动标注 目标检测半自动标注的优点包括: 1.提高标注效率:算法能够自动标注部分数据,减少了人工标注的工作量,节省时间和资源。 2.降低成本:自动标注可以减少人工标注的成本,特别是对于大规模数据…

如何在线制作闪图?手把手教你快速生成GIF闪图

网上那种卟玲卟领的闪动GIF图片效果非常的炫丽,这种GIF闪图是怎么制作的呢?很简单,只需要使用专业的gif制作(https://www.gif.cn/)工具-GIF中文网,上传多张颜色、大小不同,内容相同的jpg、png格…

ORB-SLAM3数据集配置与评价

在ORB-SLAM3运行EuRoC和TUM-VI数据集并作以评价。EuRoC利用微型飞行器(MAV ) 收集的视觉惯性数据集,TUM-VI 是由实验人员手持视觉-惯性传感器收集的数据集。这两个是在视觉SLAM中比较常用的公开数据集,所以测试并加以记录。 文章目录 一、EuRoC数据集测…

音频转文字软件免费版让你快速完成转换

音频转文字技术是一种将音频文件转换为文本形式的技术,它可以帮助人们更方便地获取和处理音频信息。在实际生活和工作中,我们可能会遇到需要将音频转换为文字的情况,比如听取会议录音、收听讲座、学习外语等等。那么,你知道音频转…

Tinkercad 建模21个小技巧

21个Tinkercad 建模小技巧 原文 参考文章:在 Tinkercad 中加快设计的 22 个技巧 一起来了解一下21个Tinkercad 3D建模小技巧,让你快人一步。 技巧1 Copy & Paste 文件,整合设计 想把文件A里面的模型拷贝到文件B里面? 很容…

【Linux命令200例】mren一个用于重命名文件或目录的命令行工具

🏆作者简介,黑夜开发者,全栈领域新星创作者✌,2023年6月csdn上海赛道top4。 🏆本文已收录于专栏:Linux命令大全。 🏆本专栏我们会通过具体的系统的命令讲解加上鲜活的实操案例对各个命令进行深入…

msvcr100.dll丢失怎样修复?最新的三个修复方法可解决

最近我遇到了一个问题,电脑提示我缺少了msvcr100.dll文件,导致某些程序无法正常运行。这让我意识到了计算机中的一些系统文件的重要性,也让我体会到了修复这类问题的必要性。msvcr100.dll文件是Windows系统中重要的文件,这是一个动…

docker容器的安装(windows、linux本地安装和在线安装)

目录 一、Docker发行版本: 1、Windows安装Docker(作为了解) 2、Linux安装Docker 二、安装前准备: 三、默认的yum安装 四、安装docker-ce 五、阿里云镜像加速器 Docker支持在主流的操作系统平台上使用,包括Windo…

飞致云开源社区月度动态报告(2023年7月)

自2023年6月起,中国领先的开源软件公司FIT2CLOUD飞致云将以月度为单位发布《飞致云开源社区月度动态报告》,旨在向广大社区用户同步飞致云旗下系列开源软件的发展情况,以及当月主要的产品新版本发布、社区运营成果等相关信息。 飞致云开源大…

el-table点击表格某一行添加到URL参数,访问带参URL加载表格内容并滚动到选中行位置 [Vue3] [Element-plus 2.3]

写在最前 需求:有个表格列出了一些行数据,每个行数据点击后会加载出对应的详细数据,想要在点击了某一行后,能够将该点击反应到URL中,这样我复制这个URL发给其他人,他们打开时也能看到同样的行数据。 url会根…

app自动化测试之Appium问题分析及定位

使用 Appium 进行测试时,会产生大量日志,一旦运行过程中遇到报错,可以通过 Appium 服务端的日志以及客户端的日志分析排查问题。 Appium Server日志-开启服务 通过命令行的方式启动 Appium Server,下面来分析一下启动日志&#…

C# 模拟 Unity3d 协程

一、概述 由于 Unity3d 在开发游戏时使用的是单线程,为了给开发者提供异步相关的操作,于是开发者在 Unity3d 中加入了协程的概念,协程在 Unity3d 中用的非常多,也有些大佬觉得这玩意儿不好用,还不如用一些插件。 在 …

若依vue -【 44 ~ 53 】

44 服务监控讲解 1 需求 显示CPU、内存、服务器信息、Java虚拟机信息、磁盘状态的信息 2 前端 RuoYi-Vue\ruoyi-ui\src\views\monitor\server\index.vue <script> import { getServer } from "/api/monitor/server";export default {name: "Server&quo…