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

目录

写在开头

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

第二步: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.mzph.cn/news/16306.shtml

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

相关文章

黑马头条---day1

手机端查看 docker 容器,镜像操作命令 1、docker删除所有镜像命令 删除所有镜像的命令是Docker中一个非常常见的操作。下面是具体的实现步骤和命令示例: $ docker stop $(docker ps -aq) 停止所有正在运行的容器。 $ docker rm $(docker ps -aq) 删…

selenium的java方式打开IE浏览器

1.下载软件Selenium Driver 官方下载地址: ​ https://www.selenium.dev/downloads/解压selenium-java-3.141.59.zip文件到java项目 seleniumDemo,并降解压的文件放入依赖中(1)双击项目的src打开项目结构,或右键-打开…

python将多张图片拼成一张矩阵图,合成一张大图

用Python实现将多张图片排列成n*m的图像矩阵图 目录 引言环境准备代码实现效果演示总结 引言 在图像处理和图像展示的应用中,将多张图片排列成一个图像矩阵图是一个常见的需求。本博客介绍如何使用Python实现将12张图片排列成n*m的图像矩阵图。 环境准备 为了实…

操作系统专栏2进程管理from 小林coding

进程管理 基本概念进程控制进程上下文切换 线程进程和线程的比较进程通信管道消息队列共享内存信号量信号socket 基本概念 进程:一个具有一定独立功能的程序关于某个数据集合的一次运行活动。它是操作系统动态执行的基本单元.并行和并发:状态: 其中挂起是指没有给程序分配实际…

学习中遇到的好博客

c日志工具之——log4cpp ECU唤醒的本质就是给ECU供电。 小文件:零拷贝技术 传输大文件:异步 IO 、直接 IO:如何高效实现文件传输:小文件采用零拷贝、大文件采用异步io直接io (123条消息) Linux网络编程 | 彻底搞懂…

机器学习01 -Hello World(对鸢尾花(Iris Flower)进行训练及测试)

什么是机器学习? 机器学习是一种人工智能(AI)的子领域,它探索和开发计算机系统,使其能够从数据中学习和改进,并在没有明确编程指令的情况下做出决策或完成任务。 传统的程序需要程序员明确编写指令来告诉…

QT 视图(view)模型(model)汇总

QStringListModel和QListView UI界面 widget头文件 #ifndef WIDGET_H #define WIDGET_H#include <QStringList> #include <QStringListModel> #include <QWidget>QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACEclass Widget : publi…

使用AOP切面对返回的数据进行脱敏的问题

1.注解类 import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target;/*** Author: xiaoxin* Date: 2023/7/21 17:15*/ Retention(RetentionPolicy.RUNTIME) Targe…

python文件处理方式

python文件处理方式 file open(D:\pythonText.txt, r, encodingUTF-8) print(file) # <_io.TextIOWrapper nameD:\\pythonText.txt moder encodingUTF-8> print(type(file)) # <class _io.TextIOWrapper>读取文件 file open(D:\pythonText.txt, r, encodingU…

3d软件动物生活习性仿真互动教学有哪些优势

软体动物是一类广泛存在于海洋和淡水环境中的生物&#xff0c;其独特的形态和生活习性给学生带来了新奇和有趣的学习主题&#xff0c;为了方便相关专业学科日常授课教学&#xff0c;web3d开发公司深圳华锐视点基于真实的软体动物&#xff0c;制作软体动物3D虚拟展示系统&#x…

【visual studio2019】如何打开即时窗口

在 Visual Studio2019 中打开即时窗口&#xff0c;有两种方法&#xff1a; 1、可以通过“调试”菜单&#xff0c;然后选择“窗口”下的“即时窗口”选项 2、直接使用快捷键“Ctrl Alt I” 此时即时窗口将显示在 Visual Studio2019 的底部。在即时窗口中&#xff0c;可以执…

Java读取及生成pb文件并转换jsonString

Java读取及生成pb文件并转换jsonString 1. 效果图2. 原理2.1 Protocol Buffers是什么2.2 支持的语言2.3 根据.proto生成.java2.4 初始化及构建pb&#xff0c;读取&#xff0c;转jsonString 3. 源码3.1 address.proto3.2 PbParseUtil.java 参考 读取pb及生成pb文件pb文件转换jso…

stable diffusion

一&#xff1a;安装。 stable diffusion 安装和使用全教程 - 知乎 Stable Diffusion安装 - 知乎 环境安装&#xff1a; 1&#xff1a;python 3.10安装。 Download Python | Python.org 切记要安装3.10版本&#xff0c;因为Stable diffusion是用3.10版本编写的&#xff0c;所…

【C++】 哈希

一、哈希的概念及其性质 1.哈希概念 在顺序结构以及平衡树中&#xff0c;元素关键码与其存储位置之间没有对应的关系&#xff0c;因此在查找一个元素时&#xff0c;必须要经过关键码的多次比较。比如顺序表需要从第一个元素依次向后进行查找&#xff0c;顺序查找时间复杂度为…

VS Code环境配置问题

VS Code 环境配置问题 文章目录 VS Code 环境配置问题配置 C问题解决不乱码只显示结果避免闪退&#xff0c;中文乱码 配置 Java下载 JDKJDK 环境配置安装插件 配置 C 跟着官网教程&#xff08;英文版&#xff09;和其他博客配置了一遍&#xff0c;却遇到了很多小问题&#xff…

MyBatis源码剖析之延迟加载源码细节

文章目录 什么是延迟加载&#xff1f;实现局部延迟加载全局延迟加载 延迟加载原理实现延迟加载原理&#xff08;源码剖析)Setting 配置加载&#xff1a;延迟加载代理对象创建注意事项 什么是延迟加载&#xff1f; 在开发过程中很多时候我们并不需要总是在加载⽤户信息时就⼀定…

Android 开发代码规范

一. AndroidStudio开发工具规范 使用最新的稳定版本.统一文件的编码格式为utf-8. 清除每个类里面的无效的import导包.代码样式统一,比如&#xff0c;tab缩进4个空格&#xff0c;或者 tab size等如果没有特殊情况使用默认的配置即可。每行字数每行字符数不得超过 160 字符&…

【100天精通python】Day20:文件及目录操作_os模块和os.psth模块,文件权限修改

目录 专栏导读 1 文件的目录操作 os模块的一些操作目录函数​编辑 os.path 模块的操作目录函数 2 相对路径和绝对路径 3 路径拼接 4 判断目录是否存在 5 创建目录、删除目录、遍历目录 专栏导读 专栏订阅地址&#xff1a;https://blog.csdn.net/qq_35831906/category_12…

Mysql-MVCC 并发版本控制

参考链接&#xff1a;一文读懂MVCC实现原理_Nicolos_Z的博客-CSDN博客 1.总述&#xff1a; MVCC 主要是InnoDB解决数据库事务读写&#xff0c;导致的脏读、重复读问题的处理方法。通过快照读的方式&#xff0c;提高数据库并发查询的能力。 2.MVCC的实现 实现MVCC主要用到了…

在OK3588板卡上部署模型实现人工智能OCR应用

一、主机模型转换 我们依旧采用FastDeploy来部署应用深度学习模型到OK3588板卡上 进入主机Ubuntu的虚拟环境 conda activate ok3588 安装rknn-toolkit2&#xff08;该工具不能在OK3588板卡上完成模型转换&#xff09; git clone https://github.com/rockchip-linux/rknn-to…