1441 字
7 分钟
vulnhub靶机-PowerGrid(认证爆破+pgp解密+docker提权)
vulnhub靶机-PowerGrid(认证爆破+pgp解密+docker提权)
声明
- 本文为个人跟随b站up主红队笔记学习vulnhub的PowerGrid靶机的复现通关记录,旨在分享靶机和记录学习心得体会,讲解若有谬误之处欢迎指正。
- 该靶机下载地址为’https://vulnhub.com/entry/powergrid-101,485/‘
前期渗透记录
- 在vmware部署靶机并开机后,打开kali对靶机进行信息收集,找到80,143,993端口开放,观察下详细扫描和漏扫结果,143和993是imap和imaps服务端口(注意:该扫描方式更适合渗透测试使用,如红队则需定制参数达成更隐蔽的扫描方式)。

- 观察web主页是一个黑客组织劫持欧洲电网的勒索页面,给出了三小时时限(由于是下载的靶机可以通过重新导入虚拟机来解决时限问题),之后目录爆破找到/zmail路径,访问该路径需要用户名密码认证。

- 制作用户名密码字典,收集页面中的词语(也可用上篇文章的cewl工具等来收集),手工列出一些词。

- hashcat内置一些字典生成规则,连接到当前目录,之后用
--stdout参数,配合规则生成字典,不实际破解哈希。

- 由于字典破解概率并不足够高可以尝试基于rockyou这种大字典筛选部分补充。

- 用hydra对验证进行爆破,对于-e参数指定,n表示尝试空密码,s表示尝试与用户名相同的密码,r表示尝试用户名反转后的密码,
-w 1表示低负载,破解出一组凭证——p48:electrico。
- 用凭证成功登入该页面。

- 提取认证信息,尝试对zmail目录爆破,来获取泄露信息比如版本信息,如下图重新指定gobuster进行爆破/zmail下目录。

- 在爆破出的/CHANGELOG获得了版本信息,通过searchsploit查找该版本漏洞,并下载漏洞介绍文件。

- 简单用ai翻译并总结一下,并确保其利用方法格式未被ai总结过程中修改。

- 继续尝试用刚才的用户名密码,登进来有邮件,自动翻译了下。

- 根据利用方式,在subject栏内可以插入恶意php代码,通过代理抓包修改&_from字段为指定格式并url编码发送后可以成功保存为php文件。

- 实际操作中发现单层对特殊字符url编码可能遭到拦截,进行二次编码再次访问网站根目录的php文件,得到了反弹shell。(记得将kali提前打开监听)

拿下初始立足点
- 在探测中发现了p48拥有/bin/bash环境,于是尝试一下用密码切换用户,果然可以切换成功。

- 在用户目录下发现gpg文件,这是使用GPG(GNU Privacy Guard)加密后的文件,是通过非对称加密技术生成的加密文件。

- 对于此,kali中备有gpg工具,
gpg --import xx.gpg可用于导入GPG密钥到本地密钥环中,下图需要的密码,可以猜想是p48用户的密码,输入后验证成功。

- 用刚刚导入的私钥解密该文件并输出解密内容。(这个文件由自己创建并导入收到邮件内的加密内容)

- 我们在探测中发现了运行的docker中的容器,并用ping来大致探测存活性,目前容易发现的只有172.17.0.1和172.17.0.2存活。

- 将前面解密出的内容(SSH的私钥)保存为文件,由于交互性不好可以参考如下方式输入并粘贴,末尾输入EOF结束(这里有可能需要敲一个回车再输入EOF),检查私钥文件格式是否正确,如有问题重新修改至格式正确。

- 通过私钥文件连接容器,成功连接172.17.0.2。

容器内提权过程
- 在容器内探测,通过
sudo -l发现特权,去GTFOBINS查找提权方式,并直接复制利用,拿到root在容器内权限。

- 通过ssh使用root登回主机,正式获得root权限。

- 根据提示,最后一步将计时相关的这个txt文件删除掉算结束,该文件被加上不可改变属性,查看验证确实如此,用给出的命令清除掉后删除,该靶机正式结束(中间有四个flag也可以收集,体验更为完整)。

其它补充与收获总结
- 切换p48用户的时候,su命令需要一个真正的交互式终端(TTY),而通过webshell执行命令时,其不是完整TTY,只是一个管道连接,所以应当提前通过如
python -c 'import pty;pty.spawn("/bin/bash")'来提高shell的交互性后再切换,其它受影响的还有sudo、ssh或者nano、vi、vim一些需要交互的命令等。 - 文件不可变属性:使用
chattr +i 文件名可将文件设置为不可变,原理是修改文件的扩展属性,使内核禁止对其进行修改操作,常用于防止误删或篡改等操作,相关命令为lsattr 文件名,可查看文件不可变属性。 - PGP和GPG的区别及使用:PGP和GPG都用于加密和签名,核心区别在于一个是商业软件,一个是开源实现,GPG是PGP的开源升级版本,支持更多加密算法且完全免费。对于gpg工具,文中提到涉及gpg密钥管理(也包括内容的加密解密),其它功能如生成密钥、签名等具体使用方式可参考’https://blog.csdn.net/willingtolove/article/details/122362705’
vulnhub靶机-PowerGrid(认证爆破+pgp解密+docker提权)
https://www.dxowo8.top/posts/post-31/31/ 部分信息可能已经过时







